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; 33a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)class AwPdfExporter; 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class AwWebContentsDelegate; 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Native side of java-class of same name. 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Provides the ownership of and access to browser components required for 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// WebView functionality; analogous to chrome's TabContents, but with a 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// level of indirection provided by the AwContentsContainer abstraction. 407d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// 417d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// Object lifetime: 427d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// For most purposes the java and native objects can be considered to have 437d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// 1:1 lifetime and relationship. The exception is the java instance that 447d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// hosts a popup will be rebound to a second native instance (carrying the 457d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// popup content) and discard the 'default' native instance it made on 467d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// construction. A native instance is only bound to at most one Java peer over 477d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// its entire lifetime - see Init() and SetPendingWebContentsForPopup() for the 487d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// construction points, and SetJavaPeers() where these paths join. 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class AwContents : public FindHelper::Listener, 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public IconHelper::Listener, 51b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) public AwRenderViewHostExtClient, 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public BrowserViewRenderer::Client { 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the AwContents instance associated with |web_contents|, or NULL. 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static AwContents* FromWebContents(content::WebContents* web_contents); 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Returns the AwContents instance associated with with the given 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // render_process_id and render_view_id, or NULL. 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static AwContents* FromID(int render_process_id, int render_view_id); 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 617d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) AwContents(scoped_ptr<content::WebContents> web_contents); 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~AwContents(); 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AwRenderViewHostExt* render_view_host_ext() { 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return render_view_host_ext_.get(); 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // |handler| is an instance of 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // org.chromium.android_webview.AwHttpAuthHandler. 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool OnReceivedHttpAuthRequest(const base::android::JavaRef<jobject>& handler, 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& host, 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& realm); 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Methods called from Java. 757d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) void SetJavaPeers(JNIEnv* env, 767d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) jobject obj, 777d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) jobject aw_contents, 787d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) jobject web_contents_delegate, 797d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) jobject contents_client_bridge, 807d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) jobject io_thread_client, 817d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) jobject intercept_navigation_delegate); 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) jint GetWebContents(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); 87a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void CreatePdfExporter(JNIEnv* env, jobject obj, jobject pdfExporter); 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void AddVisitedLinks(JNIEnv* env, jobject obj, jobjectArray jvisited_links); 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::android::ScopedJavaLocalRef<jbyteArray> GetCertificate( 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) JNIEnv* env, jobject obj); 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void RequestNewHitTestDataAt(JNIEnv* env, jobject obj, jint x, jint y); 922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void UpdateLastHitTestData(JNIEnv* env, jobject obj); 932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnSizeChanged(JNIEnv* env, jobject obj, int w, int h, int ow, int oh); 943551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) void SetViewVisibility(JNIEnv* env, jobject obj, bool visible); 953551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) void SetWindowVisibility(JNIEnv* env, jobject obj, bool visible); 963551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) void SetIsPaused(JNIEnv* env, jobject obj, bool paused); 972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnAttachedToWindow(JNIEnv* env, jobject obj, int w, int h); 982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnDetachedFromWindow(JNIEnv* env, jobject obj); 992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::android::ScopedJavaLocalRef<jbyteArray> GetOpaqueState( 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) JNIEnv* env, jobject obj); 1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) jboolean RestoreFromOpaqueState(JNIEnv* env, jobject obj, jbyteArray state); 1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void FocusFirstNode(JNIEnv* env, jobject obj); 103a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch void SetBackgroundColor(JNIEnv* env, jobject obj, jint color); 1047d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) bool OnDraw(JNIEnv* env, 1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) jobject obj, 1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) jobject canvas, 1077d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) jboolean is_hardware_accelerated, 1087d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) jint scroll_x, 1097d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) jint scroll_y, 1107d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) jint clip_left, 1117d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) jint clip_top, 1127d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) jint clip_right, 113a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) jint clip_bottom); 114a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) void SetGlobalVisibleRect(JNIEnv* env, 115a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) jobject obj, 116a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) jint visible_left, 117a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) jint visible_top, 118a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) jint visible_right, 119a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) jint visible_bottom); 1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) jint GetAwDrawGLViewContext(JNIEnv* env, jobject obj); 121a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) jlong CapturePicture(JNIEnv* env, jobject obj, int width, int height); 122558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch void EnableOnNewPicture(JNIEnv* env, jobject obj, jboolean enabled); 123a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void SetExtraHeadersForUrl(JNIEnv* env, jobject obj, 124a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) jstring url, jstring extra_headers); 1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Geolocation API support 1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void ShowGeolocationPrompt(const GURL& origin, base::Callback<void(bool)>); 1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void HideGeolocationPrompt(const GURL& origin); 1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void InvokeGeolocationCallback(JNIEnv* env, 1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) jobject obj, 1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) jboolean value, 1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) jstring origin); 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Find-in-page API and related methods. 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void FindAllAsync(JNIEnv* env, jobject obj, jstring search_string); 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void FindNext(JNIEnv* env, jobject obj, jboolean forward); 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ClearMatches(JNIEnv* env, jobject obj); 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FindHelper* GetFindHelper(); 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // FindHelper::Listener implementation. 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnFindResultReceived(int active_ordinal, 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int match_count, 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool finished) OVERRIDE; 1442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // IconHelper::Listener implementation. 1454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual bool ShouldDownloadFavicon(const GURL& icon_url) OVERRIDE; 146ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch virtual void OnReceivedIcon(const GURL& icon_url, 147ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch const SkBitmap& bitmap) OVERRIDE; 1482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void OnReceivedTouchIconUrl(const std::string& url, 1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const bool precomposed) OVERRIDE; 1502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 151b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) // AwRenderViewHostExtClient implementation. 1527dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch virtual void OnWebLayoutPageScaleFactorChanged( 1537dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch float page_scale_factor) OVERRIDE; 154d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) virtual void OnWebLayoutContentsSizeChanged( 155d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) const gfx::Size& contents_size) OVERRIDE; 156b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // BrowserViewRenderer::Client implementation. 1587d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) virtual bool RequestDrawGL(jobject canvas) OVERRIDE; 1597d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) virtual void PostInvalidate() OVERRIDE; 160a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) virtual void UpdateGlobalVisibleRect() OVERRIDE; 161b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) virtual void OnNewPicture() OVERRIDE; 1622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual gfx::Point GetLocationOnScreen() OVERRIDE; 16368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual void SetMaxContainerViewScrollOffset( 16468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) gfx::Vector2d new_value) OVERRIDE; 165eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void ScrollContainerViewTo(gfx::Vector2d new_value) OVERRIDE; 1664e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual bool IsFlingActive() const OVERRIDE; 16768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual void SetPageScaleFactor(float page_scale_factor) OVERRIDE; 16868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual void SetContentsSize(gfx::SizeF contents_size_dip) OVERRIDE; 1697dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch virtual void DidOverscroll(gfx::Vector2d overscroll_delta) OVERRIDE; 1702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void ClearCache(JNIEnv* env, jobject obj, jboolean include_disk_files); 1722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void SetPendingWebContentsForPopup(scoped_ptr<content::WebContents> pending); 1737d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) jint ReleasePopupAwContents(JNIEnv* env, jobject obj); 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) void ScrollTo(JNIEnv* env, jobject obj, jint x, jint y); 176d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) void SetDipScale(JNIEnv* env, jobject obj, jfloat dip_scale); 177d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) void SetFixedLayoutSize(JNIEnv* env, 178d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) jobject obj, 179d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) jint width_dip, 180d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) jint height_dip); 18190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) void SetSaveFormData(bool enabled); 18290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 183eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Sets the java delegate 184eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void SetAwAutofillManagerDelegate(jobject delegate); 185424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 186424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) void SetJsOnlineProperty(JNIEnv* env, jobject obj, jboolean network_up); 1874e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) void TrimMemory(JNIEnv* env, jobject obj, jint level); 188424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 19090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) void InitAutofillIfNecessary(bool enabled); 19158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) void SetAndroidWebViewRendererPrefs(); 1922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) JavaObjectWeakGlobalRef java_ref_; 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<content::WebContents> web_contents_; 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<AwWebContentsDelegate> web_contents_delegate_; 1962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<AwContentsClientBridge> contents_client_bridge_; 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<AwRenderViewHostExt> render_view_host_ext_; 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<FindHelper> find_helper_; 1992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<IconHelper> icon_helper_; 2007d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) scoped_ptr<AwContents> pending_contents_; 2012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<BrowserViewRenderer> browser_view_renderer_; 202a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) scoped_ptr<AwPdfExporter> pdf_exporter_; 2032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // GURL is supplied by the content layer as requesting frame. 2052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Callback is supplied by the content layer, and is invoked with the result 2062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // from the permission prompt. 2072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) typedef std::pair<const GURL, base::Callback<void(bool)> > OriginCallback; 2082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // The first element in the list is always the currently pending request. 2092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::list<OriginCallback> pending_geolocation_prompts_; 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(AwContents); 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool RegisterAwContents(JNIEnv* env); 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace android_webview 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // ANDROID_WEBVIEW_NATIVE_AW_CONTENTS_H_ 219