Merge mozilla-central and tracemonkey. (a=blockers)
[mozilla-central.git] / docshell / base / nsDocShellLoadTypes.h
blobc5442e84d1dda32e115f685133f11c01b6a50304
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2 * vim: set ts=4 sw=4 et tw=80:
4 * ***** BEGIN LICENSE BLOCK *****
5 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
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/
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.
17 * The Original Code is the Mozilla browser.
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.
24 * Contributor(s):
25 * Travis Bogard <travis@netscape.com>
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.
39 * ***** END LICENSE BLOCK ***** */
41 #ifndef nsDocShellLoadTypes_h_
42 #define nsDocShellLoadTypes_h_
44 #ifdef MOZILLA_INTERNAL_API
46 #include "nsIDocShell.h"
47 #include "nsIWebNavigation.h"
49 /**
50 * Load flag for error pages. This uses one of the reserved flag
51 * values from nsIWebNavigation.
53 #define LOAD_FLAGS_ERROR_PAGE 0x0001U
55 #define MAKE_LOAD_TYPE(type, flags) ((type) | ((flags) << 16))
56 #define LOAD_TYPE_HAS_FLAGS(type, flags) ((type) & ((flags) << 16))
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.
64 #define EXTRA_LOAD_FLAGS (LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP | \
65 LOAD_FLAGS_FIRST_LOAD | \
66 LOAD_FLAGS_ALLOW_POPUPS | \
67 0xffff0000)
71 /* load types are legal combinations of load commands and flags
73 * NOTE:
74 * Remember to update the IsValidLoadType function below if you change this
75 * enum to ensure bad flag combinations will be rejected.
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.
101 LOAD_ERROR_PAGE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, LOAD_FLAGS_ERROR_PAGE)
103 // NOTE: Adding a new value? Remember to update IsValidLoadType!
105 static inline PRBool IsValidLoadType(PRUint32 aLoadType)
107 switch (aLoadType)
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 return PR_TRUE;
130 return PR_FALSE;
133 #endif // MOZILLA_INTERNAL_API
134 #endif