WebCoreFrameBridge.h revision 334e51bc2ff9bf7fc55fa67dc8a6d9257501a32e
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" 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "WebCoreRefObject.h" 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <jni.h> 3580e68b43c3da64848db8edc7d8e8fe095888e42eAndrei Popescu#include <wtf/RefCounted.h> 368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class HistoryItem; 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class Image; 408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class Page; 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class RenderPart; 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class ResourceHandle; 4380e68b43c3da64848db8edc7d8e8fe095888e42eAndrei Popescu class ResourceLoaderAndroid; 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class ResourceRequest; 458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace android { 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass WebViewCore; 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// one instance of WebFrame per Page for calling into Java's BrowserFrame 528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass WebFrame : public WebCoreRefObject { 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project public: 548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebFrame(JNIEnv* env, jobject obj, jobject historyList, WebCore::Page* page); 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ~WebFrame(); 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // helper function 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project static WebFrame* getWebFrame(const WebCore::Frame* frame); 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6080e68b43c3da64848db8edc7d8e8fe095888e42eAndrei Popescu virtual PassRefPtr<WebCore::ResourceLoaderAndroid> startLoadingResource(WebCore::ResourceHandle*, 61f686b999eec21154e6559605a28d87ec35f2a5dfPatrick Scott const WebCore::ResourceRequest& request, bool mainResource, 628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool synchronous); 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void reportError(int errorCode, const WebCore::String& description, 658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project const WebCore::String& failingUrl); 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void loadStarted(WebCore::Frame* frame); 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void transitionToCommitted(WebCore::Frame* frame); 708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void didFinishLoad(WebCore::Frame* frame); 728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void addHistoryItem(WebCore::HistoryItem* item); 748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void removeHistoryItem(int index); 768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void updateHistoryIndex(int newIndex); 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void setTitle(const WebCore::String& title); 808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void windowObjectCleared(WebCore::Frame* frame); 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void setProgress(float newProgress); 848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project const WebCore::String userAgentForURL(const WebCore::KURL* url); 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void didReceiveIcon(WebCore::Image* icon); 88f1c0bbb9bf698154c206e842f94b72d277a96094Patrick Scott 89c6fbc06882c120f5f51090203775eb0421550d13Patrick Scott void didReceiveTouchIconURL(const WebCore::String& url, bool precomposed); 908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void updateVisitedHistory(const WebCore::KURL& url, bool reload); 928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool canHandleRequest(const WebCore::ResourceRequest& request); 948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebCore::Frame* createWindow(bool dialog, bool userGesture); 968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void requestFocus() const; 988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void closeWindow(WebViewCore* webViewCore); 1008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void decidePolicyForFormResubmission(WebCore::FramePolicyFunction func); 1028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void setUserAgent(WebCore::String userAgent) { mUserAgent = userAgent; } 1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 105334e51bc2ff9bf7fc55fa67dc8a6d9257501a32eLeon Scroggins WebCore::String getRawResourceFilename(WebCore::PlatformBridge::rawResId) const; 1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 107f10585d69aaccf4c1b021df143ee0f08e338cf31Grace Kloba float density() const; 108f10585d69aaccf4c1b021df143ee0f08e338cf31Grace Kloba 1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /** 1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * When the user initiates a click (via trackball, enter-press, or touch), 1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * we set mUserInitiatedClick to true. If a load happens due to this click, 1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * then we ask the application if it wants to override 1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the load. Otherwise, we attempt to load the resource internally. 1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * We also check it to determine whether or not to allow webkit to request 1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * a scroll. If it was user initated, the scroll is allowed. 1168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void setUserInitiatedClick(bool userInitiatedClick) { mUserInitiatedClick = userInitiatedClick; } 1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool userInitiatedClick() { return mUserInitiatedClick; } 1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebCore::Page* page() const { return mPage; } 1228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprivate: 1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project struct JavaBrowserFrame; 1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project JavaBrowserFrame* mJavaFrame; 1268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebCore::Page* mPage; 1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebCore::String mUserAgent; 1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool mUserInitiatedClick; 1298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 1308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace android 1328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // WEBFRAME_H 134