Commit dbcdc8bd authored by Matt Jones's avatar Matt Jones Committed by Commit Bot

Simplify the initialization of LayerTitleCache

This patch removes the roundabout way of setting the ResourceManager
in LayerTitleCache in favor of setting it directly in the constructor.
The initialization path no longer has to pass through CompositorView.

Bug: 1070281
Change-Id: I9a622a4c19c8e11d72ee159583b1916c46b0e5c2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2481469Reviewed-by: default avatarDavid Trainor <dtrainor@chromium.org>
Commit-Queue: Matthew Jones <mdjones@chromium.org>
Cr-Commit-Position: refs/heads/master@{#819911}
parent 91e2980f
...@@ -270,11 +270,10 @@ public class CompositorView ...@@ -270,11 +270,10 @@ public class CompositorView
* Initializes the {@link CompositorView}'s native parts (e.g. the rendering parts). * Initializes the {@link CompositorView}'s native parts (e.g. the rendering parts).
* @param lowMemDevice If this is a low memory device. * @param lowMemDevice If this is a low memory device.
* @param windowAndroid A {@link WindowAndroid} instance. * @param windowAndroid A {@link WindowAndroid} instance.
* @param layerTitleCache A {@link LayerTitleCache} instance.
* @param tabContentManager A {@link TabContentManager} instance. * @param tabContentManager A {@link TabContentManager} instance.
*/ */
public void initNativeCompositor(boolean lowMemDevice, WindowAndroid windowAndroid, public void initNativeCompositor(boolean lowMemDevice, WindowAndroid windowAndroid,
LayerTitleCache layerTitleCache, TabContentManager tabContentManager) { TabContentManager tabContentManager) {
// https://crbug.com/802160. We can't call setWindowAndroid here because updating the window // https://crbug.com/802160. We can't call setWindowAndroid here because updating the window
// visibility here breaks exiting Reader Mode somehow. // visibility here breaks exiting Reader Mode somehow.
mWindowAndroid = windowAndroid; mWindowAndroid = windowAndroid;
...@@ -282,8 +281,8 @@ public class CompositorView ...@@ -282,8 +281,8 @@ public class CompositorView
mTabContentManager = tabContentManager; mTabContentManager = tabContentManager;
mNativeCompositorView = CompositorViewJni.get().init(CompositorView.this, lowMemDevice, mNativeCompositorView = CompositorViewJni.get().init(
windowAndroid, layerTitleCache, tabContentManager); CompositorView.this, lowMemDevice, windowAndroid, tabContentManager);
// compositor_impl_android.cc will use 565 EGL surfaces if and only if we're using a low // compositor_impl_android.cc will use 565 EGL surfaces if and only if we're using a low
// memory device, and no alpha channel is desired. Otherwise, it will use 8888. Since // memory device, and no alpha channel is desired. Otherwise, it will use 8888. Since
...@@ -634,7 +633,7 @@ public class CompositorView ...@@ -634,7 +633,7 @@ public class CompositorView
@NativeMethods @NativeMethods
interface Natives { interface Natives {
long init(CompositorView caller, boolean lowMemDevice, WindowAndroid windowAndroid, long init(CompositorView caller, boolean lowMemDevice, WindowAndroid windowAndroid,
LayerTitleCache layerTitleCache, TabContentManager tabContentManager); TabContentManager tabContentManager);
void destroy(long nativeCompositorView, CompositorView caller); void destroy(long nativeCompositorView, CompositorView caller);
ResourceManager getResourceManager(long nativeCompositorView, CompositorView caller); ResourceManager getResourceManager(long nativeCompositorView, CompositorView caller);
void surfaceCreated(long nativeCompositorView, CompositorView caller); void surfaceCreated(long nativeCompositorView, CompositorView caller);
......
...@@ -570,15 +570,11 @@ public class CompositorViewHolder extends FrameLayout ...@@ -570,15 +570,11 @@ public class CompositorViewHolder extends FrameLayout
WindowAndroid windowAndroid, TabContentManager tabContentManager) { WindowAndroid windowAndroid, TabContentManager tabContentManager) {
assert mLayerTitleCache == null : "Should be called once"; assert mLayerTitleCache == null : "Should be called once";
if (DeviceClassManager.enableLayerDecorationCache()) {
mLayerTitleCache = new LayerTitleCache(getContext());
}
mCompositorView.initNativeCompositor( mCompositorView.initNativeCompositor(
SysUtils.isLowEndDevice(), windowAndroid, mLayerTitleCache, tabContentManager); SysUtils.isLowEndDevice(), windowAndroid, tabContentManager);
if (mLayerTitleCache != null) { if (DeviceClassManager.enableLayerDecorationCache()) {
mLayerTitleCache.setResourceManager(getResourceManager()); mLayerTitleCache = new LayerTitleCache(getContext(), getResourceManager());
} }
if (mControlContainer != null) { if (mControlContainer != null) {
......
...@@ -57,8 +57,9 @@ public class LayerTitleCache implements TitleCache { ...@@ -57,8 +57,9 @@ public class LayerTitleCache implements TitleCache {
/** /**
* Builds an instance of the LayerTitleCache. * Builds an instance of the LayerTitleCache.
*/ */
public LayerTitleCache(Context context) { public LayerTitleCache(Context context, ResourceManager resourceManager) {
mContext = context; mContext = context;
mResourceManager = resourceManager;
Resources res = context.getResources(); Resources res = context.getResources();
final int fadeWidthPx = res.getDimensionPixelOffset(R.dimen.border_texture_title_fade); final int fadeWidthPx = res.getDimensionPixelOffset(R.dimen.border_texture_title_fade);
final int faviconStartPaddingPx = final int faviconStartPaddingPx =
...@@ -67,21 +68,13 @@ public class LayerTitleCache implements TitleCache { ...@@ -67,21 +68,13 @@ public class LayerTitleCache implements TitleCache {
res.getDimensionPixelSize(R.dimen.tab_title_favicon_end_padding); res.getDimensionPixelSize(R.dimen.tab_title_favicon_end_padding);
mNativeLayerTitleCache = LayerTitleCacheJni.get().init(LayerTitleCache.this, fadeWidthPx, mNativeLayerTitleCache = LayerTitleCacheJni.get().init(LayerTitleCache.this, fadeWidthPx,
faviconStartPaddingPx, faviconEndPaddingPx, R.drawable.spinner, faviconStartPaddingPx, faviconEndPaddingPx, R.drawable.spinner,
R.drawable.spinner_white); R.drawable.spinner_white, mResourceManager);
mFaviconSize = res.getDimensionPixelSize(R.dimen.compositor_tab_title_favicon_size); mFaviconSize = res.getDimensionPixelSize(R.dimen.compositor_tab_title_favicon_size);
mStandardTitleBitmapFactory = new TitleBitmapFactory(context, false); mStandardTitleBitmapFactory = new TitleBitmapFactory(context, false);
mDarkTitleBitmapFactory = new TitleBitmapFactory(context, true); mDarkTitleBitmapFactory = new TitleBitmapFactory(context, true);
mDefaultFaviconHelper = new DefaultFaviconHelper(); mDefaultFaviconHelper = new DefaultFaviconHelper();
} }
/**
* @param resourceManager The {@link ResourceManager} for registering title
* resources.
*/
public void setResourceManager(ResourceManager resourceManager) {
mResourceManager = resourceManager;
}
/** /**
* Destroys the native reference. * Destroys the native reference.
*/ */
...@@ -287,7 +280,8 @@ public class LayerTitleCache implements TitleCache { ...@@ -287,7 +280,8 @@ public class LayerTitleCache implements TitleCache {
@NativeMethods @NativeMethods
interface Natives { interface Natives {
long init(LayerTitleCache caller, int fadeWidth, int faviconStartlPadding, long init(LayerTitleCache caller, int fadeWidth, int faviconStartlPadding,
int faviconEndPadding, int spinnerResId, int spinnerIncognitoResId); int faviconEndPadding, int spinnerResId, int spinnerIncognitoResId,
ResourceManager resourceManager);
void destroy(long nativeLayerTitleCache); void destroy(long nativeLayerTitleCache);
void clearExcept(long nativeLayerTitleCache, LayerTitleCache caller, int exceptId); void clearExcept(long nativeLayerTitleCache, LayerTitleCache caller, int exceptId);
void updateLayer(long nativeLayerTitleCache, LayerTitleCache caller, int tabId, void updateLayer(long nativeLayerTitleCache, LayerTitleCache caller, int tabId,
......
...@@ -47,13 +47,10 @@ jlong JNI_CompositorView_Init( ...@@ -47,13 +47,10 @@ jlong JNI_CompositorView_Init(
const JavaParamRef<jobject>& obj, const JavaParamRef<jobject>& obj,
jboolean low_mem_device, jboolean low_mem_device,
const JavaParamRef<jobject>& jwindow_android, const JavaParamRef<jobject>& jwindow_android,
const JavaParamRef<jobject>& jlayer_title_cache,
const JavaParamRef<jobject>& jtab_content_manager) { const JavaParamRef<jobject>& jtab_content_manager) {
CompositorView* view; CompositorView* view;
ui::WindowAndroid* window_android = ui::WindowAndroid* window_android =
ui::WindowAndroid::FromJavaWindowAndroid(jwindow_android); ui::WindowAndroid::FromJavaWindowAndroid(jwindow_android);
LayerTitleCache* layer_title_cache =
LayerTitleCache::FromJavaObject(jlayer_title_cache);
TabContentManager* tab_content_manager = TabContentManager* tab_content_manager =
TabContentManager::FromJavaObject(jtab_content_manager); TabContentManager::FromJavaObject(jtab_content_manager);
...@@ -64,10 +61,6 @@ jlong JNI_CompositorView_Init( ...@@ -64,10 +61,6 @@ jlong JNI_CompositorView_Init(
tab_content_manager); tab_content_manager);
ui::UIResourceProvider* ui_resource_provider = view->GetUIResourceProvider(); ui::UIResourceProvider* ui_resource_provider = view->GetUIResourceProvider();
// TODO(dtrainor): Pass the ResourceManager on the Java side to the tree
// builders instead.
if (layer_title_cache)
layer_title_cache->SetResourceManager(view->GetResourceManager());
if (tab_content_manager) if (tab_content_manager)
tab_content_manager->SetUIResourceProvider(ui_resource_provider); tab_content_manager->SetUIResourceProvider(ui_resource_provider);
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include "chrome/android/chrome_jni_headers/LayerTitleCache_jni.h" #include "chrome/android/chrome_jni_headers/LayerTitleCache_jni.h"
#include "chrome/browser/android/compositor/decoration_title.h" #include "chrome/browser/android/compositor/decoration_title.h"
#include "ui/android/resources/resource_manager.h" #include "ui/android/resources/resource_manager.h"
#include "ui/android/resources/resource_manager_impl.h"
#include "ui/gfx/android/java_bitmap.h" #include "ui/gfx/android/java_bitmap.h"
#include "ui/gfx/geometry/point_f.h" #include "ui/gfx/geometry/point_f.h"
#include "ui/gfx/geometry/rect_f.h" #include "ui/gfx/geometry/rect_f.h"
...@@ -37,15 +38,15 @@ LayerTitleCache::LayerTitleCache(JNIEnv* env, ...@@ -37,15 +38,15 @@ LayerTitleCache::LayerTitleCache(JNIEnv* env,
jint favicon_start_padding, jint favicon_start_padding,
jint favicon_end_padding, jint favicon_end_padding,
jint spinner_resource_id, jint spinner_resource_id,
jint spinner_incognito_resource_id) jint spinner_incognito_resource_id,
ui::ResourceManager* resource_manager)
: weak_java_title_cache_(env, obj), : weak_java_title_cache_(env, obj),
fade_width_(fade_width), fade_width_(fade_width),
favicon_start_padding_(favicon_start_padding), favicon_start_padding_(favicon_start_padding),
favicon_end_padding_(favicon_end_padding), favicon_end_padding_(favicon_end_padding),
spinner_resource_id_(spinner_resource_id), spinner_resource_id_(spinner_resource_id),
spinner_incognito_resource_id_(spinner_incognito_resource_id), spinner_incognito_resource_id_(spinner_incognito_resource_id),
resource_manager_(nullptr) { resource_manager_(resource_manager) {}
}
void LayerTitleCache::Destroy(JNIEnv* env) { void LayerTitleCache::Destroy(JNIEnv* env) {
delete this; delete this;
...@@ -108,16 +109,6 @@ DecorationTitle* LayerTitleCache::GetTitleLayer(int tab_id) { ...@@ -108,16 +109,6 @@ DecorationTitle* LayerTitleCache::GetTitleLayer(int tab_id) {
return layer_cache_.Lookup(tab_id); return layer_cache_.Lookup(tab_id);
} }
void LayerTitleCache::SetResourceManager(
ui::ResourceManager* resource_manager) {
resource_manager_ = resource_manager;
base::IDMap<std::unique_ptr<DecorationTitle>>::iterator iter(&layer_cache_);
for (; !iter.IsAtEnd(); iter.Advance()) {
iter.GetCurrentValue()->SetResourceManager(resource_manager_);
}
}
LayerTitleCache::~LayerTitleCache() { LayerTitleCache::~LayerTitleCache() {
} }
...@@ -131,10 +122,13 @@ jlong JNI_LayerTitleCache_Init(JNIEnv* env, ...@@ -131,10 +122,13 @@ jlong JNI_LayerTitleCache_Init(JNIEnv* env,
jint favicon_start_padding, jint favicon_start_padding,
jint favicon_end_padding, jint favicon_end_padding,
jint spinner_resource_id, jint spinner_resource_id,
jint spinner_incognito_resource_id) { jint spinner_incognito_resource_id,
const JavaParamRef<jobject>& jresource_manager) {
ui::ResourceManager* resource_manager =
ui::ResourceManagerImpl::FromJavaObject(jresource_manager);
LayerTitleCache* cache = new LayerTitleCache( LayerTitleCache* cache = new LayerTitleCache(
env, obj, fade_width, favicon_start_padding, favicon_end_padding, env, obj, fade_width, favicon_start_padding, favicon_end_padding,
spinner_resource_id, spinner_incognito_resource_id); spinner_resource_id, spinner_incognito_resource_id, resource_manager);
return reinterpret_cast<intptr_t>(cache); return reinterpret_cast<intptr_t>(cache);
} }
......
...@@ -42,7 +42,8 @@ class LayerTitleCache { ...@@ -42,7 +42,8 @@ class LayerTitleCache {
jint favicon_start_padding, jint favicon_start_padding,
jint favicon_end_padding, jint favicon_end_padding,
jint spinner_resource_id, jint spinner_resource_id,
jint spinner_incognito_resource_id); jint spinner_incognito_resource_id,
ui::ResourceManager* resource_manager);
void Destroy(JNIEnv* env); void Destroy(JNIEnv* env);
// Called from Java, updates a native cc::Layer based on the new texture // Called from Java, updates a native cc::Layer based on the new texture
...@@ -69,8 +70,6 @@ class LayerTitleCache { ...@@ -69,8 +70,6 @@ class LayerTitleCache {
// Returns NULL if no layer can be found. // Returns NULL if no layer can be found.
DecorationTitle* GetTitleLayer(int tab_id); DecorationTitle* GetTitleLayer(int tab_id);
void SetResourceManager(ui::ResourceManager* resource_manager);
private: private:
virtual ~LayerTitleCache(); virtual ~LayerTitleCache();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment