Chromium Code Reviews| Index: chrome/android/testshell/tab_manager.cc |
| diff --git a/content/shell/android/shell_manager.cc b/chrome/android/testshell/tab_manager.cc |
| similarity index 50% |
| copy from content/shell/android/shell_manager.cc |
| copy to chrome/android/testshell/tab_manager.cc |
| index a7b6b263b25615e9c5307cded799bfe974496c03..97ccbe1bcff95621c6424df1b995945040acb826 100644 |
| --- a/content/shell/android/shell_manager.cc |
| +++ b/chrome/android/testshell/tab_manager.cc |
| @@ -2,36 +2,27 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| -#include "content/shell/android/shell_manager.h" |
| +#include "chrome/android/testshell/tab_manager.h" |
| +#include "base/logging.h" |
| #include "base/android/jni_android.h" |
| #include "base/android/jni_string.h" |
| #include "base/android/scoped_java_ref.h" |
| #include "base/bind.h" |
| #include "base/lazy_instance.h" |
| -#include "base/memory/scoped_ptr.h" |
| -#include "content/shell/shell.h" |
| -#include "content/shell/shell_browser_context.h" |
| -#include "content/shell/shell_content_browser_client.h" |
| +#include "chrome/browser/android/tab_base_android_impl.h" |
| #include "content/public/browser/android/compositor.h" |
| #include "content/public/browser/android/draw_delegate.h" |
| -#include "content/public/browser/web_contents.h" |
| -#include "content/shell/shell.h" |
| -#include "googleurl/src/gurl.h" |
| -#include "jni/ShellManager_jni.h" |
| +#include "jni/TabManager_jni.h" |
| #include "third_party/WebKit/Source/Platform/chromium/public/WebLayer.h" |
| -#include "ui/gfx/size.h" |
| #include <android/native_window_jni.h> |
| using base::android::ScopedJavaLocalRef; |
| -using content::Compositor; |
| -using content::DrawDelegate; |
| namespace { |
| struct GlobalState { |
| - base::android::ScopedJavaGlobalRef<jobject> j_obj; |
| scoped_ptr<content::Compositor> compositor; |
| scoped_ptr<WebKit::WebLayer> root_layer; |
| }; |
| @@ -43,50 +34,43 @@ content::Compositor* GetCompositor() { |
| } |
| static void SurfacePresented( |
| - const DrawDelegate::SurfacePresentedCallback& callback, |
| + const content::DrawDelegate::SurfacePresentedCallback& callback, |
| uint32 sync_point) { |
| callback.Run(sync_point); |
| } |
| +void DummyCallback(uint32) { } |
| + |
| static void SurfaceUpdated( |
| uint64 texture, |
| content::RenderWidgetHostView* view, |
| - const DrawDelegate::SurfacePresentedCallback& callback) { |
| + const content::DrawDelegate::SurfacePresentedCallback& callback) { |
| GetCompositor()->OnSurfaceUpdated(base::Bind( |
| &SurfacePresented, callback)); |
| } |
| -} // anonymous namespace |
| - |
| -namespace content { |
| +} // anonymous namespace |
| -jobject CreateShellView() { |
| - JNIEnv* env = base::android::AttachCurrentThread(); |
| - if (!GetCompositor()) { |
| - Compositor::Initialize(); |
| - g_global_state.Get().compositor.reset(Compositor::Create()); |
| - DCHECK(!g_global_state.Get().root_layer.get()); |
| - g_global_state.Get().root_layer.reset(WebKit::WebLayer::create()); |
| - } |
| - return Java_ShellManager_createShell( |
| - env, g_global_state.Get().j_obj.obj()).Release(); |
| -} |
| +namespace chrome { |
| // Register native methods |
| -bool RegisterShellManager(JNIEnv* env) { |
| +bool RegisterTabManager(JNIEnv* env) { |
| return RegisterNativesImpl(env); |
| } |
| static void Init(JNIEnv* env, jclass clazz, jobject obj) { |
| - g_global_state.Get().j_obj.Reset( |
| - base::android::ScopedJavaLocalRef<jobject>(env, obj)); |
| - DrawDelegate::SurfaceUpdatedCallback cb = base::Bind( |
| + content::DrawDelegate::SurfaceUpdatedCallback cb = base::Bind( |
| &SurfaceUpdated); |
| - DrawDelegate::GetInstance()->SetUpdateCallback(cb); |
| + content::DrawDelegate::GetInstance()->SetUpdateCallback(cb); |
| + if (!GetCompositor()) { |
| + content::Compositor::Initialize(); |
| + g_global_state.Get().compositor.reset(content::Compositor::Create()); |
| + DCHECK(!g_global_state.Get().root_layer.get()); |
| + g_global_state.Get().root_layer.reset(WebKit::WebLayer::create()); |
| + } |
| } |
| -static void SurfaceCreated( |
| - JNIEnv* env, jclass clazz, jobject jsurface) { |
| +static void SurfaceCreated(JNIEnv* env, jclass clazz, jobject jsurface) { |
| ANativeWindow* native_window = ANativeWindow_fromSurface(env, jsurface); |
| if (native_window) { |
| GetCompositor()->SetWindowSurface(native_window); |
| @@ -102,29 +86,23 @@ static void SurfaceDestroyed(JNIEnv* env, jclass clazz) { |
| static void SurfaceSetSize( |
| JNIEnv* env, jclass clazz, jint width, jint height) { |
| gfx::Size size = gfx::Size(width, height); |
| - DrawDelegate::GetInstance()->SetBounds(size); |
| + content::DrawDelegate::GetInstance()->SetBounds(size); |
| GetCompositor()->SetWindowBounds(size); |
| } |
| -void LaunchShell(JNIEnv* env, jclass clazz, jstring jurl) { |
| - ShellBrowserContext* browserContext = |
| - static_cast<ShellContentBrowserClient*>( |
| - GetContentClient()->browser())->browser_context(); |
| - GURL url(base::android::ConvertJavaStringToUTF8(env, jurl)); |
| - Shell::CreateNewWindow(browserContext, |
| - url, |
| - NULL, |
| - MSG_ROUTING_NONE, |
| - NULL); |
| +static void ShowTab(JNIEnv* env, jclass clazz, jint jtab) { |
| + if (!GetCompositor()) |
| + return; |
| + TabBaseAndroidImpl* tab = reinterpret_cast<TabBaseAndroidImpl*>(jtab); |
| + g_global_state.Get().root_layer->addChild(tab->tab_layer()); |
| + GetCompositor()->OnSurfaceUpdated(base::Bind(&DummyCallback)); |
|
no sievers
2012/09/25 10:21:53
Are you sure? :)
How would this ever render then?
no sievers
2012/09/25 10:24:04
Oh this is to force a draw when you switch tabs, o
David Trainor- moved to gerrit
2012/09/25 19:07:12
Talked with Daniel, not changing this for now.
|
| } |
| -void ShellAttachLayer(WebKit::WebLayer* layer) { |
| - g_global_state.Get().root_layer->addChild(layer); |
| -} |
| - |
| - |
| -void ShellRemoveLayer(WebKit::WebLayer* layer) { |
| - layer->removeFromParent(); |
| +static void HideTab(JNIEnv* env, jclass clazz, jint jtab) { |
| + if (!GetCompositor()) |
| + return; |
| + TabBaseAndroidImpl* tab = reinterpret_cast<TabBaseAndroidImpl*>(jtab); |
| + tab->tab_layer()->removeFromParent(); |
| } |
| -} // namespace content |
| +} // namespace chrome |