Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(231)

Unified Diff: ui/base/android/system_ui_resource_manager.h

Issue 377013002: android: Use UIResource for overscroll glow (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: addressed comments. moved resource loading to its own class. Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ui/base/android/system_ui_resource_manager.h
diff --git a/ui/base/android/system_ui_resource_manager.h b/ui/base/android/system_ui_resource_manager.h
new file mode 100644
index 0000000000000000000000000000000000000000..6a14bbc764427b80a2bd4076d20887df6630e101
--- /dev/null
+++ b/ui/base/android/system_ui_resource_manager.h
@@ -0,0 +1,75 @@
+// Copyright 2014 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 UI_BASE_ANDROID_SYSTEM_UI_RESOURCE_MANAGER_H_
+#define UI_BASE_ANDROID_SYSTEM_UI_RESOURCE_MANAGER_H_
+
+#include "base/containers/scoped_ptr_hash_map.h"
+#include "base/observer_list.h"
+#include "cc/resources/ui_resource_client.h"
+#include "ui/base/android/system_ui_resource.h"
+#include "ui/base/ui_base_export.h"
+
+namespace cc {
+class UIResourceBitmap;
+}
+
+namespace ui {
+
+class SystemUIResourceLayer;
+class UIResourceProvider;
+
+class UI_BASE_EXPORT SystemUIResourceManager {
+ public:
+ SystemUIResourceManager();
+
+ void SetUIResourceProvider(ui::UIResourceProvider* provider) {
jdduke (slow) 2014/07/12 01:01:09 Could we instead make this an argument to the cons
powei 2014/07/16 17:10:52 Done. SystemUIResource is now owned by UIResource
+ ui_resource_provider_ = provider;
+ }
+
+ void Subscribe(SystemUIResource::Type type, SystemUIResourceLayer* layer);
+ void Unsubscribe(SystemUIResource::Type type, SystemUIResourceLayer* layer);
+ void RefreshResourceOnSubscribers(SystemUIResource::Type type);
+ virtual ~SystemUIResourceManager() {}
jdduke (slow) 2014/07/12 01:01:09 Nit: Let's move the destructor up below the constr
powei 2014/07/16 17:10:52 Done.
+
+ protected:
+ virtual void BuildResource(ui::SystemUIResource::Type type) = 0;
jdduke (slow) 2014/07/12 01:01:09 Can you explain why this class needs to be abstrac
powei 2014/07/16 17:10:52 Acknowledged.
+
+ class Data : public SystemUIResourceClient {
+ public:
+ Data();
+ virtual ~Data();
+ void Subscribe(SystemUIResourceLayer* layer);
+ void Unsubscribe(SystemUIResourceLayer* layer);
+ void SetResource(scoped_ptr<SystemUIResource> resource);
+ void RefreshResource();
+ bool HasResource() { return resource_; }
+
+ // Implements SystemUIResourceClient.
+ virtual void OnUIResourceIdChanged() OVERRIDE;
+
+ private:
+ typedef ObserverList<SystemUIResourceLayer> Subscribers;
+
+ scoped_ptr<SystemUIResource> resource_;
+ Subscribers subscribers_;
+
+ DISALLOW_COPY_AND_ASSIGN(Data);
+ };
+
+ Data* GetData(SystemUIResource::Type type);
+
+ UIResourceProvider* GetUIResourceProvider();
+
+ private:
+ typedef base::ScopedPtrHashMap<int, Data> SystemUIResourceMap;
+ SystemUIResourceMap resource_map_;
+ UIResourceProvider* ui_resource_provider_;
+
+ DISALLOW_COPY_AND_ASSIGN(SystemUIResourceManager);
+};
+
+} // namespace ui
+
+#endif // UI_BASE_ANDROID_SYSTEM_UI_RESOURCE_MANAGER_H_

Powered by Google App Engine
This is Rietveld 408576698