docshell/base/nsDocShellLoadTypes.h

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/docshell/base/nsDocShellLoadTypes.h	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,106 @@
     1.4 +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
     1.5 + * vim: set ts=4 sw=4 et tw=80:
     1.6 + *
     1.7 + * This Source Code Form is subject to the terms of the Mozilla Public
     1.8 + * License, v. 2.0. If a copy of the MPL was not distributed with this
     1.9 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
    1.10 +
    1.11 +#ifndef nsDocShellLoadTypes_h_
    1.12 +#define nsDocShellLoadTypes_h_
    1.13 +
    1.14 +#ifdef MOZILLA_INTERNAL_API
    1.15 +
    1.16 +#include "nsIDocShell.h"
    1.17 +#include "nsIWebNavigation.h"
    1.18 +
    1.19 +/**
    1.20 + * Load flag for error pages. This uses one of the reserved flag
    1.21 + * values from nsIWebNavigation.
    1.22 + */
    1.23 +#define LOAD_FLAGS_ERROR_PAGE 0x0001U
    1.24 +
    1.25 +#define MAKE_LOAD_TYPE(type, flags) ((type) | ((flags) << 16))
    1.26 +#define LOAD_TYPE_HAS_FLAGS(type, flags) ((type) & ((flags) << 16))
    1.27 +
    1.28 +/**
    1.29 + * These are flags that confuse ConvertLoadTypeToDocShellLoadInfo and should
    1.30 + * not be passed to MAKE_LOAD_TYPE.  In particular this includes all flags
    1.31 + * above 0xffff (e.g. LOAD_FLAGS_BYPASS_CLASSIFIER), since MAKE_LOAD_TYPE would
    1.32 + * just shift them out anyway.
    1.33 + */
    1.34 +#define EXTRA_LOAD_FLAGS (LOAD_FLAGS_FIRST_LOAD              | \
    1.35 +                          LOAD_FLAGS_ALLOW_POPUPS            | \
    1.36 +                          0xffff0000)
    1.37 +
    1.38 +
    1.39 +
    1.40 +/* load types are legal combinations of load commands and flags 
    1.41 + *  
    1.42 + * NOTE:
    1.43 + *  Remember to update the IsValidLoadType function below if you change this
    1.44 + *  enum to ensure bad flag combinations will be rejected.
    1.45 + */
    1.46 +enum LoadType {
    1.47 +    LOAD_NORMAL = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_NONE),
    1.48 +    LOAD_NORMAL_REPLACE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_REPLACE_HISTORY),
    1.49 +    LOAD_NORMAL_EXTERNAL = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_FROM_EXTERNAL),
    1.50 +    LOAD_HISTORY = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_HISTORY, nsIWebNavigation::LOAD_FLAGS_NONE),
    1.51 +    LOAD_NORMAL_BYPASS_CACHE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_BYPASS_CACHE),
    1.52 +    LOAD_NORMAL_BYPASS_PROXY = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_BYPASS_PROXY),
    1.53 +    LOAD_NORMAL_BYPASS_PROXY_AND_CACHE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_BYPASS_CACHE | nsIWebNavigation::LOAD_FLAGS_BYPASS_PROXY),
    1.54 +    LOAD_NORMAL_ALLOW_MIXED_CONTENT = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_ALLOW_MIXED_CONTENT | nsIWebNavigation::LOAD_FLAGS_BYPASS_CACHE),
    1.55 +    LOAD_RELOAD_NORMAL = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_RELOAD, nsIWebNavigation::LOAD_FLAGS_NONE),
    1.56 +    LOAD_RELOAD_BYPASS_CACHE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_RELOAD, nsIWebNavigation::LOAD_FLAGS_BYPASS_CACHE),
    1.57 +    LOAD_RELOAD_BYPASS_PROXY = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_RELOAD, nsIWebNavigation::LOAD_FLAGS_BYPASS_PROXY),
    1.58 +    LOAD_RELOAD_ALLOW_MIXED_CONTENT = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_RELOAD, nsIWebNavigation::LOAD_FLAGS_ALLOW_MIXED_CONTENT | nsIWebNavigation::LOAD_FLAGS_BYPASS_CACHE),
    1.59 +    LOAD_RELOAD_BYPASS_PROXY_AND_CACHE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_RELOAD, nsIWebNavigation::LOAD_FLAGS_BYPASS_CACHE | nsIWebNavigation::LOAD_FLAGS_BYPASS_PROXY),
    1.60 +    LOAD_LINK = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_IS_LINK),
    1.61 +    LOAD_REFRESH = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_IS_REFRESH),
    1.62 +    LOAD_RELOAD_CHARSET_CHANGE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_RELOAD, nsIWebNavigation::LOAD_FLAGS_CHARSET_CHANGE),
    1.63 +    LOAD_BYPASS_HISTORY = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_BYPASS_HISTORY),
    1.64 +    LOAD_STOP_CONTENT = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_STOP_CONTENT),
    1.65 +    LOAD_STOP_CONTENT_AND_REPLACE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_STOP_CONTENT | nsIWebNavigation::LOAD_FLAGS_REPLACE_HISTORY),
    1.66 +    LOAD_PUSHSTATE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_PUSHSTATE, nsIWebNavigation::LOAD_FLAGS_NONE),
    1.67 +    LOAD_REPLACE_BYPASS_CACHE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_REPLACE_HISTORY | nsIWebNavigation::LOAD_FLAGS_BYPASS_CACHE),
    1.68 +    /**
    1.69 +     * Load type for an error page. These loads are never triggered by users of
    1.70 +     * Docshell. Instead, Docshell triggers the load itself when a
    1.71 +     * consumer-triggered load failed.
    1.72 +     */
    1.73 +    LOAD_ERROR_PAGE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, LOAD_FLAGS_ERROR_PAGE)
    1.74 +
    1.75 +    // NOTE: Adding a new value? Remember to update IsValidLoadType!
    1.76 +};
    1.77 +static inline bool IsValidLoadType(uint32_t aLoadType)
    1.78 +{
    1.79 +    switch (aLoadType)
    1.80 +    {
    1.81 +    case LOAD_NORMAL:
    1.82 +    case LOAD_NORMAL_REPLACE:
    1.83 +    case LOAD_NORMAL_EXTERNAL:
    1.84 +    case LOAD_NORMAL_BYPASS_CACHE:
    1.85 +    case LOAD_NORMAL_BYPASS_PROXY:
    1.86 +    case LOAD_NORMAL_BYPASS_PROXY_AND_CACHE:
    1.87 +    case LOAD_NORMAL_ALLOW_MIXED_CONTENT:
    1.88 +    case LOAD_HISTORY:
    1.89 +    case LOAD_RELOAD_NORMAL:
    1.90 +    case LOAD_RELOAD_BYPASS_CACHE:
    1.91 +    case LOAD_RELOAD_BYPASS_PROXY:
    1.92 +    case LOAD_RELOAD_BYPASS_PROXY_AND_CACHE:
    1.93 +    case LOAD_RELOAD_ALLOW_MIXED_CONTENT:
    1.94 +    case LOAD_LINK:
    1.95 +    case LOAD_REFRESH:
    1.96 +    case LOAD_RELOAD_CHARSET_CHANGE:
    1.97 +    case LOAD_BYPASS_HISTORY:
    1.98 +    case LOAD_STOP_CONTENT:
    1.99 +    case LOAD_STOP_CONTENT_AND_REPLACE:
   1.100 +    case LOAD_PUSHSTATE:
   1.101 +    case LOAD_REPLACE_BYPASS_CACHE:
   1.102 +    case LOAD_ERROR_PAGE:
   1.103 +        return true;
   1.104 +    }
   1.105 +    return false;
   1.106 +}
   1.107 +
   1.108 +#endif // MOZILLA_INTERNAL_API
   1.109 +#endif 

mercurial