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