| Index: content/public/android/java/src/org/chromium/content/browser/ZoomManager.java
|
| diff --git a/content/public/android/java/src/org/chromium/content/browser/ZoomManager.java b/content/public/android/java/src/org/chromium/content/browser/ZoomManager.java
|
| deleted file mode 100644
|
| index fd2a5234108dfc2b4de843861fbea19f3d27c89d..0000000000000000000000000000000000000000
|
| --- a/content/public/android/java/src/org/chromium/content/browser/ZoomManager.java
|
| +++ /dev/null
|
| @@ -1,167 +0,0 @@
|
| -// Copyright 2012 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.
|
| -
|
| -package org.chromium.content.browser;
|
| -
|
| -import android.annotation.TargetApi;
|
| -import android.content.Context;
|
| -import android.os.Build;
|
| -import android.util.Log;
|
| -import android.view.MotionEvent;
|
| -import android.view.ScaleGestureDetector;
|
| -
|
| -/**
|
| - * ZoomManager is responsible for maintaining the ContentView's current zoom
|
| - * level state and process scaling-related gestures.
|
| - */
|
| -class ZoomManager {
|
| - private static final String TAG = "ContentViewZoom";
|
| -
|
| - private final ContentViewCore mContentViewCore;
|
| -
|
| - // ScaleGestureDetector previous to 4.2.2 failed to record touch event times (b/7626515),
|
| - // so we record them manually for use when synthesizing pinch gestures.
|
| - private long mCurrentEventTime;
|
| -
|
| - private class ScaleGestureListener implements ScaleGestureDetector.OnScaleGestureListener {
|
| - // Completely silence scaling events. Used in WebView when zoom support
|
| - // is turned off.
|
| - private boolean mPermanentlyIgnoreDetectorEvents = false;
|
| - // Bypass events through the detector to maintain its state. Used when
|
| - // renderes already handles the touch event.
|
| - private boolean mTemporarilyIgnoreDetectorEvents = false;
|
| -
|
| - // Whether any pinch zoom event has been sent to native.
|
| - private boolean mPinchEventSent;
|
| -
|
| - long getEventTime(ScaleGestureDetector detector) {
|
| - // Workaround for b/7626515, fixed in 4.2.2.
|
| - assert mCurrentEventTime != 0;
|
| - assert detector.getEventTime() == 0 || detector.getEventTime() == mCurrentEventTime;
|
| - return mCurrentEventTime;
|
| - }
|
| -
|
| - boolean getPermanentlyIgnoreDetectorEvents() {
|
| - return mPermanentlyIgnoreDetectorEvents;
|
| - }
|
| -
|
| - void setPermanentlyIgnoreDetectorEvents(boolean value) {
|
| - // Note that returning false from onScaleBegin / onScale makes the
|
| - // gesture detector not to emit further scaling notifications
|
| - // related to this gesture. Thus, if detector events are enabled in
|
| - // the middle of the gesture, we don't need to do anything.
|
| - mPermanentlyIgnoreDetectorEvents = value;
|
| - }
|
| -
|
| - void setTemporarilyIgnoreDetectorEvents(boolean value) {
|
| - mTemporarilyIgnoreDetectorEvents = value;
|
| - }
|
| -
|
| - @Override
|
| - public boolean onScaleBegin(ScaleGestureDetector detector) {
|
| - if (ignoreDetectorEvents()) return false;
|
| - mPinchEventSent = false;
|
| - mContentViewCore.getContentViewGestureHandler().setIgnoreSingleTap(true);
|
| - return true;
|
| - }
|
| -
|
| - @Override
|
| - public void onScaleEnd(ScaleGestureDetector detector) {
|
| - if (!mPinchEventSent || !mContentViewCore.isAlive()) return;
|
| - mContentViewCore.getContentViewGestureHandler().pinchEnd(getEventTime(detector));
|
| - mPinchEventSent = false;
|
| - }
|
| -
|
| - @Override
|
| - public boolean onScale(ScaleGestureDetector detector) {
|
| - if (ignoreDetectorEvents()) return false;
|
| - // It is possible that pinchBegin() was never called when we reach here.
|
| - // This happens when webkit handles the 2nd touch down event. That causes
|
| - // ContentView to ignore the onScaleBegin() call. And if webkit does not
|
| - // handle the touch move events afterwards, we will face a situation
|
| - // that pinchBy() is called without any pinchBegin().
|
| - // To solve this problem, we call pinchBegin() here if it is never called.
|
| - if (!mPinchEventSent) {
|
| - mContentViewCore.getContentViewGestureHandler().pinchBegin(getEventTime(detector),
|
| - (int) detector.getFocusX(), (int) detector.getFocusY());
|
| - mPinchEventSent = true;
|
| - }
|
| - mContentViewCore.getContentViewGestureHandler().pinchBy(
|
| - getEventTime(detector), (int) detector.getFocusX(), (int) detector.getFocusY(),
|
| - detector.getScaleFactor());
|
| - return true;
|
| - }
|
| -
|
| - private boolean ignoreDetectorEvents() {
|
| - return mPermanentlyIgnoreDetectorEvents ||
|
| - mTemporarilyIgnoreDetectorEvents ||
|
| - !mContentViewCore.isAlive();
|
| - }
|
| - }
|
| -
|
| - private final ScaleGestureDetector mMultiTouchDetector;
|
| - private final ScaleGestureListener mMultiTouchListener;
|
| -
|
| - ZoomManager(final Context context, ContentViewCore contentViewCore) {
|
| - mContentViewCore = contentViewCore;
|
| - mMultiTouchListener = new ScaleGestureListener();
|
| - mMultiTouchDetector = new ScaleGestureDetector(context, mMultiTouchListener);
|
| -
|
| - // ScaleGestureDetector's "QuickScale" feature was introduced in KitKat.
|
| - // As ContentViewGestureHandler already implements this feature,
|
| - // explicitly disable it to prevent double-handling of the gesture.
|
| - disableQuickScale(mMultiTouchDetector);
|
| - }
|
| -
|
| - boolean isScaleGestureDetectionInProgress() {
|
| - return !mMultiTouchListener.getPermanentlyIgnoreDetectorEvents()
|
| - && mMultiTouchDetector.isInProgress();
|
| - }
|
| -
|
| - // Passes the touch event to ScaleGestureDetector so that its internal
|
| - // state won't go wrong, but instructs the listener to ignore the result
|
| - // of processing, if any.
|
| - void passTouchEventThrough(MotionEvent event) {
|
| - mMultiTouchListener.setTemporarilyIgnoreDetectorEvents(true);
|
| - mCurrentEventTime = event.getEventTime();
|
| - try {
|
| - mMultiTouchDetector.onTouchEvent(event);
|
| - } catch (Exception e) {
|
| - Log.e(TAG, "ScaleGestureDetector got into a bad state!", e);
|
| - assert false;
|
| - }
|
| - }
|
| -
|
| - // Passes the touch event to ScaleGestureDetector so that its internal state
|
| - // won't go wrong. ScaleGestureDetector needs two pointers in a MotionEvent
|
| - // to recognize a zoom gesture.
|
| - boolean processTouchEvent(MotionEvent event) {
|
| - // TODO: Need to deal with multi-touch transition
|
| - mMultiTouchListener.setTemporarilyIgnoreDetectorEvents(false);
|
| - mCurrentEventTime = event.getEventTime();
|
| - try {
|
| - boolean inGesture = isScaleGestureDetectionInProgress();
|
| - boolean retVal = mMultiTouchDetector.onTouchEvent(event);
|
| - if (!inGesture && (event.getActionMasked() == MotionEvent.ACTION_UP
|
| - || event.getActionMasked() == MotionEvent.ACTION_CANCEL)) {
|
| - return false;
|
| - }
|
| - return retVal;
|
| - } catch (Exception e) {
|
| - Log.e(TAG, "ScaleGestureDetector got into a bad state!", e);
|
| - assert false;
|
| - }
|
| - return false;
|
| - }
|
| -
|
| - void updateMultiTouchSupport(boolean supportsMultiTouchZoom) {
|
| - mMultiTouchListener.setPermanentlyIgnoreDetectorEvents(!supportsMultiTouchZoom);
|
| - }
|
| -
|
| - @TargetApi(Build.VERSION_CODES.KITKAT)
|
| - private static void disableQuickScale(ScaleGestureDetector scaleGestureDetector) {
|
| - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) return;
|
| - scaleGestureDetector.setQuickScaleEnabled(false);
|
| - }
|
| -}
|
|
|