NavigationUtils.cpp (2434B)
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* vim: set ts=2 sts=2 et sw=2 tw=80: */ 3 /* This Source Code Form is subject to the terms of the Mozilla Public 4 * License, v. 2.0. If a copy of the MPL was not distributed with this 5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 6 7 #include "mozilla/dom/NavigationUtils.h" 8 9 #include "mozilla/dom/NavigationBinding.h" 10 #include "nsDocShellLoadTypes.h" 11 12 namespace mozilla::dom { 13 14 /* static */ Maybe<NavigationHistoryBehavior> 15 NavigationUtils::NavigationHistoryBehavior(NavigationType aNavigationType) { 16 switch (aNavigationType) { 17 case NavigationType::Push: 18 return Some(NavigationHistoryBehavior::Push); 19 case NavigationType::Replace: 20 return Some(NavigationHistoryBehavior::Replace); 21 default: 22 break; 23 } 24 return Nothing(); 25 } 26 27 /*static*/ Maybe<NavigationType> 28 NavigationUtils::NavigationTypeFromNavigationHistoryBehavior( 29 enum NavigationHistoryBehavior aBehavior) { 30 switch (aBehavior) { 31 case NavigationHistoryBehavior::Push: 32 return Some(NavigationType::Push); 33 case NavigationHistoryBehavior::Replace: 34 return Some(NavigationType::Replace); 35 default: 36 break; 37 } 38 return Nothing(); 39 } 40 41 /* static */ 42 Maybe<NavigationType> NavigationUtils::NavigationTypeFromLoadType( 43 uint32_t aLoadType) { 44 MOZ_ASSERT(IsValidLoadType(aLoadType)); 45 46 switch (aLoadType) { 47 case LOAD_HISTORY: 48 return Some(NavigationType::Traverse); 49 50 case LOAD_NORMAL: 51 case LOAD_NORMAL_BYPASS_CACHE: 52 case LOAD_NORMAL_BYPASS_PROXY: 53 case LOAD_NORMAL_BYPASS_PROXY_AND_CACHE: 54 case LOAD_PUSHSTATE: 55 case LOAD_LINK: 56 case LOAD_STOP_CONTENT: 57 case LOAD_ERROR_PAGE: 58 case LOAD_BYPASS_HISTORY: 59 return Some(NavigationType::Push); 60 61 case LOAD_RELOAD_NORMAL: 62 case LOAD_RELOAD_CHARSET_CHANGE: 63 case LOAD_RELOAD_CHARSET_CHANGE_BYPASS_PROXY_AND_CACHE: 64 case LOAD_RELOAD_CHARSET_CHANGE_BYPASS_CACHE: 65 case LOAD_RELOAD_BYPASS_CACHE: 66 case LOAD_RELOAD_BYPASS_PROXY: 67 case LOAD_RELOAD_BYPASS_PROXY_AND_CACHE: 68 case LOAD_REFRESH: 69 return Some(NavigationType::Reload); 70 71 case LOAD_STOP_CONTENT_AND_REPLACE: 72 case LOAD_NORMAL_REPLACE: 73 case LOAD_REFRESH_REPLACE: 74 case LOAD_REPLACE_BYPASS_CACHE: 75 return Some(NavigationType::Replace); 76 77 default: 78 // This is an invalid load type. 79 return {}; 80 } 81 } 82 83 } // namespace mozilla::dom