WebCoreFrameBridge.h revision d4ff0cc91b5eb975d563f355f9f4c7358e0e2c06
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 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef WEBFRAME_H 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define WEBFRAME_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 { 408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class HistoryItem; 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class Image; 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class Page; 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class RenderPart; 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class ResourceHandle; 4580e68b43c3da64848db8edc7d8e8fe095888e42eAndrei Popescu class ResourceLoaderAndroid; 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class ResourceRequest; 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace android { 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass WebViewCore; 52d4ff0cc91b5eb975d563f355f9f4c7358e0e2c06Iain Merrickclass WebUrlLoaderClient; 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// one instance of WebFrame per Page for calling into Java's BrowserFrame 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass WebFrame : public WebCoreRefObject { 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project public: 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebFrame(JNIEnv* env, jobject obj, jobject historyList, WebCore::Page* page); 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ~WebFrame(); 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // helper function 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project static WebFrame* getWebFrame(const WebCore::Frame* frame); 628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 63021eb475906bf08d90d93e6a3434fe2439e42cf0Kristian Monsen int inputStreamForAndroidResource(const char* url, int type); 64021eb475906bf08d90d93e6a3434fe2439e42cf0Kristian Monsen 6580e68b43c3da64848db8edc7d8e8fe095888e42eAndrei Popescu virtual PassRefPtr<WebCore::ResourceLoaderAndroid> startLoadingResource(WebCore::ResourceHandle*, 66f686b999eec21154e6559605a28d87ec35f2a5dfPatrick Scott const WebCore::ResourceRequest& request, bool mainResource, 678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool synchronous); 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6945b64f60af3cbfa8c78388e35e9b669a0c284bdcBen Murdoch void reportError(int errorCode, const WTF::String& description, 7045b64f60af3cbfa8c78388e35e9b669a0c284bdcBen Murdoch const WTF::String& failingUrl); 718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void loadStarted(WebCore::Frame* frame); 738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void transitionToCommitted(WebCore::Frame* frame); 758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void didFinishLoad(WebCore::Frame* frame); 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void addHistoryItem(WebCore::HistoryItem* item); 798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void removeHistoryItem(int index); 818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void updateHistoryIndex(int newIndex); 838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 8445b64f60af3cbfa8c78388e35e9b669a0c284bdcBen Murdoch void setTitle(const WTF::String& title); 858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void windowObjectCleared(WebCore::Frame* frame); 878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 8845b64f60af3cbfa8c78388e35e9b669a0c284bdcBen Murdoch void setProgress(float newProgress); 898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 9045b64f60af3cbfa8c78388e35e9b669a0c284bdcBen Murdoch const WTF::String userAgentForURL(const WebCore::KURL* url); 918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void didReceiveIcon(WebCore::Image* icon); 93f1c0bbb9bf698154c206e842f94b72d277a96094Patrick Scott 9445b64f60af3cbfa8c78388e35e9b669a0c284bdcBen Murdoch void didReceiveTouchIconURL(const WTF::String& url, bool precomposed); 958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void updateVisitedHistory(const WebCore::KURL& url, bool reload); 978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool canHandleRequest(const WebCore::ResourceRequest& request); 998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebCore::Frame* createWindow(bool dialog, bool userGesture); 1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void requestFocus() const; 1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void closeWindow(WebViewCore* webViewCore); 1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void decidePolicyForFormResubmission(WebCore::FramePolicyFunction func); 1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 10845b64f60af3cbfa8c78388e35e9b669a0c284bdcBen Murdoch void setUserAgent(WTF::String userAgent) { mUserAgent = userAgent; } 1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 11045b64f60af3cbfa8c78388e35e9b669a0c284bdcBen Murdoch WTF::String getRawResourceFilename(WebCore::PlatformBridge::rawResId) const; 1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 112f10585d69aaccf4c1b021df143ee0f08e338cf31Grace Kloba float density() const; 113f10585d69aaccf4c1b021df143ee0f08e338cf31Grace Kloba 114d4ff0cc91b5eb975d563f355f9f4c7358e0e2c06Iain Merrick void didReceiveAuthenticationChallenge(WebUrlLoaderClient*, const std::string& host, const std::string& realm, bool useCachedCredentials); 115d4ff0cc91b5eb975d563f355f9f4c7358e0e2c06Iain Merrick 1168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /** 1173e63d9b33b753ca86d0765d1b3d711114ba9e34fLeon Scroggins * When the user initiates an action (via trackball, key-press, or touch), 1183e63d9b33b753ca86d0765d1b3d711114ba9e34fLeon Scroggins * we set mUserInitiatedAction to true. If a load happens due to this click, 1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * then we ask the application if it wants to override 1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the load. Otherwise, we attempt to load the resource internally. 1218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * We also check it to determine whether or not to allow webkit to request 1228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * a scroll. If it was user initated, the scroll is allowed. 1238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 1243e63d9b33b753ca86d0765d1b3d711114ba9e34fLeon Scroggins void setUserInitiatedAction(bool userInitiatedAction) { mUserInitiatedAction = userInitiatedAction; } 1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1263e63d9b33b753ca86d0765d1b3d711114ba9e34fLeon Scroggins bool userInitiatedAction() { return mUserInitiatedAction; } 1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebCore::Page* page() const { return mPage; } 1298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprivate: 1318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project struct JavaBrowserFrame; 1328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project JavaBrowserFrame* mJavaFrame; 1338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebCore::Page* mPage; 13445b64f60af3cbfa8c78388e35e9b669a0c284bdcBen Murdoch WTF::String mUserAgent; 1353e63d9b33b753ca86d0765d1b3d711114ba9e34fLeon Scroggins bool mUserInitiatedAction; 1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 1378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace android 1398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // WEBFRAME_H 141