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