1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 package org.chromium.content.browser.selection;
6 
7 import android.annotation.TargetApi;
8 import android.graphics.Rect;
9 import android.os.Build;
10 import android.view.ActionMode;
11 import android.view.Menu;
12 import android.view.MenuItem;
13 import android.view.View;
14 
15 import org.chromium.content_public.browser.ActionModeCallbackHelper;
16 
17 /**
18  * A class thatextends ActionMode.Callback2 to support floating ActionModes.
19  */
20 @TargetApi(Build.VERSION_CODES.M)
21 public class FloatingActionModeCallback extends ActionMode.Callback2 {
22     private final ActionModeCallbackHelper mHelper;
23     private final ActionMode.Callback mCallback;
24 
FloatingActionModeCallback(ActionModeCallbackHelper helper, ActionMode.Callback callback)25     public FloatingActionModeCallback(ActionModeCallbackHelper helper,
26             ActionMode.Callback callback) {
27         mHelper = helper;
28         mCallback = callback;
29     }
30 
31     @Override
onCreateActionMode(ActionMode mode, Menu menu)32     public boolean onCreateActionMode(ActionMode mode, Menu menu) {
33         // If the created ActionMode isn't actually floating, abort creation altogether.
34         if (mode.getType() != ActionMode.TYPE_FLOATING) return false;
35         return mCallback.onCreateActionMode(mode, menu);
36     }
37 
38     @Override
onPrepareActionMode(ActionMode mode, Menu menu)39     public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
40         return mCallback.onPrepareActionMode(mode, menu);
41     }
42 
43     @Override
onActionItemClicked(ActionMode mode, MenuItem item)44     public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
45         return mCallback.onActionItemClicked(mode, item);
46     }
47 
48     @Override
onDestroyActionMode(ActionMode mode)49     public void onDestroyActionMode(ActionMode mode) {
50         mCallback.onDestroyActionMode(mode);
51     }
52 
53     @Override
onGetContentRect(ActionMode mode, View view, Rect outRect)54     public void onGetContentRect(ActionMode mode, View view, Rect outRect) {
55         mHelper.onGetContentRect(mode, view, outRect);
56     }
57 }
58