Home | History | Annotate | Download | only in android
      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.
     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