1643ca7872b450ea4efacab6188849e5aac2ba161Steve Block/* 22daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch * Copyright (C) 2011 Google Inc. All rights reserved. 3643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 4643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * Redistribution and use in source and binary forms, with or without 5643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * modification, are permitted provided that the following conditions are 6643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * met: 7643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 8643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * * Redistributions of source code must retain the above copyright 9643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * notice, this list of conditions and the following disclaimer. 10643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * * Redistributions in binary form must reproduce the above 11643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * copyright notice, this list of conditions and the following disclaimer 12643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * in the documentation and/or other materials provided with the 13643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * distribution. 14643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * * Neither the name of Google Inc. nor the names of its 15643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * contributors may be used to endorse or promote products derived from 16643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * this software without specific prior written permission. 17643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 18643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29643ca7872b450ea4efacab6188849e5aac2ba161Steve Block */ 30643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 31643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#ifndef WebFrameClient_h 32643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#define WebFrameClient_h 33643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 34643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebCommon.h" 35e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block#include "WebFileSystem.h" 36643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebNavigationPolicy.h" 37643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebNavigationType.h" 382daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#include "WebStorageQuotaType.h" 392daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#include "WebTextDirection.h" 40643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebURLError.h" 41643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 42643ca7872b450ea4efacab6188849e5aac2ba161Steve Blocknamespace WebKit { 43643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 44dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockclass WebApplicationCacheHost; 45dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockclass WebApplicationCacheHostClient; 46692e5dbf12901edacf14812a6fae25462920af42Steve Blockclass WebCookieJar; 47643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass WebDataSource; 48643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass WebFormElement; 49643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass WebFrame; 50643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass WebMediaPlayer; 51643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass WebMediaPlayerClient; 52643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass WebNode; 53643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass WebPlugin; 54643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass WebSecurityOrigin; 55643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass WebSharedWorker; 562daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochclass WebStorageQuotaCallbacks; 57643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass WebString; 58643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass WebURL; 59643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass WebURLRequest; 60643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass WebURLResponse; 61643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass WebWorker; 62643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass WebWorkerClient; 63643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockstruct WebPluginParams; 64643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockstruct WebRect; 65643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockstruct WebSize; 66643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockstruct WebURLError; 67643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 68643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass WebFrameClient { 69643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockpublic: 70643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Factory methods ----------------------------------------------------- 71643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 72643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // May return null. 73643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual WebPlugin* createPlugin(WebFrame*, const WebPluginParams&) { return 0; } 74643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 75643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // May return null. 76643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual WebWorker* createWorker(WebFrame*, WebWorkerClient*) { return 0; } 77643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 78643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // May return null. 79643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual WebSharedWorker* createSharedWorker(WebFrame*, const WebURL&, const WebString&, unsigned long long) { return 0; } 80643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 81643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // May return null. 82643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual WebMediaPlayer* createMediaPlayer(WebFrame*, WebMediaPlayerClient*) { return 0; } 83643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 84dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // May return null. 85dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual WebApplicationCacheHost* createApplicationCacheHost(WebFrame*, WebApplicationCacheHostClient*) { return 0; } 86dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 87692e5dbf12901edacf14812a6fae25462920af42Steve Block 88692e5dbf12901edacf14812a6fae25462920af42Steve Block // Services ------------------------------------------------------------ 89692e5dbf12901edacf14812a6fae25462920af42Steve Block 90dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // A frame specific cookie jar. May return null, in which case 91dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // WebKitClient::cookieJar() will be called to access cookies. 92f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch virtual WebCookieJar* cookieJar(WebFrame*) { return 0; } 93692e5dbf12901edacf14812a6fae25462920af42Steve Block 94643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 95643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // General notifications ----------------------------------------------- 96643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 97f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick // This frame has been detached from the view. 98f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick // 99f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick // FIXME: Do not use this in new code. Currently this is used by code in 100f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick // Chromium that errantly caches WebKit objects. 101f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick virtual void frameDetached(WebFrame*) { } 102f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick 103643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // This frame is about to be closed. 104643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void willClose(WebFrame*) { } 105643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 106d0825bca7fe65beaee391d30da42e937db621564Steve Block // Controls whether plugins are allowed for this frame. 107d0825bca7fe65beaee391d30da42e937db621564Steve Block virtual bool allowPlugins(WebFrame*, bool enabledPerSettings) { return enabledPerSettings; } 108d0825bca7fe65beaee391d30da42e937db621564Steve Block 109dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // Notifies the client that the frame would have instantiated a plug-in if plug-ins were enabled. 110dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void didNotAllowPlugins(WebFrame*) { } 111dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 112d0825bca7fe65beaee391d30da42e937db621564Steve Block // Controls whether images are allowed for this frame. 113d0825bca7fe65beaee391d30da42e937db621564Steve Block virtual bool allowImages(WebFrame*, bool enabledPerSettings) { return enabledPerSettings; } 114d0825bca7fe65beaee391d30da42e937db621564Steve Block 115ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch // Notifies the client that continuous spell checking has been enabled or 116ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch // disabled. 117ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch virtual void didToggleContinuousSpellChecking(WebFrame*) { } 118643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 119643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Load commands ------------------------------------------------------- 120643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 121643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // The client should handle the navigation externally. 122643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void loadURLExternally( 123643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebFrame*, const WebURLRequest&, WebNavigationPolicy) { } 124643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 125643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 126643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Navigational queries ------------------------------------------------ 127643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 128643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // The client may choose to alter the navigation policy. Otherwise, 129643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // defaultPolicy should just be returned. 130643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual WebNavigationPolicy decidePolicyForNavigation( 131643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebFrame*, const WebURLRequest&, WebNavigationType, 132643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const WebNode& originatingNode, 133643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebNavigationPolicy defaultPolicy, bool isRedirect) { return defaultPolicy; } 134643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 135643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Query if the specified request can be handled. 136643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual bool canHandleRequest( 137643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebFrame*, const WebURLRequest& request) { return true; } 138643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 139643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Returns an error corresponding to canHandledRequest() returning false. 140643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual WebURLError cannotHandleRequestError( 141643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebFrame*, const WebURLRequest& request) { return WebURLError(); } 142643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 143643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Returns an error corresponding to a user cancellation event. 144643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual WebURLError cancelledError( 145643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebFrame*, const WebURLRequest& request) { return WebURLError(); } 146643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 147643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Notify that a URL cannot be handled. 148643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void unableToImplementPolicyWithError( 149643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebFrame*, const WebURLError&) { } 150643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 151643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 152643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Navigational notifications ------------------------------------------ 153643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 15421939df44de1705786c545cd1bf519d47250322dBen Murdoch // A form submission has been requested, but the page's submit event handler 15521939df44de1705786c545cd1bf519d47250322dBen Murdoch // hasn't yet had a chance to run (and possibly alter/interrupt the submit.) 15621939df44de1705786c545cd1bf519d47250322dBen Murdoch virtual void willSendSubmitEvent(WebFrame*, const WebFormElement&) { } 15721939df44de1705786c545cd1bf519d47250322dBen Murdoch 158643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // A form submission is about to occur. 159643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void willSubmitForm(WebFrame*, const WebFormElement&) { } 160643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 161643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // A client-side redirect will occur. This may correspond to a <META 162643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // refresh> or some script activity. 163643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void willPerformClientRedirect( 164643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebFrame*, const WebURL& from, const WebURL& to, 165643ca7872b450ea4efacab6188849e5aac2ba161Steve Block double interval, double fireTime) { } 166643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 167643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // A client-side redirect was cancelled. 168643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void didCancelClientRedirect(WebFrame*) { } 169643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 170643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // A client-side redirect completed. 171643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void didCompleteClientRedirect(WebFrame*, const WebURL& fromURL) { } 172643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 173643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // A datasource has been created for a new navigation. The given 174643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // datasource will become the provisional datasource for the frame. 175643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void didCreateDataSource(WebFrame*, WebDataSource*) { } 176643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 177643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // A new provisional load has been started. 178643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void didStartProvisionalLoad(WebFrame*) { } 179643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 180643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // The provisional load was redirected via a HTTP 3xx response. 181643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void didReceiveServerRedirectForProvisionalLoad(WebFrame*) { } 182643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 183643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // The provisional load failed. 184643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void didFailProvisionalLoad(WebFrame*, const WebURLError&) { } 185643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 186643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Notifies the client to commit data for the given frame. The client 187643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // may optionally prevent default processing by setting preventDefault 188643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // to true before returning. If default processing is prevented, then 189643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // it is up to the client to manually call commitDocumentData on the 190643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // WebFrame. It is only valid to call commitDocumentData within a call 191643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // to didReceiveDocumentData. If commitDocumentData is not called, 192643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // then an empty document will be loaded. 193643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void didReceiveDocumentData( 194643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebFrame*, const char* data, size_t length, bool& preventDefault) { } 195643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 196643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // The provisional datasource is now committed. The first part of the 197643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // response body has been received, and the encoding of the response 198643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // body is known. 199643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void didCommitProvisionalLoad(WebFrame*, bool isNewNavigation) { } 200643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 201643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // The window object for the frame has been cleared of any extra 202643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // properties that may have been set by script from the previously 203643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // loaded document. 204643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void didClearWindowObject(WebFrame*) { } 205643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 206643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // The document element has been created. 207643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void didCreateDocumentElement(WebFrame*) { } 208643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 209643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // The page title is available. 2102daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch // FIXME: remove override once Chrome is updated to new API. 211643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void didReceiveTitle(WebFrame*, const WebString& title) { } 2122daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual void didReceiveTitle(WebFrame* frame, const WebString& title, WebTextDirection direction) 2132daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch { 2142daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch didReceiveTitle(frame, title); 2152daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch } 216643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 21721939df44de1705786c545cd1bf519d47250322dBen Murdoch // The icons for the page have changed. 21821939df44de1705786c545cd1bf519d47250322dBen Murdoch virtual void didChangeIcons(WebFrame*) { } 21921939df44de1705786c545cd1bf519d47250322dBen Murdoch 220643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // The frame's document finished loading. 221643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void didFinishDocumentLoad(WebFrame*) { } 222643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 223643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // The 'load' event was dispatched. 224643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void didHandleOnloadEvents(WebFrame*) { } 225643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 226643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // The frame's document or one of its subresources failed to load. 227643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void didFailLoad(WebFrame*, const WebURLError&) { } 228643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 229643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // The frame's document and all of its subresources succeeded to load. 230643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void didFinishLoad(WebFrame*) { } 231643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 232dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // The navigation resulted in no change to the documents within the page. 233dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // For example, the navigation may have just resulted in scrolling to a 234dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // named anchor or a PopState event may have been dispatched. 235dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void didNavigateWithinPage(WebFrame*, bool isNewNavigation) { } 236dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 237643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // The navigation resulted in scrolling the page to a named anchor instead 238643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // of downloading a new document. 239dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void didChangeLocationWithinPage(WebFrame*) { } 240643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 241643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Called upon update to scroll position, document state, and other 242643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // non-navigational events related to the data held by WebHistoryItem. 243643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // WARNING: This method may be called very frequently. 244643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void didUpdateCurrentHistoryItem(WebFrame*) { } 245643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 246643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 247643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Low-level resource notifications ------------------------------------ 248643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 249643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // An identifier was assigned to the specified request. The client 250643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // should remember this association if interested in subsequent events. 251643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void assignIdentifierToRequest( 252643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebFrame*, unsigned identifier, const WebURLRequest&) { } 253643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 25428040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu // Remove the association between an identifier assigned to a request if 25528040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu // the client keeps such an association. 25628040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu virtual void removeIdentifierForRequest(unsigned identifier) { } 25728040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu 258643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // A request is about to be sent out, and the client may modify it. Request 259643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // is writable, and changes to the URL, for example, will change the request 260643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // made. If this request is the result of a redirect, then redirectResponse 261643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // will be non-null and contain the response that triggered the redirect. 262643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void willSendRequest( 263643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebFrame*, unsigned identifier, WebURLRequest&, 264643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const WebURLResponse& redirectResponse) { } 265643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 266643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Response headers have been received for the resource request given 267643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // by identifier. 268643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void didReceiveResponse( 269643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebFrame*, unsigned identifier, const WebURLResponse&) { } 270643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 271643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // The resource request given by identifier succeeded. 272643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void didFinishResourceLoad( 273643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebFrame*, unsigned identifier) { } 274643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 275643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // The resource request given by identifier failed. 276643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void didFailResourceLoad( 277643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebFrame*, unsigned identifier, const WebURLError&) { } 278643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 279643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // The specified request was satified from WebCore's memory cache. 280643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void didLoadResourceFromMemoryCache( 281643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebFrame*, const WebURLRequest&, const WebURLResponse&) { } 282643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 283643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // This frame has displayed inactive content (such as an image) from an 284643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // insecure source. Inactive content cannot spread to other frames. 285643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void didDisplayInsecureContent(WebFrame*) { } 286643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 287643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // The indicated security origin has run active content (such as a 288643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // script) from an insecure source. Note that the insecure content can 289643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // spread to other frames in the same origin. 2902fc2651226baac27029e38c9d6ef883fa32084dbSteve Block virtual void didRunInsecureContent(WebFrame*, const WebSecurityOrigin&, const WebURL& insecureURL) { } 291643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 292643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 293643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Script notifications ------------------------------------------------ 294643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 295643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Controls whether scripts are allowed to execute for this frame. 296643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual bool allowScript(WebFrame*, bool enabledPerSettings) { return enabledPerSettings; } 297643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 298dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // Controls whether access to Web Databases is allowed for this frame. 299dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual bool allowDatabase(WebFrame*, const WebString& name, const WebString& displayName, unsigned long estimatedSize) { return true; } 300dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 301dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // Notifies the client that the frame would have executed script if script were enabled. 302dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void didNotAllowScript(WebFrame*) { } 303dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 304643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Script in the page tried to allocate too much memory. 305643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void didExhaustMemoryAvailableForScript(WebFrame*) { } 306643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 307643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Notifies that a new script context has been created for this frame. 308643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // This is similar to didClearWindowObject but only called once per 309643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // frame context. 310643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void didCreateScriptContext(WebFrame*) { } 311643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 312643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Notifies that this frame's script context has been destroyed. 313643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void didDestroyScriptContext(WebFrame*) { } 314643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 315643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Notifies that a garbage-collected context was created - content 316643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // scripts. 317643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void didCreateIsolatedScriptContext(WebFrame*) { } 318643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 319bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen // Controls whether the given script extension should run in a new script 320bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen // context in this frame. If extensionGroup is 0, the script context is the 321bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen // frame's main context. Otherwise, it is a context created by 322bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen // WebFrame::executeScriptInIsolatedWorld with that same extensionGroup 323bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen // value. 324bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen virtual bool allowScriptExtension(WebFrame*, const WebString& extensionName, int extensionGroup) { return true; } 325bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen 326643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 327643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Geometry notifications ---------------------------------------------- 328643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 32921939df44de1705786c545cd1bf519d47250322dBen Murdoch // The frame's document finished the initial layout of a page. 33021939df44de1705786c545cd1bf519d47250322dBen Murdoch virtual void didFirstLayout(WebFrame*) { } 33121939df44de1705786c545cd1bf519d47250322dBen Murdoch 33221939df44de1705786c545cd1bf519d47250322dBen Murdoch // The frame's document finished the initial non-empty layout of a page. 33321939df44de1705786c545cd1bf519d47250322dBen Murdoch virtual void didFirstVisuallyNonEmptyLayout(WebFrame*) { } 33421939df44de1705786c545cd1bf519d47250322dBen Murdoch 335643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // The size of the content area changed. 336643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void didChangeContentsSize(WebFrame*, const WebSize&) { } 337643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 338643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // The main frame scrolled. 339643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void didChangeScrollOffset(WebFrame*) { } 340643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 341643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 342643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Find-in-page notifications ------------------------------------------ 343643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 344643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Notifies how many matches have been found so far, for a given 345643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // identifier. |finalUpdate| specifies whether this is the last update 346643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // (all frames have completed scoping). 347643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void reportFindInPageMatchCount( 348643ca7872b450ea4efacab6188849e5aac2ba161Steve Block int identifier, int count, bool finalUpdate) { } 349643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 350643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Notifies what tick-mark rect is currently selected. The given 351643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // identifier lets the client know which request this message belongs 352643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // to, so that it can choose to ignore the message if it has moved on 353643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // to other things. The selection rect is expected to have coordinates 354643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // relative to the top left corner of the web page area and represent 355643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // where on the screen the selection rect is currently located. 356643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void reportFindInPageSelection( 357643ca7872b450ea4efacab6188849e5aac2ba161Steve Block int identifier, int activeMatchOrdinal, const WebRect& selection) { } 358643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 359e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block // FileSystem ---------------------------------------------------- 360e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block 361e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block // Requests to open a FileSystem. 362e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block // |size| indicates how much storage space (in bytes) the caller expects 363e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block // to need. 364e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block // WebFileSystemCallbacks::didOpenFileSystem() must be called with 365e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block // a name and root path for the requested FileSystem when the operation 366e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block // is completed successfully. WebFileSystemCallbacks::didFail() must be 367a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch // called otherwise. The create bool is for indicating whether or not to 368a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch // create root path for file systems if it do not exist. 369a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch virtual void openFileSystem( 370a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch WebFrame*, WebFileSystem::Type, long long size, 371a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch bool create, WebFileSystemCallbacks*) { } 372a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 3732daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch // Quota --------------------------------------------------------- 3742daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 3752daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch // Queries the origin's storage usage and quota information. 3762daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch // WebStorageQuotaCallbacks::didQueryStorageUsageAndQuota will be called 3772daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch // with the current usage and quota information for the origin. When 3782daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch // an error occurs WebStorageQuotaCallbacks::didFail is called with an 3792daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch // error code. 3802daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch // The callbacks object is deleted when the callback method is called 3812daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch // and does not need to be (and should not be) deleted manually. 3822daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual void queryStorageUsageAndQuota( 3832daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch WebFrame*, WebStorageQuotaType, WebStorageQuotaCallbacks*) { } 3842daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 3852daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch // Requests a new quota size for the origin's storage. 3862daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch // |newQuotaInBytes| indicates how much storage space (in bytes) the 3872daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch // caller expects to need. 3882daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch // WebStorageQuotaCallbacks::didGrantStorageQuota will be called when 3892daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch // a new quota is granted. WebStorageQuotaCallbacks::didFail 3902daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch // is called with an error code otherwise. 3912daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch // Note that the requesting quota size may not always be granted and 3922daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch // a smaller amount of quota than requested might be returned. 3932daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch // The callbacks object is deleted when the callback method is called 3942daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch // and does not need to be (and should not be) deleted manually. 3952daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual void requestStorageQuota( 3962daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch WebFrame*, WebStorageQuotaType, 3972daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch unsigned long long newQuotaInBytes, 3982daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch WebStorageQuotaCallbacks*) { } 3992daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 400643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockprotected: 401643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ~WebFrameClient() { } 402643ca7872b450ea4efacab6188849e5aac2ba161Steve Block}; 403643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 404643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} // namespace WebKit 405643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 406643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#endif 407