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

Unified Diff: content/browser/android/system_ui_resource_manager_impl.cc

Issue 755643004: Replace SystemUIResourceManager with ResourceManager (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix clang build failure Created 6 years 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: content/browser/android/system_ui_resource_manager_impl.cc
diff --git a/content/browser/android/system_ui_resource_manager_impl.cc b/content/browser/android/system_ui_resource_manager_impl.cc
deleted file mode 100644
index ea64c80272229acea54c4d26dbf59a2e66842519..0000000000000000000000000000000000000000
--- a/content/browser/android/system_ui_resource_manager_impl.cc
+++ /dev/null
@@ -1,207 +0,0 @@
-// 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.
-
-#include "content/browser/android/system_ui_resource_manager_impl.h"
-
-#include "base/bind.h"
-#include "base/bind_helpers.h"
-#include "base/debug/trace_event.h"
-#include "base/location.h"
-#include "base/observer_list.h"
-#include "base/threading/worker_pool.h"
-#include "cc/resources/ui_resource_bitmap.h"
-#include "content/public/browser/android/ui_resource_client_android.h"
-#include "content/public/browser/android/ui_resource_provider.h"
-#include "jni/UIResources_jni.h"
-#include "skia/ext/image_operations.h"
-#include "third_party/skia/include/core/SkBitmap.h"
-#include "third_party/skia/include/core/SkCanvas.h"
-#include "third_party/skia/include/core/SkPaint.h"
-#include "ui/gfx/android/java_bitmap.h"
-#include "ui/gfx/screen.h"
-
-namespace content {
-namespace {
-
-SkBitmap CreateOverscrollGlowLBitmap(const gfx::Size& screen_size) {
- const float kSin = 0.5f; // sin(PI / 6)
- const float kCos = 0.866f; // cos(PI / 6);
-
- SkPaint paint;
- paint.setAntiAlias(true);
- paint.setAlpha(0xBB);
- paint.setStyle(SkPaint::kFill_Style);
-
- const float arc_width =
- std::min(screen_size.width(), screen_size.height()) * 0.5f / kSin;
- const float y = kCos * arc_width;
- const float height = arc_width - y;
- gfx::Size bounds(arc_width, height);
- SkRect arc_rect = SkRect::MakeXYWH(
- -arc_width / 2.f, -arc_width - y, arc_width * 2.f, arc_width * 2.f);
- SkBitmap glow_bitmap;
- glow_bitmap.allocPixels(SkImageInfo::MakeA8(bounds.width(), bounds.height()));
- glow_bitmap.eraseColor(SK_ColorTRANSPARENT);
-
- SkCanvas canvas(glow_bitmap);
- canvas.clipRect(SkRect::MakeXYWH(0, 0, bounds.width(), bounds.height()));
- canvas.drawArc(arc_rect, 45, 90, true, paint);
- return glow_bitmap;
-}
-
-SkBitmap LoadJavaBitmap(ui::SystemUIResourceType type, const gfx::Size& size) {
- ScopedJavaLocalRef<jobject> jobj =
- Java_UIResources_getBitmap(base::android::AttachCurrentThread(),
- base::android::GetApplicationContext(), type,
- size.width(), size.height());
- if (jobj.is_null())
- return SkBitmap();
-
- SkBitmap bitmap = CreateSkBitmapFromJavaBitmap(gfx::JavaBitmap(jobj.obj()));
- if (bitmap.isNull())
- return bitmap;
-
- if (size.IsEmpty())
- return bitmap;
-
- return skia::ImageOperations::Resize(
- bitmap, skia::ImageOperations::RESIZE_BOX, size.width(), size.height());
-}
-
-void LoadBitmap(ui::SystemUIResourceType type,
- SkBitmap* bitmap_holder,
- const gfx::Size& screen_size) {
- TRACE_EVENT1(
- "browser", "SystemUIResourceManagerImpl::LoadBitmap", "type", type);
- SkBitmap bitmap;
- switch (type) {
- case ui::OVERSCROLL_EDGE:
- bitmap = LoadJavaBitmap(type, gfx::Size(128, 12));
- break;
- case ui::OVERSCROLL_GLOW:
- bitmap = LoadJavaBitmap(type, gfx::Size(128, 64));
- break;
- case ui::OVERSCROLL_GLOW_L:
- bitmap = CreateOverscrollGlowLBitmap(screen_size);
- break;
- case ui::OVERSCROLL_REFRESH_IDLE:
- case ui::OVERSCROLL_REFRESH_ACTIVE:
- bitmap = LoadJavaBitmap(type, gfx::Size());
- break;
- }
- bitmap.setImmutable();
- *bitmap_holder = bitmap;
-}
-
-} // namespace
-
-class SystemUIResourceManagerImpl::Entry
- : public content::UIResourceClientAndroid {
- public:
- explicit Entry(UIResourceProvider* provider) : id_(0), provider_(provider) {
- DCHECK(provider);
- }
-
- ~Entry() override {
- if (id_)
- provider_->DeleteUIResource(id_);
- id_ = 0;
- }
-
- void SetBitmap(const SkBitmap& bitmap) {
- DCHECK(!bitmap.empty());
- DCHECK(bitmap_.empty());
- DCHECK(!id_);
- bitmap_ = bitmap;
- }
-
- cc::UIResourceId GetUIResourceId() {
- if (bitmap_.empty())
- return 0;
- if (!id_)
- id_ = provider_->CreateUIResource(this);
- return id_;
- }
-
- // content::UIResourceClient implementation.
- cc::UIResourceBitmap GetBitmap(cc::UIResourceId uid,
- bool resource_lost) override {
- DCHECK(!bitmap_.empty());
- return cc::UIResourceBitmap(bitmap_);
- }
-
- // content::UIResourceClientAndroid implementation.
- void UIResourceIsInvalid() override { id_ = 0; }
-
- const SkBitmap& bitmap() const { return bitmap_; }
-
- private:
- SkBitmap bitmap_;
- cc::UIResourceId id_;
- UIResourceProvider* provider_;
-
- DISALLOW_COPY_AND_ASSIGN(Entry);
-};
-
-SystemUIResourceManagerImpl::SystemUIResourceManagerImpl(
- UIResourceProvider* ui_resource_provider)
- : ui_resource_provider_(ui_resource_provider), weak_factory_(this) {
-}
-
-SystemUIResourceManagerImpl::~SystemUIResourceManagerImpl() {
-}
-
-void SystemUIResourceManagerImpl::PreloadResource(
- ui::SystemUIResourceType type) {
- GetEntry(type);
-}
-
-cc::UIResourceId SystemUIResourceManagerImpl::GetUIResourceId(
- ui::SystemUIResourceType type) {
- return GetEntry(type)->GetUIResourceId();
-}
-
-SystemUIResourceManagerImpl::Entry* SystemUIResourceManagerImpl::GetEntry(
- ui::SystemUIResourceType type) {
- DCHECK_GE(type, ui::SYSTEM_UI_RESOURCE_TYPE_FIRST);
- DCHECK_LE(type, ui::SYSTEM_UI_RESOURCE_TYPE_LAST);
- if (!resource_map_[type]) {
- resource_map_[type].reset(new Entry(ui_resource_provider_));
- // Lazily build the resource.
- BuildResource(type);
- }
- return resource_map_[type].get();
-}
-
-void SystemUIResourceManagerImpl::BuildResource(ui::SystemUIResourceType type) {
- DCHECK(GetEntry(type)->bitmap().empty());
-
- // Instead of blocking the main thread, we post a task to load the bitmap.
- SkBitmap* bitmap = new SkBitmap();
- gfx::Size screen_size =
- gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().GetSizeInPixel();
- base::Closure load_bitmap =
- base::Bind(&LoadBitmap, type, bitmap, screen_size);
- base::Closure finished_load =
- base::Bind(&SystemUIResourceManagerImpl::OnFinishedLoadBitmap,
- weak_factory_.GetWeakPtr(),
- type,
- base::Owned(bitmap));
- base::WorkerPool::PostTaskAndReply(
- FROM_HERE, load_bitmap, finished_load, true);
-}
-
-void SystemUIResourceManagerImpl::OnFinishedLoadBitmap(
- ui::SystemUIResourceType type,
- SkBitmap* bitmap_holder) {
- DCHECK(bitmap_holder);
- GetEntry(type)->SetBitmap(*bitmap_holder);
-}
-
-// static
-bool SystemUIResourceManagerImpl::RegisterUIResources(JNIEnv* env) {
- return RegisterNativesImpl(env);
-}
-
-} // namespace content

Powered by Google App Engine
This is Rietveld 408576698