docshell/base/nsDocShellLoadTypes.h

branch
TOR_BUG_9701
changeset 15
b8a032363ba2
equal deleted inserted replaced
-1:000000000000 0:1ab2840f37ca
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2 * vim: set ts=4 sw=4 et tw=80:
3 *
4 * This Source Code Form is subject to the terms of the Mozilla Public
5 * License, v. 2.0. If a copy of the MPL was not distributed with this
6 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
7
8 #ifndef nsDocShellLoadTypes_h_
9 #define nsDocShellLoadTypes_h_
10
11 #ifdef MOZILLA_INTERNAL_API
12
13 #include "nsIDocShell.h"
14 #include "nsIWebNavigation.h"
15
16 /**
17 * Load flag for error pages. This uses one of the reserved flag
18 * values from nsIWebNavigation.
19 */
20 #define LOAD_FLAGS_ERROR_PAGE 0x0001U
21
22 #define MAKE_LOAD_TYPE(type, flags) ((type) | ((flags) << 16))
23 #define LOAD_TYPE_HAS_FLAGS(type, flags) ((type) & ((flags) << 16))
24
25 /**
26 * These are flags that confuse ConvertLoadTypeToDocShellLoadInfo and should
27 * not be passed to MAKE_LOAD_TYPE. In particular this includes all flags
28 * above 0xffff (e.g. LOAD_FLAGS_BYPASS_CLASSIFIER), since MAKE_LOAD_TYPE would
29 * just shift them out anyway.
30 */
31 #define EXTRA_LOAD_FLAGS (LOAD_FLAGS_FIRST_LOAD | \
32 LOAD_FLAGS_ALLOW_POPUPS | \
33 0xffff0000)
34
35
36
37 /* load types are legal combinations of load commands and flags
38 *
39 * NOTE:
40 * Remember to update the IsValidLoadType function below if you change this
41 * enum to ensure bad flag combinations will be rejected.
42 */
43 enum LoadType {
44 LOAD_NORMAL = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_NONE),
45 LOAD_NORMAL_REPLACE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_REPLACE_HISTORY),
46 LOAD_NORMAL_EXTERNAL = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_FROM_EXTERNAL),
47 LOAD_HISTORY = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_HISTORY, nsIWebNavigation::LOAD_FLAGS_NONE),
48 LOAD_NORMAL_BYPASS_CACHE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_BYPASS_CACHE),
49 LOAD_NORMAL_BYPASS_PROXY = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_BYPASS_PROXY),
50 LOAD_NORMAL_BYPASS_PROXY_AND_CACHE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_BYPASS_CACHE | nsIWebNavigation::LOAD_FLAGS_BYPASS_PROXY),
51 LOAD_NORMAL_ALLOW_MIXED_CONTENT = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_ALLOW_MIXED_CONTENT | nsIWebNavigation::LOAD_FLAGS_BYPASS_CACHE),
52 LOAD_RELOAD_NORMAL = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_RELOAD, nsIWebNavigation::LOAD_FLAGS_NONE),
53 LOAD_RELOAD_BYPASS_CACHE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_RELOAD, nsIWebNavigation::LOAD_FLAGS_BYPASS_CACHE),
54 LOAD_RELOAD_BYPASS_PROXY = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_RELOAD, nsIWebNavigation::LOAD_FLAGS_BYPASS_PROXY),
55 LOAD_RELOAD_ALLOW_MIXED_CONTENT = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_RELOAD, nsIWebNavigation::LOAD_FLAGS_ALLOW_MIXED_CONTENT | nsIWebNavigation::LOAD_FLAGS_BYPASS_CACHE),
56 LOAD_RELOAD_BYPASS_PROXY_AND_CACHE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_RELOAD, nsIWebNavigation::LOAD_FLAGS_BYPASS_CACHE | nsIWebNavigation::LOAD_FLAGS_BYPASS_PROXY),
57 LOAD_LINK = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_IS_LINK),
58 LOAD_REFRESH = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_IS_REFRESH),
59 LOAD_RELOAD_CHARSET_CHANGE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_RELOAD, nsIWebNavigation::LOAD_FLAGS_CHARSET_CHANGE),
60 LOAD_BYPASS_HISTORY = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_BYPASS_HISTORY),
61 LOAD_STOP_CONTENT = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_STOP_CONTENT),
62 LOAD_STOP_CONTENT_AND_REPLACE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_STOP_CONTENT | nsIWebNavigation::LOAD_FLAGS_REPLACE_HISTORY),
63 LOAD_PUSHSTATE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_PUSHSTATE, nsIWebNavigation::LOAD_FLAGS_NONE),
64 LOAD_REPLACE_BYPASS_CACHE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_REPLACE_HISTORY | nsIWebNavigation::LOAD_FLAGS_BYPASS_CACHE),
65 /**
66 * Load type for an error page. These loads are never triggered by users of
67 * Docshell. Instead, Docshell triggers the load itself when a
68 * consumer-triggered load failed.
69 */
70 LOAD_ERROR_PAGE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, LOAD_FLAGS_ERROR_PAGE)
71
72 // NOTE: Adding a new value? Remember to update IsValidLoadType!
73 };
74 static inline bool IsValidLoadType(uint32_t aLoadType)
75 {
76 switch (aLoadType)
77 {
78 case LOAD_NORMAL:
79 case LOAD_NORMAL_REPLACE:
80 case LOAD_NORMAL_EXTERNAL:
81 case LOAD_NORMAL_BYPASS_CACHE:
82 case LOAD_NORMAL_BYPASS_PROXY:
83 case LOAD_NORMAL_BYPASS_PROXY_AND_CACHE:
84 case LOAD_NORMAL_ALLOW_MIXED_CONTENT:
85 case LOAD_HISTORY:
86 case LOAD_RELOAD_NORMAL:
87 case LOAD_RELOAD_BYPASS_CACHE:
88 case LOAD_RELOAD_BYPASS_PROXY:
89 case LOAD_RELOAD_BYPASS_PROXY_AND_CACHE:
90 case LOAD_RELOAD_ALLOW_MIXED_CONTENT:
91 case LOAD_LINK:
92 case LOAD_REFRESH:
93 case LOAD_RELOAD_CHARSET_CHANGE:
94 case LOAD_BYPASS_HISTORY:
95 case LOAD_STOP_CONTENT:
96 case LOAD_STOP_CONTENT_AND_REPLACE:
97 case LOAD_PUSHSTATE:
98 case LOAD_REPLACE_BYPASS_CACHE:
99 case LOAD_ERROR_PAGE:
100 return true;
101 }
102 return false;
103 }
104
105 #endif // MOZILLA_INTERNAL_API
106 #endif

mercurial