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 : * ***** BEGIN LICENSE BLOCK *****
5 : * Version: MPL 1.1/GPL 2.0/LGPL 2.1
6 : *
7 : * The contents of this file are subject to the Mozilla Public License Version
8 : * 1.1 (the "License"); you may not use this file except in compliance with
9 : * the License. You may obtain a copy of the License at
10 : * http://www.mozilla.org/MPL/
11 : *
12 : * Software distributed under the License is distributed on an "AS IS" basis,
13 : * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
14 : * for the specific language governing rights and limitations under the
15 : * License.
16 : *
17 : * The Original Code is the Mozilla browser.
18 : *
19 : * The Initial Developer of the Original Code is
20 : * Netscape Communications, Inc.
21 : * Portions created by the Initial Developer are Copyright (C) 1999
22 : * the Initial Developer. All Rights Reserved.
23 : *
24 : * Contributor(s):
25 : * Travis Bogard <travis@netscape.com>
26 : *
27 : * Alternatively, the contents of this file may be used under the terms of
28 : * either of the GNU General Public License Version 2 or later (the "GPL"),
29 : * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
30 : * in which case the provisions of the GPL or the LGPL are applicable instead
31 : * of those above. If you wish to allow use of your version of this file only
32 : * under the terms of either the GPL or the LGPL, and not to allow others to
33 : * use your version of this file under the terms of the MPL, indicate your
34 : * decision by deleting the provisions above and replace them with the notice
35 : * and other provisions required by the GPL or the LGPL. If you do not delete
36 : * the provisions above, a recipient may use your version of this file under
37 : * the terms of any one of the MPL, the GPL or the LGPL.
38 : *
39 : * ***** END LICENSE BLOCK ***** */
40 :
41 : #ifndef nsDocShellLoadTypes_h_
42 : #define nsDocShellLoadTypes_h_
43 :
44 : #ifdef MOZILLA_INTERNAL_API
45 :
46 : #include "nsIDocShell.h"
47 : #include "nsIWebNavigation.h"
48 :
49 : /**
50 : * Load flag for error pages. This uses one of the reserved flag
51 : * values from nsIWebNavigation.
52 : */
53 : #define LOAD_FLAGS_ERROR_PAGE 0x0001U
54 :
55 : #define MAKE_LOAD_TYPE(type, flags) ((type) | ((flags) << 16))
56 : #define LOAD_TYPE_HAS_FLAGS(type, flags) ((type) & ((flags) << 16))
57 :
58 : /**
59 : * These are flags that confuse ConvertLoadTypeToDocShellLoadInfo and should
60 : * not be passed to MAKE_LOAD_TYPE. In particular this includes all flags
61 : * above 0xffff (e.g. LOAD_FLAGS_BYPASS_CLASSIFIER), since MAKE_LOAD_TYPE would
62 : * just shift them out anyway.
63 : */
64 : #define EXTRA_LOAD_FLAGS (LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP | \
65 : LOAD_FLAGS_FIRST_LOAD | \
66 : LOAD_FLAGS_ALLOW_POPUPS | \
67 : 0xffff0000)
68 :
69 :
70 :
71 : /* load types are legal combinations of load commands and flags
72 : *
73 : * NOTE:
74 : * Remember to update the IsValidLoadType function below if you change this
75 : * enum to ensure bad flag combinations will be rejected.
76 : */
77 : enum LoadType {
78 : LOAD_NORMAL = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_NONE),
79 : LOAD_NORMAL_REPLACE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_REPLACE_HISTORY),
80 : LOAD_NORMAL_EXTERNAL = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_FROM_EXTERNAL),
81 : LOAD_HISTORY = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_HISTORY, nsIWebNavigation::LOAD_FLAGS_NONE),
82 : LOAD_NORMAL_BYPASS_CACHE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_BYPASS_CACHE),
83 : LOAD_NORMAL_BYPASS_PROXY = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_BYPASS_PROXY),
84 : LOAD_NORMAL_BYPASS_PROXY_AND_CACHE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_BYPASS_CACHE | nsIWebNavigation::LOAD_FLAGS_BYPASS_PROXY),
85 : LOAD_RELOAD_NORMAL = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_RELOAD, nsIWebNavigation::LOAD_FLAGS_NONE),
86 : LOAD_RELOAD_BYPASS_CACHE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_RELOAD, nsIWebNavigation::LOAD_FLAGS_BYPASS_CACHE),
87 : LOAD_RELOAD_BYPASS_PROXY = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_RELOAD, nsIWebNavigation::LOAD_FLAGS_BYPASS_PROXY),
88 : LOAD_RELOAD_BYPASS_PROXY_AND_CACHE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_RELOAD, nsIWebNavigation::LOAD_FLAGS_BYPASS_CACHE | nsIWebNavigation::LOAD_FLAGS_BYPASS_PROXY),
89 : LOAD_LINK = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_IS_LINK),
90 : LOAD_REFRESH = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_IS_REFRESH),
91 : LOAD_RELOAD_CHARSET_CHANGE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_RELOAD, nsIWebNavigation::LOAD_FLAGS_CHARSET_CHANGE),
92 : LOAD_BYPASS_HISTORY = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_BYPASS_HISTORY),
93 : LOAD_STOP_CONTENT = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_STOP_CONTENT),
94 : LOAD_STOP_CONTENT_AND_REPLACE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_STOP_CONTENT | nsIWebNavigation::LOAD_FLAGS_REPLACE_HISTORY),
95 : LOAD_PUSHSTATE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_PUSHSTATE, nsIWebNavigation::LOAD_FLAGS_NONE),
96 : /**
97 : * Load type for an error page. These loads are never triggered by users of
98 : * Docshell. Instead, Docshell triggers the load itself when a
99 : * consumer-triggered load failed.
100 : */
101 : LOAD_ERROR_PAGE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, LOAD_FLAGS_ERROR_PAGE)
102 :
103 : // NOTE: Adding a new value? Remember to update IsValidLoadType!
104 : };
105 0 : static inline bool IsValidLoadType(PRUint32 aLoadType)
106 : {
107 0 : switch (aLoadType)
108 : {
109 : case LOAD_NORMAL:
110 : case LOAD_NORMAL_REPLACE:
111 : case LOAD_NORMAL_EXTERNAL:
112 : case LOAD_NORMAL_BYPASS_CACHE:
113 : case LOAD_NORMAL_BYPASS_PROXY:
114 : case LOAD_NORMAL_BYPASS_PROXY_AND_CACHE:
115 : case LOAD_HISTORY:
116 : case LOAD_RELOAD_NORMAL:
117 : case LOAD_RELOAD_BYPASS_CACHE:
118 : case LOAD_RELOAD_BYPASS_PROXY:
119 : case LOAD_RELOAD_BYPASS_PROXY_AND_CACHE:
120 : case LOAD_LINK:
121 : case LOAD_REFRESH:
122 : case LOAD_RELOAD_CHARSET_CHANGE:
123 : case LOAD_BYPASS_HISTORY:
124 : case LOAD_STOP_CONTENT:
125 : case LOAD_STOP_CONTENT_AND_REPLACE:
126 : case LOAD_PUSHSTATE:
127 : case LOAD_ERROR_PAGE:
128 0 : return true;
129 : }
130 0 : return false;
131 : }
132 :
133 : #endif // MOZILLA_INTERNAL_API
134 : #endif
|