Index: blimp/client/compositor/blimp_compositor_android.h |
diff --git a/blimp/client/compositor/blimp_compositor_android.h b/blimp/client/compositor/blimp_compositor_android.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..12e47b22085be35ef8be7215b48899e3b43f5b30 |
--- /dev/null |
+++ b/blimp/client/compositor/blimp_compositor_android.h |
@@ -0,0 +1,75 @@ |
+// Copyright 2015 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef BLIMP_CLIENT_COMPOSITOR_BLIMP_COMPOSITOR_ANDROID_H_ |
+#define BLIMP_CLIENT_COMPOSITOR_BLIMP_COMPOSITOR_ANDROID_H_ |
+ |
+#include "base/android/jni_android.h" |
+#include "base/macros.h" |
+#include "blimp/client/compositor/blimp_compositor.h" |
+#include "ui/gfx/geometry/size.h" |
+#include "ui/gfx/native_widget_types.h" |
+ |
+namespace base { |
+class SingleThreadTaskRunner; |
+class Thread; |
+} |
+ |
+namespace cc { |
+class LayerTreeHost; |
+} |
+ |
+namespace blimp { |
+ |
+// An Android specific version of the BlimpCompositor. This class builds a |
+// gfx::AcceleratedWidget out of an Android SurfaceView's surface. |
+class BlimpCompositorAndroid : public BlimpCompositor { |
+ public: |
+ // |real_size| is the total display area including system decorations (see |
+ // android.view.Display.getRealSize()). |size| is the total display |
+ // area not including system decorations (see android.view.Display.getSize()). |
+ // |dp_to_px| is the scale factor that is required to convert from dp device |
+ // pixels) to px. |
+ static scoped_ptr<BlimpCompositorAndroid> Create(const gfx::Size& real_size, |
+ const gfx::Size& size, |
+ float dp_to_px); |
+ |
+ ~BlimpCompositorAndroid() override; |
+ |
+ // Takes a reference to the ANativeWindow backing |jsurface|, to use to render |
+ // to, and releases any previously-held reference. |
+ void SetSurface(JNIEnv* env, jobject jsurface); |
+ |
+ protected: |
+ // |size| is the size of the display. |real_size_supported| determines |
+ // whether or not this size is the real display size or the display size |
+ // not including the system decorations. |dp_to_px| is the scale factor that |
+ // is required to convert from dp (device pixels) to px. |
+ BlimpCompositorAndroid(const gfx::Size& size, |
+ bool real_size_supported, |
+ float dp_to_px); |
+ |
+ // BlimpCompositor implementation. |
+ gfx::AcceleratedWidget GetWindow() override; |
+ void GenerateLayerTreeSettings(cc::LayerTreeSettings* settings); |
+ |
+ private: |
+ // Used to determine tile size for the compositor's rastered tiles. For a |
+ // device of width X height |portrait_width_| will be min(width, height) and |
+ // |landscape_width_| will be max(width, height). |
+ int portrait_width_; |
+ int landscape_width_; |
+ |
+ // True if the |portrait_width_| and |landscape_width_| represent the device's |
+ // physical dimensions, including any area occupied by system decorations. |
+ bool real_size_supported_; |
+ |
+ gfx::AcceleratedWidget window_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(BlimpCompositorAndroid); |
+}; |
+ |
+} // namespace blimp |
+ |
+#endif // BLIMP_CLIENT_COMPOSITOR_BLIMP_COMPOSITOR_ANDROID_H_ |