tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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