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