michael@0: /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- michael@0: * vim: set ts=4 sw=4 et tw=80: michael@0: * michael@0: * This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: #ifndef nsDocShellLoadTypes_h_ michael@0: #define nsDocShellLoadTypes_h_ michael@0: michael@0: #ifdef MOZILLA_INTERNAL_API michael@0: michael@0: #include "nsIDocShell.h" michael@0: #include "nsIWebNavigation.h" michael@0: michael@0: /** michael@0: * Load flag for error pages. This uses one of the reserved flag michael@0: * values from nsIWebNavigation. michael@0: */ michael@0: #define LOAD_FLAGS_ERROR_PAGE 0x0001U michael@0: michael@0: #define MAKE_LOAD_TYPE(type, flags) ((type) | ((flags) << 16)) michael@0: #define LOAD_TYPE_HAS_FLAGS(type, flags) ((type) & ((flags) << 16)) michael@0: michael@0: /** michael@0: * These are flags that confuse ConvertLoadTypeToDocShellLoadInfo and should michael@0: * not be passed to MAKE_LOAD_TYPE. In particular this includes all flags michael@0: * above 0xffff (e.g. LOAD_FLAGS_BYPASS_CLASSIFIER), since MAKE_LOAD_TYPE would michael@0: * just shift them out anyway. michael@0: */ michael@0: #define EXTRA_LOAD_FLAGS (LOAD_FLAGS_FIRST_LOAD | \ michael@0: LOAD_FLAGS_ALLOW_POPUPS | \ michael@0: 0xffff0000) michael@0: michael@0: michael@0: michael@0: /* load types are legal combinations of load commands and flags michael@0: * michael@0: * NOTE: michael@0: * Remember to update the IsValidLoadType function below if you change this michael@0: * enum to ensure bad flag combinations will be rejected. michael@0: */ michael@0: enum LoadType { michael@0: LOAD_NORMAL = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_NONE), michael@0: LOAD_NORMAL_REPLACE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_REPLACE_HISTORY), michael@0: LOAD_NORMAL_EXTERNAL = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_FROM_EXTERNAL), michael@0: LOAD_HISTORY = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_HISTORY, nsIWebNavigation::LOAD_FLAGS_NONE), michael@0: LOAD_NORMAL_BYPASS_CACHE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_BYPASS_CACHE), michael@0: LOAD_NORMAL_BYPASS_PROXY = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_BYPASS_PROXY), michael@0: LOAD_NORMAL_BYPASS_PROXY_AND_CACHE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_BYPASS_CACHE | nsIWebNavigation::LOAD_FLAGS_BYPASS_PROXY), michael@0: LOAD_NORMAL_ALLOW_MIXED_CONTENT = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_ALLOW_MIXED_CONTENT | nsIWebNavigation::LOAD_FLAGS_BYPASS_CACHE), michael@0: LOAD_RELOAD_NORMAL = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_RELOAD, nsIWebNavigation::LOAD_FLAGS_NONE), michael@0: LOAD_RELOAD_BYPASS_CACHE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_RELOAD, nsIWebNavigation::LOAD_FLAGS_BYPASS_CACHE), michael@0: LOAD_RELOAD_BYPASS_PROXY = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_RELOAD, nsIWebNavigation::LOAD_FLAGS_BYPASS_PROXY), michael@0: LOAD_RELOAD_ALLOW_MIXED_CONTENT = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_RELOAD, nsIWebNavigation::LOAD_FLAGS_ALLOW_MIXED_CONTENT | nsIWebNavigation::LOAD_FLAGS_BYPASS_CACHE), michael@0: LOAD_RELOAD_BYPASS_PROXY_AND_CACHE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_RELOAD, nsIWebNavigation::LOAD_FLAGS_BYPASS_CACHE | nsIWebNavigation::LOAD_FLAGS_BYPASS_PROXY), michael@0: LOAD_LINK = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_IS_LINK), michael@0: LOAD_REFRESH = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_IS_REFRESH), michael@0: LOAD_RELOAD_CHARSET_CHANGE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_RELOAD, nsIWebNavigation::LOAD_FLAGS_CHARSET_CHANGE), michael@0: LOAD_BYPASS_HISTORY = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_BYPASS_HISTORY), michael@0: LOAD_STOP_CONTENT = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_STOP_CONTENT), michael@0: LOAD_STOP_CONTENT_AND_REPLACE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_STOP_CONTENT | nsIWebNavigation::LOAD_FLAGS_REPLACE_HISTORY), michael@0: LOAD_PUSHSTATE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_PUSHSTATE, nsIWebNavigation::LOAD_FLAGS_NONE), michael@0: LOAD_REPLACE_BYPASS_CACHE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_REPLACE_HISTORY | nsIWebNavigation::LOAD_FLAGS_BYPASS_CACHE), michael@0: /** michael@0: * Load type for an error page. These loads are never triggered by users of michael@0: * Docshell. Instead, Docshell triggers the load itself when a michael@0: * consumer-triggered load failed. michael@0: */ michael@0: LOAD_ERROR_PAGE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, LOAD_FLAGS_ERROR_PAGE) michael@0: michael@0: // NOTE: Adding a new value? Remember to update IsValidLoadType! michael@0: }; michael@0: static inline bool IsValidLoadType(uint32_t aLoadType) michael@0: { michael@0: switch (aLoadType) michael@0: { michael@0: case LOAD_NORMAL: michael@0: case LOAD_NORMAL_REPLACE: michael@0: case LOAD_NORMAL_EXTERNAL: michael@0: case LOAD_NORMAL_BYPASS_CACHE: michael@0: case LOAD_NORMAL_BYPASS_PROXY: michael@0: case LOAD_NORMAL_BYPASS_PROXY_AND_CACHE: michael@0: case LOAD_NORMAL_ALLOW_MIXED_CONTENT: michael@0: case LOAD_HISTORY: michael@0: case LOAD_RELOAD_NORMAL: michael@0: case LOAD_RELOAD_BYPASS_CACHE: michael@0: case LOAD_RELOAD_BYPASS_PROXY: michael@0: case LOAD_RELOAD_BYPASS_PROXY_AND_CACHE: michael@0: case LOAD_RELOAD_ALLOW_MIXED_CONTENT: michael@0: case LOAD_LINK: michael@0: case LOAD_REFRESH: michael@0: case LOAD_RELOAD_CHARSET_CHANGE: michael@0: case LOAD_BYPASS_HISTORY: michael@0: case LOAD_STOP_CONTENT: michael@0: case LOAD_STOP_CONTENT_AND_REPLACE: michael@0: case LOAD_PUSHSTATE: michael@0: case LOAD_REPLACE_BYPASS_CACHE: michael@0: case LOAD_ERROR_PAGE: michael@0: return true; michael@0: } michael@0: return false; michael@0: } michael@0: michael@0: #endif // MOZILLA_INTERNAL_API michael@0: #endif