WebCoreFrameBridge.h revision 3d1195ca6a380e5af16e3a505a007369cf18a4db
18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright 2006, The Android Open Source Project 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met: 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * * Redistributions of source code must retain the above copyright 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer. 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * * Redistributions in binary form must reproduce the above copyright 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer in the 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * documentation and/or other materials provided with the distribution. 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 163298a7d84b96ade73c6b170671711a8f2792ae59Steve Block * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// TODO: change name to WebFrame.h 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 283d1195ca6a380e5af16e3a505a007369cf18a4dbSteve Block#ifndef WebCoreFrameBridge_h 293d1195ca6a380e5af16e3a505a007369cf18a4dbSteve Block#define WebCoreFrameBridge_h 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "FrameLoaderClient.h" 32334e51bc2ff9bf7fc55fa67dc8a6d9257501a32eLeon Scroggins#include "PlatformBridge.h" 3345b64f60af3cbfa8c78388e35e9b669a0c284bdcBen Murdoch#include "PlatformString.h" 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "WebCoreRefObject.h" 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <jni.h> 36d4ff0cc91b5eb975d563f355f9f4c7358e0e2c06Iain Merrick#include <string> 3780e68b43c3da64848db8edc7d8e8fe095888e42eAndrei Popescu#include <wtf/RefCounted.h> 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 40e14e4cb809c2afcf51cce7775514d5e7820824f0Leon Scroggins class HTMLFormElement; 4120b3d204269f6c234d3f154a074f351565aa67b3Iain Merrick class Frame; 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class HistoryItem; 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class Image; 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class Page; 458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class RenderPart; 464de82d04a6a82fee6e2d924768e88af58e966982Leon Scroggins class RenderSkinAndroid; 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class ResourceHandle; 4880e68b43c3da64848db8edc7d8e8fe095888e42eAndrei Popescu class ResourceLoaderAndroid; 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class ResourceRequest; 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace android { 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass WebViewCore; 55d4ff0cc91b5eb975d563f355f9f4c7358e0e2c06Iain Merrickclass WebUrlLoaderClient; 56ff1576a1bd6302d6c9988912d17e47f325242574Patrick Scottclass UrlInterceptResponse; 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// one instance of WebFrame per Page for calling into Java's BrowserFrame 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass WebFrame : public WebCoreRefObject { 608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project public: 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebFrame(JNIEnv* env, jobject obj, jobject historyList, WebCore::Page* page); 628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ~WebFrame(); 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // helper function 658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project static WebFrame* getWebFrame(const WebCore::Frame* frame); 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6780e68b43c3da64848db8edc7d8e8fe095888e42eAndrei Popescu virtual PassRefPtr<WebCore::ResourceLoaderAndroid> startLoadingResource(WebCore::ResourceHandle*, 68f686b999eec21154e6559605a28d87ec35f2a5dfPatrick Scott const WebCore::ResourceRequest& request, bool mainResource, 698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool synchronous); 708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 71ff1576a1bd6302d6c9988912d17e47f325242574Patrick Scott UrlInterceptResponse* shouldInterceptRequest(const WTF::String& url); 72ff1576a1bd6302d6c9988912d17e47f325242574Patrick Scott 7345b64f60af3cbfa8c78388e35e9b669a0c284bdcBen Murdoch void reportError(int errorCode, const WTF::String& description, 7445b64f60af3cbfa8c78388e35e9b669a0c284bdcBen Murdoch const WTF::String& failingUrl); 758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void loadStarted(WebCore::Frame* frame); 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void transitionToCommitted(WebCore::Frame* frame); 798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void didFinishLoad(WebCore::Frame* frame); 818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void addHistoryItem(WebCore::HistoryItem* item); 838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void removeHistoryItem(int index); 858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void updateHistoryIndex(int newIndex); 878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 8845b64f60af3cbfa8c78388e35e9b669a0c284bdcBen Murdoch void setTitle(const WTF::String& title); 898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void windowObjectCleared(WebCore::Frame* frame); 918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 9245b64f60af3cbfa8c78388e35e9b669a0c284bdcBen Murdoch void setProgress(float newProgress); 938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 9445b64f60af3cbfa8c78388e35e9b669a0c284bdcBen Murdoch const WTF::String userAgentForURL(const WebCore::KURL* url); 958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void didReceiveIcon(WebCore::Image* icon); 97f1c0bbb9bf698154c206e842f94b72d277a96094Patrick Scott 9845b64f60af3cbfa8c78388e35e9b669a0c284bdcBen Murdoch void didReceiveTouchIconURL(const WTF::String& url, bool precomposed); 998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void updateVisitedHistory(const WebCore::KURL& url, bool reload); 1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool canHandleRequest(const WebCore::ResourceRequest& request); 1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebCore::Frame* createWindow(bool dialog, bool userGesture); 1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void requestFocus() const; 1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void closeWindow(WebViewCore* webViewCore); 1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void decidePolicyForFormResubmission(WebCore::FramePolicyFunction func); 1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 11245b64f60af3cbfa8c78388e35e9b669a0c284bdcBen Murdoch void setUserAgent(WTF::String userAgent) { mUserAgent = userAgent; } 1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 11445b64f60af3cbfa8c78388e35e9b669a0c284bdcBen Murdoch WTF::String getRawResourceFilename(WebCore::PlatformBridge::rawResId) const; 1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 116f10585d69aaccf4c1b021df143ee0f08e338cf31Grace Kloba float density() const; 117f10585d69aaccf4c1b021df143ee0f08e338cf31Grace Kloba 118d4ff0cc91b5eb975d563f355f9f4c7358e0e2c06Iain Merrick void didReceiveAuthenticationChallenge(WebUrlLoaderClient*, const std::string& host, const std::string& realm, bool useCachedCredentials); 119d4ff0cc91b5eb975d563f355f9f4c7358e0e2c06Iain Merrick 1201f9212cd9a5e957562b12e8c3294b7f357fa1f85Huahui Wu void reportSslCertError(WebUrlLoaderClient* client, int cert_error, const std::string& cert); 1211f9212cd9a5e957562b12e8c3294b7f357fa1f85Huahui Wu 122583f3b2e7b569ec9f88e9c481db1eb86a8c0224bIain Merrick void downloadStart(const std::string& url, const std::string& userAgent, const std::string& contentDisposition, const std::string& mimetype, long long contentLength); 123583f3b2e7b569ec9f88e9c481db1eb86a8c0224bIain Merrick 1248576680967155ccad63175f913367b0682c8d43eHuahui Wu void didReceiveData(const char* data, int size); 1258576680967155ccad63175f913367b0682c8d43eHuahui Wu 1268576680967155ccad63175f913367b0682c8d43eHuahui Wu void didFinishLoading(); 1278576680967155ccad63175f913367b0682c8d43eHuahui Wu 12820b3d204269f6c234d3f154a074f351565aa67b3Iain Merrick void maybeSavePassword(WebCore::Frame* frame, const WebCore::ResourceRequest& request); 12920b3d204269f6c234d3f154a074f351565aa67b3Iain Merrick 130d7e43d41b288f6bec8d577c6fe45994d3900e5a8Huahui Wu void setCertificate(const std::string& cert); 131e777e7663bb6cecc72754dbf56e068f5b6ea30d5Iain Merrick 1321ea5918bb6b1e9785844a506d6273b9a4520d520Patrick Scott // Parse the x-auto-login header and propagate the parameters to the 1331ea5918bb6b1e9785844a506d6273b9a4520d520Patrick Scott // application. 1341ea5918bb6b1e9785844a506d6273b9a4520d520Patrick Scott void autoLogin(const std::string& loginHeader); 1351ea5918bb6b1e9785844a506d6273b9a4520d520Patrick Scott 1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /** 13708c14f1deb3d7dc096fd06973ced1403df506a77Leon Scroggins * When the user initiates a click, we set mUserInitiatedAction to true. 13808c14f1deb3d7dc096fd06973ced1403df506a77Leon Scroggins * If a load happens due to this click, then we ask the application if it wants 13908c14f1deb3d7dc096fd06973ced1403df506a77Leon Scroggins * to override the load. Otherwise, we attempt to load the resource internally. 1408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 1413e63d9b33b753ca86d0765d1b3d711114ba9e34fLeon Scroggins void setUserInitiatedAction(bool userInitiatedAction) { mUserInitiatedAction = userInitiatedAction; } 1428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebCore::Page* page() const { return mPage; } 1448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 145f69429a9e93ec4396c01fe27171bcefd4d238342Patrick Scott // Currently used only by the chrome net stack. A similar field is used by 146f69429a9e93ec4396c01fe27171bcefd4d238342Patrick Scott // FrameLoader.java to block java network loads. 147f69429a9e93ec4396c01fe27171bcefd4d238342Patrick Scott void setBlockNetworkLoads(bool block) { mBlockNetworkLoads = block; } 148f69429a9e93ec4396c01fe27171bcefd4d238342Patrick Scott bool blockNetworkLoads() const { return mBlockNetworkLoads; } 149f69429a9e93ec4396c01fe27171bcefd4d238342Patrick Scott 15020b3d204269f6c234d3f154a074f351565aa67b3Iain Merrick /** 15120b3d204269f6c234d3f154a074f351565aa67b3Iain Merrick * Helper methods. These are typically chunks of code that are called in 15220b3d204269f6c234d3f154a074f351565aa67b3Iain Merrick * slightly different ways by the Apache and Chrome HTTP stacks. 15320b3d204269f6c234d3f154a074f351565aa67b3Iain Merrick */ 15420b3d204269f6c234d3f154a074f351565aa67b3Iain Merrick bool getUsernamePasswordFromDom(WebCore::Frame* frame, WTF::String& username, WTF::String& password); 15520b3d204269f6c234d3f154a074f351565aa67b3Iain Merrick jbyteArray getPostData(const WebCore::ResourceRequest& request); 15620b3d204269f6c234d3f154a074f351565aa67b3Iain Merrick 157e14e4cb809c2afcf51cce7775514d5e7820824f0Leon Scroggins bool shouldSaveFormData(); 158e14e4cb809c2afcf51cce7775514d5e7820824f0Leon Scroggins void saveFormData(WebCore::HTMLFormElement*); 1594de82d04a6a82fee6e2d924768e88af58e966982Leon Scroggins const WebCore::RenderSkinAndroid* renderSkins() const { return m_renderSkins; } 1604de82d04a6a82fee6e2d924768e88af58e966982Leon Scroggins void setRenderSkins(const WebCore::RenderSkinAndroid* skins) { m_renderSkins = skins; } 1618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprivate: 1628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project struct JavaBrowserFrame; 1638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project JavaBrowserFrame* mJavaFrame; 1648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebCore::Page* mPage; 16545b64f60af3cbfa8c78388e35e9b669a0c284bdcBen Murdoch WTF::String mUserAgent; 166f69429a9e93ec4396c01fe27171bcefd4d238342Patrick Scott bool mBlockNetworkLoads; 1673e63d9b33b753ca86d0765d1b3d711114ba9e34fLeon Scroggins bool mUserInitiatedAction; 1684de82d04a6a82fee6e2d924768e88af58e966982Leon Scroggins const WebCore::RenderSkinAndroid* m_renderSkins; 1698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 1708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace android 1728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1733d1195ca6a380e5af16e3a505a007369cf18a4dbSteve Block#endif // WebCoreFrameBridge_h 174