60642a8625c73a37df12c019615843ab995abc33
[platform/framework/web/crosswalk.git] / src / xwalk / runtime / browser / android / xwalk_settings.h
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef XWALK_RUNTIME_BROWSER_ANDROID_XWALK_SETTINGS_H_
6 #define XWALK_RUNTIME_BROWSER_ANDROID_XWALK_SETTINGS_H_
7
8 #include <jni.h>
9
10 #include "base/android/jni_helper.h"
11 #include "base/android/scoped_java_ref.h"
12 #include "base/memory/scoped_ptr.h"
13 #include "content/public/browser/web_contents_observer.h"
14
15 namespace xwalk {
16
17 class XWalkRenderViewHostExt;
18
19 class XWalkSettings : public content::WebContentsObserver {
20  public:
21   XWalkSettings(JNIEnv* env, jobject obj, jint web_contents);
22   virtual ~XWalkSettings();
23
24   // Called from Java.
25   void Destroy(JNIEnv* env, jobject obj);
26   void ResetScrollAndScaleState(JNIEnv* env, jobject obj);
27   void UpdateEverythingLocked(JNIEnv* env, jobject obj);
28   void UpdateInitialPageScale(JNIEnv* env, jobject obj);
29   void UpdateUserAgent(JNIEnv* env, jobject obj);
30   void UpdateWebkitPreferences(JNIEnv* env, jobject obj);
31
32  private:
33   struct FieldIds;
34
35   XWalkRenderViewHostExt* GetXWalkRenderViewHostExt();
36   void UpdateEverything();
37   void UpdatePreferredSizeMode();
38
39   // WebContentsObserver overrides:
40   virtual void RenderViewCreated(
41       content::RenderViewHost* render_view_host) OVERRIDE;
42
43   // Java field references for accessing the values in the Java object.
44   scoped_ptr<FieldIds> field_ids_;
45
46   JavaObjectWeakGlobalRef xwalk_settings_;
47 };
48
49 bool RegisterXWalkSettings(JNIEnv* env);
50
51 }  // namespace xwalk
52
53 #endif  // XWALK_RUNTIME_BROWSER_ANDROID_XWALK_SETTINGS_H_