aw_contents.h revision 68043e1e95eeb07d5cae7aca370b26518b0867d6
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef ANDROID_WEBVIEW_NATIVE_AW_CONTENTS_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ANDROID_WEBVIEW_NATIVE_AW_CONTENTS_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <jni.h> 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <list> 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <utility> 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "android_webview/browser/browser_view_renderer.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "android_webview/browser/find_helper.h" 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "android_webview/browser/icon_helper.h" 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "android_webview/browser/renderer_host/aw_render_view_host_ext.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/android/scoped_java_ref.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/android/jni_helper.h" 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/callback_forward.h" 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class SkBitmap; 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TabContents; 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content { 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebContents; 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace android_webview { 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class AwContentsContainer; 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class AwContentsClientBridge; 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class AwWebContentsDelegate; 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Native side of java-class of same name. 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Provides the ownership of and access to browser components required for 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// WebView functionality; analogous to chrome's TabContents, but with a 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// level of indirection provided by the AwContentsContainer abstraction. 397d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// 407d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// Object lifetime: 417d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// For most purposes the java and native objects can be considered to have 427d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// 1:1 lifetime and relationship. The exception is the java instance that 437d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// hosts a popup will be rebound to a second native instance (carrying the 447d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// popup content) and discard the 'default' native instance it made on 457d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// construction. A native instance is only bound to at most one Java peer over 467d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// its entire lifetime - see Init() and SetPendingWebContentsForPopup() for the 477d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// construction points, and SetJavaPeers() where these paths join. 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class AwContents : public FindHelper::Listener, 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public IconHelper::Listener, 50b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) public AwRenderViewHostExtClient, 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public BrowserViewRenderer::Client { 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the AwContents instance associated with |web_contents|, or NULL. 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static AwContents* FromWebContents(content::WebContents* web_contents); 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Returns the AwContents instance associated with with the given 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // render_process_id and render_view_id, or NULL. 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static AwContents* FromID(int render_process_id, int render_view_id); 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 607d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) AwContents(scoped_ptr<content::WebContents> web_contents); 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~AwContents(); 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AwRenderViewHostExt* render_view_host_ext() { 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return render_view_host_ext_.get(); 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // |handler| is an instance of 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // org.chromium.android_webview.AwHttpAuthHandler. 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool OnReceivedHttpAuthRequest(const base::android::JavaRef<jobject>& handler, 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& host, 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& realm); 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Methods called from Java. 747d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) void SetJavaPeers(JNIEnv* env, 757d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) jobject obj, 767d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) jobject aw_contents, 777d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) jobject web_contents_delegate, 787d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) jobject contents_client_bridge, 797d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) jobject io_thread_client, 807d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) jobject intercept_navigation_delegate); 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) jint GetWebContents(JNIEnv* env, jobject obj); 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) jint GetAwContentsClientBridge(JNIEnv* env, jobject obj); 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void Destroy(JNIEnv* env, jobject obj); 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void DocumentHasImages(JNIEnv* env, jobject obj, jobject message); 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void GenerateMHTML(JNIEnv* env, jobject obj, jstring jpath, jobject callback); 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void AddVisitedLinks(JNIEnv* env, jobject obj, jobjectArray jvisited_links); 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::android::ScopedJavaLocalRef<jbyteArray> GetCertificate( 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) JNIEnv* env, jobject obj); 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void RequestNewHitTestDataAt(JNIEnv* env, jobject obj, jint x, jint y); 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void UpdateLastHitTestData(JNIEnv* env, jobject obj); 922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnSizeChanged(JNIEnv* env, jobject obj, int w, int h, int ow, int oh); 933551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) void SetViewVisibility(JNIEnv* env, jobject obj, bool visible); 943551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) void SetWindowVisibility(JNIEnv* env, jobject obj, bool visible); 953551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) void SetIsPaused(JNIEnv* env, jobject obj, bool paused); 962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnAttachedToWindow(JNIEnv* env, jobject obj, int w, int h); 972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnDetachedFromWindow(JNIEnv* env, jobject obj); 982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::android::ScopedJavaLocalRef<jbyteArray> GetOpaqueState( 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) JNIEnv* env, jobject obj); 1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) jboolean RestoreFromOpaqueState(JNIEnv* env, jobject obj, jbyteArray state); 1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void FocusFirstNode(JNIEnv* env, jobject obj); 102a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch void SetBackgroundColor(JNIEnv* env, jobject obj, jint color); 1037d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) bool OnDraw(JNIEnv* env, 1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) jobject obj, 1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) jobject canvas, 1067d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) jboolean is_hardware_accelerated, 1077d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) jint scroll_x, 1087d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) jint scroll_y, 1097d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) jint clip_left, 1107d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) jint clip_top, 1117d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) jint clip_right, 112a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) jint clip_bottom); 113a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) void SetGlobalVisibleRect(JNIEnv* env, 114a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) jobject obj, 115a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) jint visible_left, 116a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) jint visible_top, 117a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) jint visible_right, 118a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) jint visible_bottom); 1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) jint GetAwDrawGLViewContext(JNIEnv* env, jobject obj); 120ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch jint CapturePicture(JNIEnv* env, jobject obj, int width, int height); 121558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch void EnableOnNewPicture(JNIEnv* env, jobject obj, jboolean enabled); 1222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Geolocation API support 1242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void ShowGeolocationPrompt(const GURL& origin, base::Callback<void(bool)>); 1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void HideGeolocationPrompt(const GURL& origin); 1262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void InvokeGeolocationCallback(JNIEnv* env, 1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) jobject obj, 1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) jboolean value, 1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) jstring origin); 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Find-in-page API and related methods. 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void FindAllAsync(JNIEnv* env, jobject obj, jstring search_string); 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void FindNext(JNIEnv* env, jobject obj, jboolean forward); 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ClearMatches(JNIEnv* env, jobject obj); 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FindHelper* GetFindHelper(); 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // FindHelper::Listener implementation. 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnFindResultReceived(int active_ordinal, 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int match_count, 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool finished) OVERRIDE; 1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // IconHelper::Listener implementation. 142ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch virtual void OnReceivedIcon(const GURL& icon_url, 143ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch const SkBitmap& bitmap) OVERRIDE; 1442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void OnReceivedTouchIconUrl(const std::string& url, 1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const bool precomposed) OVERRIDE; 1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 147b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) // AwRenderViewHostExtClient implementation. 1487dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch virtual void OnWebLayoutPageScaleFactorChanged( 1497dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch float page_scale_factor) OVERRIDE; 150d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) virtual void OnWebLayoutContentsSizeChanged( 151d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) const gfx::Size& contents_size) OVERRIDE; 152b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 1532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // BrowserViewRenderer::Client implementation. 1547d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) virtual bool RequestDrawGL(jobject canvas) OVERRIDE; 1557d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) virtual void PostInvalidate() OVERRIDE; 156a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) virtual void UpdateGlobalVisibleRect() OVERRIDE; 157b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) virtual void OnNewPicture() OVERRIDE; 1582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual gfx::Point GetLocationOnScreen() OVERRIDE; 15968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual void SetMaxContainerViewScrollOffset( 16068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) gfx::Vector2d new_value) OVERRIDE; 161eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void ScrollContainerViewTo(gfx::Vector2d new_value) OVERRIDE; 16268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual void SetPageScaleFactor(float page_scale_factor) OVERRIDE; 16368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual void SetContentsSize(gfx::SizeF contents_size_dip) OVERRIDE; 1647dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch virtual void DidOverscroll(gfx::Vector2d overscroll_delta) OVERRIDE; 1652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void ClearCache(JNIEnv* env, jobject obj, jboolean include_disk_files); 1672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void SetPendingWebContentsForPopup(scoped_ptr<content::WebContents> pending); 1687d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) jint ReleasePopupAwContents(JNIEnv* env, jobject obj); 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) void ScrollTo(JNIEnv* env, jobject obj, jint x, jint y); 171d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) void SetDipScale(JNIEnv* env, jobject obj, jfloat dip_scale); 172d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) void SetFixedLayoutSize(JNIEnv* env, 173d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) jobject obj, 174d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) jint width_dip, 175d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) jint height_dip); 17690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) void SetSaveFormData(bool enabled); 17790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 178eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Sets the java delegate 179eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void SetAwAutofillManagerDelegate(jobject delegate); 180424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 181424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) void SetJsOnlineProperty(JNIEnv* env, jobject obj, jboolean network_up); 182424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 18490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) void InitAutofillIfNecessary(bool enabled); 18558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) void SetAndroidWebViewRendererPrefs(); 1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) JavaObjectWeakGlobalRef java_ref_; 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<content::WebContents> web_contents_; 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<AwWebContentsDelegate> web_contents_delegate_; 1902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<AwContentsClientBridge> contents_client_bridge_; 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<AwRenderViewHostExt> render_view_host_ext_; 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<FindHelper> find_helper_; 1932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<IconHelper> icon_helper_; 1947d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) scoped_ptr<AwContents> pending_contents_; 1952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<BrowserViewRenderer> browser_view_renderer_; 1962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // GURL is supplied by the content layer as requesting frame. 1982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Callback is supplied by the content layer, and is invoked with the result 1992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // from the permission prompt. 2002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) typedef std::pair<const GURL, base::Callback<void(bool)> > OriginCallback; 2012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // The first element in the list is always the currently pending request. 2022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::list<OriginCallback> pending_geolocation_prompts_; 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(AwContents); 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool RegisterAwContents(JNIEnv* env); 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace android_webview 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // ANDROID_WEBVIEW_NATIVE_AW_CONTENTS_H_ 212