|
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 |