| Index: content/browser/android/popup_touch_handle_drawable.cc
|
| diff --git a/content/browser/android/popup_touch_handle_drawable.cc b/content/browser/android/popup_touch_handle_drawable.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..1076aa0bedc7dd0c9cb2a8452788092115181a75
|
| --- /dev/null
|
| +++ b/content/browser/android/popup_touch_handle_drawable.cc
|
| @@ -0,0 +1,72 @@
|
| +// 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/popup_touch_handle_drawable.h"
|
| +
|
| +#include "jni/PopupTouchHandleDrawable_jni.h"
|
| +
|
| +namespace content {
|
| +
|
| +PopupTouchHandleDrawable::PopupTouchHandleDrawable(
|
| + base::android::ScopedJavaLocalRef<jobject> drawable,
|
| + float dpi_scale)
|
| + : dpi_scale_(dpi_scale), drawable_(drawable) {
|
| + DCHECK(drawable.obj());
|
| +}
|
| +
|
| +PopupTouchHandleDrawable::~PopupTouchHandleDrawable() {
|
| +}
|
| +
|
| +void PopupTouchHandleDrawable::SetOrientation(
|
| + TouchHandleOrientation orientation) {
|
| + JNIEnv* env = base::android::AttachCurrentThread();
|
| + jobject obj = drawable_.obj();
|
| + switch (orientation) {
|
| + case TOUCH_HANDLE_LEFT:
|
| + Java_PopupTouchHandleDrawable_setLeftOrientation(env, obj);
|
| + break;
|
| +
|
| + case TOUCH_HANDLE_RIGHT:
|
| + Java_PopupTouchHandleDrawable_setRightOrientation(env, obj);
|
| + break;
|
| +
|
| + case TOUCH_HANDLE_CENTER:
|
| + Java_PopupTouchHandleDrawable_setCenterOrientation(env, obj);
|
| + break;
|
| +
|
| + case TOUCH_HANDLE_ORIENTATION_UNDEFINED:
|
| + NOTREACHED() << "Invalid touch handle orientation.";
|
| + };
|
| +}
|
| +
|
| +void PopupTouchHandleDrawable::SetAlpha(float alpha) {
|
| + JNIEnv* env = base::android::AttachCurrentThread();
|
| + Java_PopupTouchHandleDrawable_setOpacity(env, drawable_.obj(), alpha);
|
| +}
|
| +
|
| +void PopupTouchHandleDrawable::SetFocus(const gfx::PointF& position) {
|
| + const gfx::PointF position_pix = gfx::ScalePoint(position, dpi_scale_);
|
| + JNIEnv* env = base::android::AttachCurrentThread();
|
| + Java_PopupTouchHandleDrawable_setFocus(
|
| + env, drawable_.obj(), position_pix.x(), position_pix.y());
|
| +}
|
| +
|
| +void PopupTouchHandleDrawable::SetVisible(bool visible) {
|
| + JNIEnv* env = base::android::AttachCurrentThread();
|
| + Java_PopupTouchHandleDrawable_setVisible(env, drawable_.obj(), visible);
|
| +}
|
| +
|
| +bool PopupTouchHandleDrawable::ContainsPoint(const gfx::PointF& point) const {
|
| + const gfx::PointF point_pix = gfx::ScalePoint(point, dpi_scale_);
|
| + JNIEnv* env = base::android::AttachCurrentThread();
|
| + return Java_PopupTouchHandleDrawable_containsPoint(
|
| + env, drawable_.obj(), point_pix.x(), point_pix.y());
|
| +}
|
| +
|
| +// static
|
| +bool PopupTouchHandleDrawable::RegisterPopupTouchHandleDrawable(JNIEnv* env) {
|
| + return RegisterNativesImpl(env);
|
| +}
|
| +
|
| +} // namespace content
|
|
|