• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 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 UI_BASE_ANDROID_WINDOW_ANDROID_H_
6 #define UI_BASE_ANDROID_WINDOW_ANDROID_H_
7 
8 #include <jni.h>
9 #include <vector>
10 #include "base/android/jni_helper.h"
11 #include "base/android/scoped_java_ref.h"
12 #include "base/observer_list.h"
13 #include "ui/base/ui_export.h"
14 #include "ui/gfx/vector2d_f.h"
15 
16 namespace ui {
17 
18 class WindowAndroidObserver;
19 
20 // Android implementation of the activity window.
21 class UI_EXPORT WindowAndroid {
22  public:
23   WindowAndroid(JNIEnv* env, jobject obj);
24 
25   void Destroy(JNIEnv* env, jobject obj);
26 
27   base::android::ScopedJavaLocalRef<jobject> GetJavaObject();
28 
29   static bool RegisterWindowAndroid(JNIEnv* env);
30 
31   // The content offset is used to translate snapshots to the correct part of
32   // the window.
set_content_offset(const gfx::Vector2dF & content_offset)33   void set_content_offset(const gfx::Vector2dF& content_offset) {
34     content_offset_ = content_offset;
35   }
36 
37   bool GrabSnapshot(int content_x, int content_y, int width, int height,
38                     std::vector<unsigned char>* png_representation);
39 
40   // Compositor callback relay.
41   void OnCompositingDidCommit();
42 
43   void AttachCompositor();
44   void DetachCompositor();
45 
46   void AddObserver(WindowAndroidObserver* observer);
47   void RemoveObserver(WindowAndroidObserver* observer);
48 
49  private:
50   ~WindowAndroid();
51 
52   JavaObjectWeakGlobalRef weak_java_window_;
53   gfx::Vector2dF content_offset_;
54 
55   ObserverList<WindowAndroidObserver> observer_list_;
56 
57   DISALLOW_COPY_AND_ASSIGN(WindowAndroid);
58 };
59 
60 }  // namespace ui
61 
62 #endif  // UI_BASE_ANDROID_WINDOW_ANDROID_H_
63