18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 22bde8e466a4451c7319e3a072d118917957d6554Steve Block * Copyright (C) 2006, 2007, 2008, 2009, 2011 Apple Inc. All rights reserved. 30bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/) 4cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block * Copyright (C) Research In Motion Limited 2009. All rights reserved. 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met: 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1. Redistributions of source code must retain the above copyright 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer. 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer in the 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * documentation and/or other materials provided with the distribution. 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * its contributors may be used to endorse or promote products derived 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * from this software without specific prior written permission. 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef FrameLoader_h 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define FrameLoader_h 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "CachePolicy.h" 3506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#include "FrameLoaderStateMachine.h" 368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "FrameLoaderTypes.h" 37cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block#include "HistoryController.h" 382bde8e466a4451c7319e3a072d118917957d6554Steve Block#include "IconDatabaseBase.h" 39231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#include "PolicyChecker.h" 40cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block#include "ResourceLoadNotifier.h" 412daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#include "ScriptValue.h" 4206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#include "SubframeLoader.h" 435f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#include "ThreadableLoader.h" 44635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#include "Timer.h" 45231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#include <wtf/Forward.h> 4665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include <wtf/HashSet.h> 47635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 50cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockclass Archive; 51cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockclass AuthenticationChallenge; 52cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockclass CachedFrameBase; 53cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockclass CachedPage; 54cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockclass CachedResource; 55cad810f21b803229eb11403f9209855525a25d57Steve Blockclass Chrome; 56643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass DOMWrapperWorld; 57cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockclass Document; 58cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockclass DocumentLoader; 59cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockclass Event; 60cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockclass FormData; 61cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockclass FormState; 6206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenclass FormSubmission; 63cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockclass Frame; 64cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockclass FrameLoaderClient; 655abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrickclass FrameNetworkingContext; 66cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockclass HistoryItem; 67cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockclass HTMLFormElement; 68cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockclass IconLoader; 69cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockclass NavigationAction; 705abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrickclass NetworkingContext; 71e14391e94c850b8bd03680c23b38978db68687a8John Reckclass Page; 7221939df44de1705786c545cd1bf519d47250322dBen Murdochclass ProtectionSpace; 73cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockclass ResourceError; 74cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockclass ResourceLoader; 7565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass ResourceRequest; 76cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockclass ResourceResponse; 77cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockclass ScriptSourceCode; 78cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockclass ScriptValue; 79cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockclass SecurityOrigin; 80643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass SerializedScriptValue; 81cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockclass SharedBuffer; 822daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochclass StringWithDirection; 83cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockclass SubstituteData; 84cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockclass TextResourceDecoder; 85cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 86cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockstruct FrameLoadRequest; 87cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockstruct WindowFeatures; 88cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 89cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockbool isBackForwardLoadType(FrameLoadType); 90cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 91ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochclass FrameLoader { 92ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch WTF_MAKE_NONCOPYABLE(FrameLoader); 93cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockpublic: 94cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block FrameLoader(Frame*, FrameLoaderClient*); 95cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block ~FrameLoader(); 96cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 97cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void init(); 98cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 99cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block Frame* frame() const { return m_frame; } 100cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 101cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block PolicyChecker* policyChecker() const { return &m_policyChecker; } 102cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block HistoryController* history() const { return &m_history; } 103cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block ResourceLoadNotifier* notifier() const { return &m_notifer; } 10406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen SubframeLoader* subframeLoader() const { return &m_subframeLoader; } 105cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 106cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block // FIXME: This is not cool, people. There are too many different functions that all start loads. 107cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block // We should aim to consolidate these into a smaller set of functions, and try to reuse more of 108cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block // the logic by extracting common code paths. 109cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 110cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void prepareForLoadStart(); 111cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void setupForReplace(); 112cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void setupForReplaceByMIMEType(const String& newMIMEType); 113cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 114cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void loadURLIntoChildFrame(const KURL&, const String& referer, Frame*); 115cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 116cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void loadFrameRequest(const FrameLoadRequest&, bool lockHistory, bool lockBackForwardList, // Called by submitForm, calls loadPostRequest and loadURL. 117cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block PassRefPtr<Event>, PassRefPtr<FormState>, ReferrerPolicy); 118cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 119cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void load(const ResourceRequest&, bool lockHistory); // Called by WebFrame, calls load(ResourceRequest, SubstituteData). 120cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void load(const ResourceRequest&, const SubstituteData&, bool lockHistory); // Called both by WebFrame and internally, calls load(DocumentLoader*). 121cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void load(const ResourceRequest&, const String& frameName, bool lockHistory); // Called by WebPluginController. 1222fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 1232fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#if ENABLE(WEB_ARCHIVE) 124cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void loadArchive(PassRefPtr<Archive>); 1253f60c26c3fa9dc89d57ef4db083a4f13ef86c103Steve Block#endif 126cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 127cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block static void reportLocalLoadFailed(Frame*, const String& url); 1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 129cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block unsigned long loadResourceSynchronously(const ResourceRequest&, StoredCredentials, ResourceError&, ResourceResponse&, Vector<char>& data); 1308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 131cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool canHandleRequest(const ResourceRequest&); 1328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 133cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block // Also not cool. 13481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch void stopAllLoaders(ClearProvisionalItemPolicy = ShouldClearProvisionalItem); 135cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void stopForUserCancel(bool deferCheckLoadComplete = false); 1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 137cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool isLoadingMainResource() const { return m_isLoadingMainResource; } 138cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool isLoading() const; 139cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool frameHasLoaded() const; 140e14391e94c850b8bd03680c23b38978db68687a8John Reck void transferLoadingResourcesFromPage(Page*); 1416b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner void dispatchTransferLoadingResourceFromPage(unsigned long, DocumentLoader*, const ResourceRequest&, Page*); 1428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 143cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block int numPendingOrLoadingRequests(bool recurse) const; 144cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block String referrer() const; 145cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block String outgoingReferrer() const; 146cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block String outgoingOrigin() const; 147231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 148cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block DocumentLoader* activeDocumentLoader() const; 149cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block DocumentLoader* documentLoader() const { return m_documentLoader.get(); } 150cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block DocumentLoader* policyDocumentLoader() const { return m_policyDocumentLoader.get(); } 151cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block DocumentLoader* provisionalDocumentLoader() const { return m_provisionalDocumentLoader.get(); } 152cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block FrameState state() const { return m_state; } 153cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block static double timeOfLastCompletedLoad(); 1545f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 155cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool shouldUseCredentialStorage(ResourceLoader*); 15621939df44de1705786c545cd1bf519d47250322dBen Murdoch#if USE(PROTECTION_SPACE_AUTH_CALLBACK) 15721939df44de1705786c545cd1bf519d47250322dBen Murdoch bool canAuthenticateAgainstProtectionSpace(ResourceLoader* loader, const ProtectionSpace& protectionSpace); 15821939df44de1705786c545cd1bf519d47250322dBen Murdoch#endif 159cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block const ResourceRequest& originalRequest() const; 160cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block const ResourceRequest& initialRequest() const; 161cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void receivedMainResourceError(const ResourceError&, bool isComplete); 1628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 163cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool willLoadMediaElementURL(KURL&); 1648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 165cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void handleFallbackContent(); 166cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool isStopping() const; 1678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 168cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void finishedLoading(); 1698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 170cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block ResourceError cancelledError(const ResourceRequest&) const; 171cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block ResourceError fileDoesNotExistError(const ResourceResponse&) const; 172cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block ResourceError blockedError(const ResourceRequest&) const; 173cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block ResourceError cannotShowURLError(const ResourceRequest&) const; 1746b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner ResourceError interruptionForPolicyChangeError(const ResourceRequest&) const; 1758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 176cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool isHostedByObjectElement() const; 177cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool isLoadingMainFrame() const; 178cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool canShowMIMEType(const String& MIMEType) const; 179cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool representationExistsForURLScheme(const String& URLScheme); 180cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block String generatedMIMETypeForURLScheme(const String& URLScheme); 1818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 182cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void reload(bool endToEndReload = false); 183cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void reloadWithOverrideEncoding(const String& overrideEncoding); 1848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 185cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void didReceiveServerRedirectForProvisionalLoadForFrame(); 186cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void finishedLoadingDocument(DocumentLoader*); 187cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool isReplacing() const; 188cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void setReplacing(); 189cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void revertToProvisional(DocumentLoader*); 190cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void setMainDocumentError(DocumentLoader*, const ResourceError&); 191cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void mainReceivedCompleteError(DocumentLoader*, const ResourceError&); 192cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool subframeIsLoading() const; 193cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void willChangeTitle(DocumentLoader*); 194cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void didChangeTitle(DocumentLoader*); 19521939df44de1705786c545cd1bf519d47250322dBen Murdoch void didChangeIcons(DocumentLoader*); 1968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 197cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block FrameLoadType loadType() const; 198e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke 199cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block CachePolicy subresourceCachePolicy() const; 2008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 201cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void didFirstLayout(); 2028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 203cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void didFirstVisuallyNonEmptyLayout(); 2048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 205cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void loadedResourceFromMemoryCache(const CachedResource*); 206cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void tellClientAboutPastMemoryCacheLoads(); 2078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 208cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void checkLoadComplete(); 209cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void detachFromParent(); 210cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void detachViewsAndDocumentLoader(); 2118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 212cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void addExtraFieldsToSubresourceRequest(ResourceRequest&); 213cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void addExtraFieldsToMainResourceRequest(ResourceRequest&); 214cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 215cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block static void addHTTPOriginIfNeeded(ResourceRequest&, String origin); 2168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 217cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block FrameLoaderClient* client() const { return m_client; } 2188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 219cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void setDefersLoading(bool); 2208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 221f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch void changeLocation(PassRefPtr<SecurityOrigin>, const KURL&, const String& referrer, bool lockHistory = true, bool lockBackForwardList = true, bool refresh = false); 222a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch void urlSelected(const KURL&, const String& target, PassRefPtr<Event>, bool lockHistory, bool lockBackForwardList, ReferrerPolicy); 2238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 22406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen void submitForm(PassRefPtr<FormSubmission>); 2258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 226cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void stop(); 22781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch void stopLoading(UnloadEventPolicy); 228cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool closeURL(); 2298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 230cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void didExplicitOpen(); 2318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 232dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // Callbacks from DocumentWriter 233dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void didBeginDocument(bool dispatchWindowObjectAvailable); 234dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void didEndDocument(); 235dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void willSetEncoding(); 236dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 237cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block KURL iconURL(); 238cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void commitIconURLToIconDatabase(const KURL&); 2398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 240cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block KURL baseURL() const; 2418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 242cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void handledOnloadEvents(); 243cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block String userAgent(const KURL&) const; 2448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 245643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void dispatchDidClearWindowObjectInWorld(DOMWrapperWorld*); 246643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void dispatchDidClearWindowObjectsInAllWorlds(); 247cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void dispatchDocumentElementAvailable(); 248231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 249643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void ownerElementSandboxFlagsChanged() { updateSandboxFlags(); } 250d0825bca7fe65beaee391d30da42e937db621564Steve Block 251643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool isSandboxed(SandboxFlags mask) const { return m_sandboxFlags & mask; } 252643ca7872b450ea4efacab6188849e5aac2ba161Steve Block SandboxFlags sandboxFlags() const { return m_sandboxFlags; } 253dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // The following sandbox flags will be forced, regardless of changes to 254dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // the sandbox attribute of any parent frames. 255dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void setForcedSandboxFlags(SandboxFlags flags) { m_forcedSandboxFlags = flags; m_sandboxFlags |= flags; } 256643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 257cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block // Mixed content related functions. 258cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block static bool isMixedContent(SecurityOrigin* context, const KURL&); 259cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void checkIfDisplayInsecureContent(SecurityOrigin* context, const KURL&); 260cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void checkIfRunInsecureContent(SecurityOrigin* context, const KURL&); 2618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 262cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block Frame* opener(); 263cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void setOpener(Frame*); 2648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 265cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool isProcessingUserGesture(); 2668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 267cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void resetMultipleFormSubmissionProtection(); 2688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 269cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void checkCallImplicitClose(); 2708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 271cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void frameDetached(); 2728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2732fc2651226baac27029e38c9d6ef883fa32084dbSteve Block void setOutgoingReferrer(const KURL&); 2748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 275cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void loadDone(); 276cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void finishedParsing(); 277cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void checkCompleted(); 2788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 279cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void checkDidPerformFirstNavigation(); 2808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 281cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool isComplete() const; 2828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 283cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block KURL completeURL(const String& url); 2848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 285cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void cancelAndClear(); 2868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2872daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch void setTitle(const StringWithDirection&); 28821939df44de1705786c545cd1bf519d47250322dBen Murdoch void setIconURL(const String&); 2898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 290545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch void commitProvisionalLoad(); 291cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool isLoadingFromCachedPage() const { return m_loadingFromCachedPage; } 2928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 29306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen FrameLoaderStateMachine* stateMachine() const { return &m_stateMachine; } 2948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2952bde8e466a4451c7319e3a072d118917957d6554Steve Block void startIconLoader(); 2962bde8e466a4451c7319e3a072d118917957d6554Steve Block void iconLoadDecisionReceived(IconLoadDecision); 2972bde8e466a4451c7319e3a072d118917957d6554Steve Block void continueIconLoadWithDecision(IconLoadDecision); 2988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 299cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool shouldAllowNavigation(Frame* targetFrame) const; 300cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block Frame* findFrameForNavigation(const AtomicString& name); 3018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 302cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void applyUserAgent(ResourceRequest& request); 3038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 304cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool shouldInterruptLoadForXFrameOptions(const String&, const KURL&); 3055f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 306cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void open(CachedFrameBase&); 307231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 308ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch#if ENABLE(PLUGIN_PROXY_FOR_VIDEO) 309ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch void hideMediaPlayerProxyPlugin(Widget*); 310ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch void showMediaPlayerProxyPlugin(Widget*); 311ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch#endif 312ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch 313cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block // FIXME: Should these really be public? 314cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void completed(); 315cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool allAncestorsAreComplete() const; // including this 316cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool allChildrenAreComplete() const; // immediate children, not all descendants 317cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void clientRedirected(const KURL&, double delay, double fireDate, bool lockBackForwardList); 318cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void clientRedirectCancelledOrFinished(bool cancelWithLoadInProgress); 319cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void loadItem(HistoryItem*, FrameLoadType); 320231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 321cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block // FIXME: This is public because this asynchronous callback from the FrameLoaderClient 322cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block // uses the policy machinery (and therefore is called via the PolicyChecker). Once we 323cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block // introduce a proper callback type for this function, we should make it private again. 324cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void continueLoadAfterWillSubmitForm(); 325cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 326cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool suppressOpenerInNewFrame() const { return m_suppressOpenerInNewFrame; } 327231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 3282bde8e466a4451c7319e3a072d118917957d6554Steve Block static ObjectContentType defaultObjectContentType(const KURL&, const String& mimeType, bool shouldPreferPlugInsForImages); 3298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 330dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void clear(bool clearWindowProperties = true, bool clearScriptObjects = true, bool clearFrameView = true); 331545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 332545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch bool quickRedirectComing() const { return m_quickRedirectComing; } 333545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 3346c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen bool shouldClose(); 33506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 33606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen void started(); 3376c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 338e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block bool pageDismissalEventBeingDispatched() const { return m_pageDismissalEventBeingDispatched; } 339e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block 34068513a70bcd92384395513322f1b801e7bf9c729Steve Block NetworkingContext* networkingContext() const; 3415abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick 342cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockprivate: 343cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void checkTimerFired(Timer<FrameLoader>*); 344cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 345f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch void loadSameDocumentItem(HistoryItem*); 346f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch void loadDifferentDocumentItem(HistoryItem*, FrameLoadType); 347643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 348545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch void loadProvisionalItemFromCachedPage(); 3498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 350cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void receivedFirstData(); 3518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 352cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void updateFirstPartyForCookies(); 353cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void setFirstPartyForCookies(const KURL&); 354cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 355cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void addExtraFieldsToRequest(ResourceRequest&, FrameLoadType loadType, bool isMainResource, bool cookiePolicyURLFromRequest); 3568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 357cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block // Also not cool. 35881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch void stopLoadingSubframes(ClearProvisionalItemPolicy); 3598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 360cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void clearProvisionalLoad(); 361cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void markLoadComplete(); 362cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void transitionToCommitted(PassRefPtr<CachedPage>); 363cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void frameLoadCompleted(); 3648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 365cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void mainReceivedError(const ResourceError&, bool isComplete); 366231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 367cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block static void callContinueLoadAfterNavigationPolicy(void*, const ResourceRequest&, PassRefPtr<FormState>, bool shouldContinue); 368e14391e94c850b8bd03680c23b38978db68687a8John Reck static void callContinueLoadAfterNewWindowPolicy(void*, const ResourceRequest&, PassRefPtr<FormState>, const String& frameName, const NavigationAction&, bool shouldContinue); 369cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block static void callContinueFragmentScrollAfterNavigationPolicy(void*, const ResourceRequest&, PassRefPtr<FormState>, bool shouldContinue); 370cad810f21b803229eb11403f9209855525a25d57Steve Block 371cad810f21b803229eb11403f9209855525a25d57Steve Block bool fireBeforeUnloadEvent(Chrome*); 3728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 373cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void continueLoadAfterNavigationPolicy(const ResourceRequest&, PassRefPtr<FormState>, bool shouldContinue); 374e14391e94c850b8bd03680c23b38978db68687a8John Reck void continueLoadAfterNewWindowPolicy(const ResourceRequest&, PassRefPtr<FormState>, const String& frameName, const NavigationAction&, bool shouldContinue); 375cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void continueFragmentScrollAfterNavigationPolicy(const ResourceRequest&, bool shouldContinue); 3768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 377cad810f21b803229eb11403f9209855525a25d57Steve Block bool shouldScrollToAnchor(bool isFormSubmission, const String& httpMethod, FrameLoadType, const KURL&); 3788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 379cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void checkLoadCompleteForThisFrame(); 3808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 381cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void setDocumentLoader(DocumentLoader*); 382cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void setPolicyDocumentLoader(DocumentLoader*); 383cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void setProvisionalDocumentLoader(DocumentLoader*); 3848f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 385cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void setState(FrameState); 3868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 387cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void closeOldDataSources(); 388545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch void prepareForCachedPageRestore(); 3898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 390cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool shouldReloadToHandleUnreachableURL(DocumentLoader*); 3915f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 392cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void dispatchDidCommitLoad(); 3935f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 394f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch void urlSelected(const FrameLoadRequest&, PassRefPtr<Event>, bool lockHistory, bool lockBackForwardList, ReferrerPolicy, ShouldReplaceDocumentIfJavaScriptURL); 3956c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 396cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void loadWithDocumentLoader(DocumentLoader*, FrameLoadType, PassRefPtr<FormState>); // Calls continueLoadAfterNavigationPolicy 397cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void load(DocumentLoader*); // Calls loadWithDocumentLoader 3985f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 399cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void loadWithNavigationAction(const ResourceRequest&, const NavigationAction&, // Calls loadWithDocumentLoader 400cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool lockHistory, FrameLoadType, PassRefPtr<FormState>); 4015f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 402cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void loadPostRequest(const ResourceRequest&, const String& referrer, // Called by loadFrameRequest, calls loadWithNavigationAction 403cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block const String& frameName, bool lockHistory, FrameLoadType, PassRefPtr<Event>, PassRefPtr<FormState>); 404cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void loadURL(const KURL&, const String& referrer, const String& frameName, // Called by loadFrameRequest, calls loadWithNavigationAction or dispatches to navigation policy delegate 405cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool lockHistory, FrameLoadType, PassRefPtr<Event>, PassRefPtr<FormState>); 4065f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 407cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool shouldReload(const KURL& currentURL, const KURL& destinationURL); 4085f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 409cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void requestFromDelegate(ResourceRequest&, unsigned long& identifier, ResourceError&); 4105f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 411cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void recursiveCheckLoadComplete(); 4125f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 413cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void detachChildren(); 414cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void closeAndRemoveChild(Frame*); 4155f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 416643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void loadInSameDocument(const KURL&, SerializedScriptValue* stateObject, bool isNewNavigation); 4175f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 418cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void provisionalLoadStarted(); 4195f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 420cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool didOpenURL(const KURL&); 4215f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 422cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void scheduleCheckCompleted(); 423cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void scheduleCheckLoadComplete(); 424cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void startCheckCompleteTimer(); 4255f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 426cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block KURL originalRequestURL() const; 4275f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 428cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool shouldTreatURLAsSameAsCurrent(const KURL&) const; 4298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 430643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void updateSandboxFlags(); 4318a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block 432cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block Frame* m_frame; 433cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block FrameLoaderClient* m_client; 4348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 435cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block mutable PolicyChecker m_policyChecker; 436cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block mutable HistoryController m_history; 437cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block mutable ResourceLoadNotifier m_notifer; 43806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen mutable SubframeLoader m_subframeLoader; 43906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen mutable FrameLoaderStateMachine m_stateMachine; 440231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 441cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block FrameState m_state; 442cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block FrameLoadType m_loadType; 4438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 444cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block // Document loaders for the three phases of frame loading. Note that while 445cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block // a new request is being loaded, the old document loader may still be referenced. 446cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block // E.g. while a new request is in the "policy" state, the old document loader may 447cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block // be consulted in particular as it makes sense to imply certain settings on the new loader. 448cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block RefPtr<DocumentLoader> m_documentLoader; 449cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block RefPtr<DocumentLoader> m_provisionalDocumentLoader; 450cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block RefPtr<DocumentLoader> m_policyDocumentLoader; 4518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 452cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool m_delegateIsHandlingProvisionalLoadError; 4538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 454cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool m_quickRedirectComing; 455cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool m_sentRedirectNotification; 456cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool m_inStopAllLoaders; 4578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 458cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block String m_outgoingReferrer; 4598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 460cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool m_isExecutingJavaScriptFormAction; 4618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 462cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool m_didCallImplicitClose; 463cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool m_wasUnloadEventEmitted; 4646c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen bool m_pageDismissalEventBeingDispatched; 465cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool m_isComplete; 466cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool m_isLoadingMainResource; 4678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 468d0825bca7fe65beaee391d30da42e937db621564Steve Block RefPtr<SerializedScriptValue> m_pendingStateObject; 469d0825bca7fe65beaee391d30da42e937db621564Steve Block 470cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block KURL m_workingURL; 4718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 472cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block OwnPtr<IconLoader> m_iconLoader; 473cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool m_mayLoadIconLater; 4748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 475cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool m_needsClear; 4768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 477cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block KURL m_submittedFormURL; 478231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 479cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block Timer<FrameLoader> m_checkTimer; 480cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool m_shouldCallCheckCompleted; 481cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool m_shouldCallCheckLoadComplete; 4828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 483cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block Frame* m_opener; 484cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block HashSet<Frame*> m_openedFrames; 4858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 486cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool m_didPerformFirstNavigation; 487cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool m_loadingFromCachedPage; 488cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block bool m_suppressOpenerInNewFrame; 489cad810f21b803229eb11403f9209855525a25d57Steve Block 490643ca7872b450ea4efacab6188849e5aac2ba161Steve Block SandboxFlags m_sandboxFlags; 491dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block SandboxFlags m_forcedSandboxFlags; 492643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 4935abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick RefPtr<FrameNetworkingContext> m_networkingContext; 494cad810f21b803229eb11403f9209855525a25d57Steve Block 495cad810f21b803229eb11403f9209855525a25d57Steve Block KURL m_previousUrl; 496cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block}; 4978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 498f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick// This function is called by createWindow() in JSDOMWindowBase.cpp, for example, for 499f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick// modal dialog creation. The lookupFrame is for looking up the frame name in case 500f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick// the frame name references a frame different from the openerFrame, e.g. when it is 501f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick// "_self" or "_parent". 502f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick// 503f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick// FIXME: Consider making this function part of an appropriate class (not FrameLoader) 504f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick// and moving it to a more appropriate location. 505f486d19d62f1bc33246748b14b14a9dfa617b57fIain MerrickFrame* createWindow(Frame* openerFrame, Frame* lookupFrame, const FrameLoadRequest&, const WindowFeatures&, bool& created); 506f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick 5078f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian} // namespace WebCore 5088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5098f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#endif // FrameLoader_h 510