| Index: chrome/browser/android/compositor/scene_layer/scene_layer.cc
|
| diff --git a/chrome/browser/android/compositor/scene_layer/scene_layer.cc b/chrome/browser/android/compositor/scene_layer/scene_layer.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..ee8eeba52bf23269f19163c8b6535cd79c19f6ee
|
| --- /dev/null
|
| +++ b/chrome/browser/android/compositor/scene_layer/scene_layer.cc
|
| @@ -0,0 +1,69 @@
|
| +// 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.
|
| +
|
| +#include "chrome/browser/android/compositor/scene_layer/scene_layer.h"
|
| +
|
| +#include "cc/layers/layer.h"
|
| +#include "jni/SceneLayer_jni.h"
|
| +
|
| +namespace chrome {
|
| +namespace android {
|
| +
|
| +// static
|
| +SceneLayer* SceneLayer::FromJavaObject(JNIEnv* env, jobject jobj) {
|
| + if (jobj == nullptr)
|
| + return nullptr;
|
| + return reinterpret_cast<SceneLayer*>(Java_SceneLayer_getNativePtr(env, jobj));
|
| +}
|
| +
|
| +SceneLayer::SceneLayer(JNIEnv* env, jobject jobj)
|
| + : SceneLayer(env, jobj, cc::Layer::Create()) {
|
| +}
|
| +
|
| +SceneLayer::SceneLayer(JNIEnv* env,
|
| + jobject jobj,
|
| + scoped_refptr<cc::Layer> layer)
|
| + : weak_java_scene_layer_(env, jobj), layer_(layer) {
|
| + Java_SceneLayer_setNativePtr(env, jobj, reinterpret_cast<intptr_t>(this));
|
| +}
|
| +
|
| +SceneLayer::~SceneLayer() {
|
| + JNIEnv* env = base::android::AttachCurrentThread();
|
| + ScopedJavaLocalRef<jobject> jobj = weak_java_scene_layer_.get(env);
|
| + if (jobj.is_null())
|
| + return;
|
| +
|
| + Java_SceneLayer_setNativePtr(
|
| + env, jobj.obj(),
|
| + reinterpret_cast<intptr_t>(static_cast<SceneLayer*>(NULL)));
|
| +}
|
| +
|
| +void SceneLayer::OnDetach() {
|
| + layer()->RemoveFromParent();
|
| +}
|
| +
|
| +void SceneLayer::Destroy(JNIEnv* env, jobject jobj) {
|
| + delete this;
|
| +}
|
| +
|
| +bool SceneLayer::ShouldShowBackground() {
|
| + return false;
|
| +}
|
| +
|
| +SkColor SceneLayer::GetBackgroundColor() {
|
| + return SK_ColorWHITE;
|
| +}
|
| +
|
| +static jlong Init(JNIEnv* env, jobject jobj) {
|
| + // This will automatically bind to the Java object and pass ownership there.
|
| + SceneLayer* tree_provider = new SceneLayer(env, jobj);
|
| + return reinterpret_cast<intptr_t>(tree_provider);
|
| +}
|
| +
|
| +bool RegisterSceneLayer(JNIEnv* env) {
|
| + return RegisterNativesImpl(env);
|
| +}
|
| +
|
| +} // namespace android
|
| +} // namespace chrome
|
|
|