12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef ANDROID_WEBVIEW_NATIVE_AW_SETTINGS_H_ 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define ANDROID_WEBVIEW_NATIVE_AW_SETTINGS_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <jni.h> 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 100529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "base/android/jni_weak_ref.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/android/scoped_java_ref.h" 12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/memory/scoped_ptr.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/browser/web_contents_observer.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 15116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace content{ 164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)struct WebPreferences; 17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace android_webview { 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class AwRenderViewHostExt; 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class AwSettings : public content::WebContentsObserver { 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) static AwSettings* FromWebContents(content::WebContents* web_contents); 264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 27a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) AwSettings(JNIEnv* env, jobject obj, jlong web_contents); 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~AwSettings(); 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 30b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) // Called from Java. Methods with "Locked" suffix require that the settings 31b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) // access lock is held during their execution. 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void Destroy(JNIEnv* env, jobject obj); 335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void PopulateWebPreferencesLocked(JNIEnv* env, jobject obj, jlong web_prefs); 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void ResetScrollAndScaleState(JNIEnv* env, jobject obj); 35b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) void UpdateEverythingLocked(JNIEnv* env, jobject obj); 36b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) void UpdateInitialPageScaleLocked(JNIEnv* env, jobject obj); 37b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) void UpdateUserAgentLocked(JNIEnv* env, jobject obj); 38b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) void UpdateWebkitPreferencesLocked(JNIEnv* env, jobject obj); 3990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) void UpdateFormDataPreferencesLocked(JNIEnv* env, jobject obj); 405c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu void UpdateRendererPreferencesLocked(JNIEnv* env, jobject obj); 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void PopulateWebPreferences(content::WebPreferences* web_prefs); 434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AwRenderViewHostExt* GetAwRenderViewHostExt(); 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void UpdateEverything(); 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // WebContentsObserver overrides: 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void RenderViewCreated( 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::RenderViewHost* render_view_host) OVERRIDE; 51010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void WebContentsDestroyed() OVERRIDE; 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 535c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu bool renderer_prefs_initialized_; 545c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) JavaObjectWeakGlobalRef aw_settings_; 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool RegisterAwSettings(JNIEnv* env); 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace android_webview 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // ANDROID_WEBVIEW_NATIVE_AW_SETTINGS_H_ 63