Commit 50d157ac authored by Jinsuk Kim's avatar Jinsuk Kim Committed by Commit Bot

Android: Moves HandleViewResources to ui/resources

Moves HandleViewResources to ui/resources.
Also removes the DEPS exception rule that becomes unnecessary.

Bug: 617324
Change-Id: Ideb9b2d858ffe8a9f5ea7f345c7a9cdd3a9c38cd
Reviewed-on: https://chromium-review.googlesource.com/1071148Reviewed-by: default avatarMohsen Izadi <mohsen@chromium.org>
Reviewed-by: default avatarBo <boliu@chromium.org>
Reviewed-by: default avatarTed Choc <tedchoc@chromium.org>
Commit-Queue: Jinsuk Kim <jinsukkim@chromium.org>
Cr-Commit-Position: refs/heads/master@{#563072}
parent 18a64f8e
......@@ -12,7 +12,6 @@ include_rules = [
"+content/public/android/java/src/org/chromium/content_public",
"!content/public/android/java/src/org/chromium/content/browser/ChildProcessCreationParams.java",
"!content/public/android/java/src/org/chromium/content/browser/ChildProcessLauncherHelper.java",
"!content/public/android/java/src/org/chromium/content/browser/selection/HandleViewResources.java",
"+device/gamepad/android/java",
"+media/base/android/java",
......
......@@ -23,12 +23,12 @@ import android.widget.PopupWindow;
import org.chromium.base.ObserverList;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace;
import org.chromium.content.browser.selection.HandleViewResources;
import org.chromium.content_public.browser.GestureListenerManager;
import org.chromium.content_public.browser.GestureStateListener;
import org.chromium.content_public.browser.WebContents;
import org.chromium.ui.base.WindowAndroid;
import org.chromium.ui.display.DisplayAndroid.DisplayAndroidObserver;
import org.chromium.ui.resources.HandleViewResources;
import org.chromium.ui.touch_selection.TouchHandleOrientation;
import java.lang.reflect.InvocationTargetException;
......
......@@ -7,11 +7,9 @@
#include "base/lazy_instance.h"
#include "base/logging.h"
#include "base/macros.h"
#include "base/trace_event/trace_event.h"
#include "cc/layers/ui_resource_layer.h"
#include "content/public/browser/android/compositor.h"
#include "jni/HandleViewResources_jni.h"
#include "ui/gfx/android/java_bitmap.h"
#include "ui/android/handle_view_resources.h"
using base::android::JavaRef;
......@@ -19,73 +17,7 @@ namespace content {
namespace {
static SkBitmap CreateSkBitmapFromJavaBitmap(
base::android::ScopedJavaLocalRef<jobject> jbitmap) {
return jbitmap.is_null()
? SkBitmap()
: CreateSkBitmapFromJavaBitmap(gfx::JavaBitmap(jbitmap));
}
class HandleResources {
public:
HandleResources() : loaded_(false) {
}
void LoadIfNecessary(const JavaRef<jobject>& context) {
if (loaded_)
return;
loaded_ = true;
TRACE_EVENT0("browser", "HandleResources::Create");
JNIEnv* env = base::android::AttachCurrentThread();
left_bitmap_ = CreateSkBitmapFromJavaBitmap(
Java_HandleViewResources_getLeftHandleBitmap(env, context));
right_bitmap_ = CreateSkBitmapFromJavaBitmap(
Java_HandleViewResources_getRightHandleBitmap(env, context));
center_bitmap_ = CreateSkBitmapFromJavaBitmap(
Java_HandleViewResources_getCenterHandleBitmap(env, context));
left_bitmap_.setImmutable();
right_bitmap_.setImmutable();
center_bitmap_.setImmutable();
drawable_horizontal_padding_ratio_ =
Java_HandleViewResources_getHandleHorizontalPaddingRatio(env);
}
const SkBitmap& GetBitmap(ui::TouchHandleOrientation orientation) {
DCHECK(loaded_);
switch (orientation) {
case ui::TouchHandleOrientation::LEFT:
return left_bitmap_;
case ui::TouchHandleOrientation::RIGHT:
return right_bitmap_;
case ui::TouchHandleOrientation::CENTER:
return center_bitmap_;
case ui::TouchHandleOrientation::UNDEFINED:
NOTREACHED() << "Invalid touch handle orientation.";
};
return center_bitmap_;
}
float GetDrawableHorizontalPaddingRatio() const {
DCHECK(loaded_);
return drawable_horizontal_padding_ratio_;
}
private:
SkBitmap left_bitmap_;
SkBitmap right_bitmap_;
SkBitmap center_bitmap_;
float drawable_horizontal_padding_ratio_;
bool loaded_;
DISALLOW_COPY_AND_ASSIGN(HandleResources);
};
base::LazyInstance<HandleResources>::Leaky g_selection_resources;
base::LazyInstance<ui::HandleViewResources>::Leaky g_selection_resources;
} // namespace
......
......@@ -5,12 +5,15 @@
#ifndef CONTENT_BROWSER_ANDROID_SELECTION_COMPOSITED_TOUCH_HANDLE_DRAWABLE_H_
#define CONTENT_BROWSER_ANDROID_SELECTION_COMPOSITED_TOUCH_HANDLE_DRAWABLE_H_
#include "ui/touch_selection/touch_handle.h"
#include "base/android/jni_android.h"
#include "base/android/scoped_java_ref.h"
#include "base/macros.h"
#include "cc/layers/ui_resource_layer.h"
#include "base/memory/scoped_refptr.h"
#include "ui/touch_selection/touch_handle.h"
namespace cc {
class Layer;
class UIResourceLayer;
} // namespace cc
namespace content {
......
......@@ -206,7 +206,6 @@ android_library("content_java") {
"java/src/org/chromium/content/browser/selection/AdditionalMenuItemProvider.java",
"java/src/org/chromium/content/browser/selection/FloatingActionModeCallback.java",
"java/src/org/chromium/content/browser/selection/FloatingPastePopupMenu.java",
"java/src/org/chromium/content/browser/selection/HandleViewResources.java",
"java/src/org/chromium/content/browser/selection/LGEmailActionModeWorkaroundImpl.java",
"java/src/org/chromium/content/browser/selection/LegacyPastePopupMenu.java",
"java/src/org/chromium/content/browser/selection/PastePopupMenu.java",
......@@ -389,7 +388,6 @@ generate_jni("content_jni_headers") {
"java/src/org/chromium/content/browser/input/SelectPopup.java",
"java/src/org/chromium/content/browser/input/SuggestionInfo.java",
"java/src/org/chromium/content/browser/input/TextSuggestionHost.java",
"java/src/org/chromium/content/browser/selection/HandleViewResources.java",
"java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java",
"java/src/org/chromium/content/browser/selection/SmartSelectionClient.java",
"java/src/org/chromium/content/browser/webcontents/WebContentsImpl.java",
......
......@@ -23,6 +23,8 @@ component("android") {
"edge_effect_l.h",
"event_forwarder.cc",
"event_forwarder.h",
"handle_view_resources.cc",
"handle_view_resources.h",
"overscroll_glow.cc",
"overscroll_glow.h",
"overscroll_refresh.cc",
......@@ -69,6 +71,7 @@ component("android") {
"//ui/events/devices",
"//ui/gfx",
"//ui/gfx/geometry",
"//ui/touch_selection",
"//url",
]
}
......@@ -93,6 +96,7 @@ generate_jni("ui_android_jni_headers") {
"java/src/org/chromium/ui/base/ViewAndroidDelegate.java",
"java/src/org/chromium/ui/base/WindowAndroid.java",
"java/src/org/chromium/ui/display/DisplayAndroidManager.java",
"java/src/org/chromium/ui/resources/HandleViewResources.java",
"java/src/org/chromium/ui/resources/ResourceFactory.java",
"java/src/org/chromium/ui/resources/ResourceManager.java",
]
......@@ -229,6 +233,7 @@ android_library("ui_full_java") {
"java/src/org/chromium/ui/gl/SurfaceTextureListener.java",
"java/src/org/chromium/ui/gl/SurfaceTexturePlatformWrapper.java",
"java/src/org/chromium/ui/interpolators/BakedBezierInterpolator.java",
"java/src/org/chromium/ui/resources/HandleViewResources.java",
"java/src/org/chromium/ui/resources/LayoutResource.java",
"java/src/org/chromium/ui/resources/Resource.java",
"java/src/org/chromium/ui/resources/ResourceFactory.java",
......
......@@ -20,6 +20,7 @@ include_rules = [
"+ui/display",
"+ui/events",
"+ui/gfx",
"+ui/touch_selection/touch_handle.h",
]
specific_include_rules = {
......
// Copyright 2018 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 "ui/android/handle_view_resources.h"
#include "base/trace_event/trace_event.h"
#include "jni/HandleViewResources_jni.h"
namespace {
static SkBitmap CreateSkBitmapFromJavaBitmap(
base::android::ScopedJavaLocalRef<jobject> jbitmap) {
return jbitmap.is_null()
? SkBitmap()
: CreateSkBitmapFromJavaBitmap(gfx::JavaBitmap(jbitmap));
}
} // namespace
namespace ui {
HandleViewResources::HandleViewResources() {}
void HandleViewResources::LoadIfNecessary(const JavaRef<jobject>& context) {
if (loaded_)
return;
loaded_ = true;
TRACE_EVENT0("ui", "HandleViewResources::Create");
JNIEnv* env = base::android::AttachCurrentThread();
left_bitmap_ = CreateSkBitmapFromJavaBitmap(
Java_HandleViewResources_getLeftHandleBitmap(env, context));
right_bitmap_ = CreateSkBitmapFromJavaBitmap(
Java_HandleViewResources_getRightHandleBitmap(env, context));
center_bitmap_ = CreateSkBitmapFromJavaBitmap(
Java_HandleViewResources_getCenterHandleBitmap(env, context));
left_bitmap_.setImmutable();
right_bitmap_.setImmutable();
center_bitmap_.setImmutable();
drawable_horizontal_padding_ratio_ =
Java_HandleViewResources_getHandleHorizontalPaddingRatio(env);
}
const SkBitmap& HandleViewResources::GetBitmap(
ui::TouchHandleOrientation orientation) {
DCHECK(loaded_);
switch (orientation) {
case ui::TouchHandleOrientation::LEFT:
return left_bitmap_;
case ui::TouchHandleOrientation::RIGHT:
return right_bitmap_;
case ui::TouchHandleOrientation::CENTER:
return center_bitmap_;
case ui::TouchHandleOrientation::UNDEFINED:
NOTREACHED() << "Invalid touch handle orientation.";
};
return center_bitmap_;
}
float HandleViewResources::GetDrawableHorizontalPaddingRatio() const {
DCHECK(loaded_);
return drawable_horizontal_padding_ratio_;
}
} // namespace ui
// Copyright 2018 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_ANDROID_HANDLE_VIEW_RESOURCES_H_
#define UI_ANDROID_HANDLE_VIEW_RESOURCES_H_
#include "base/android/jni_android.h"
#include "base/android/scoped_java_ref.h"
#include "base/macros.h"
#include "ui/android/ui_android_export.h"
#include "ui/gfx/android/java_bitmap.h"
#include "ui/touch_selection/touch_handle.h"
using base::android::JavaRef;
namespace ui {
// Bridge to Java bitmap resources for selection handle.
class UI_ANDROID_EXPORT HandleViewResources {
public:
HandleViewResources();
void LoadIfNecessary(const JavaRef<jobject>& context);
const SkBitmap& GetBitmap(ui::TouchHandleOrientation orientation);
float GetDrawableHorizontalPaddingRatio() const;
private:
SkBitmap left_bitmap_;
SkBitmap right_bitmap_;
SkBitmap center_bitmap_;
float drawable_horizontal_padding_ratio_;
bool loaded_ = false;
DISALLOW_COPY_AND_ASSIGN(HandleViewResources);
};
} // namespace ui
#endif // UI_ANDROID_HANDLE_VIEW_RESOURCES_H_
......@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.content.browser.selection;
package org.chromium.ui.resources;
import android.content.Context;
import android.content.res.Resources;
......@@ -20,7 +20,7 @@ import org.chromium.base.annotations.JNINamespace;
/**
* Helper class for retrieving resources related to selection handles.
*/
@JNINamespace("content")
@JNINamespace("ui")
public class HandleViewResources {
// Android handle drawables have a transparent horizontal padding,
// which is one-fourth of the image. This variable is to take the
......
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