OLD | NEW |
---|---|
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 package org.chromium.chrome.browser.dom_distiller; | 5 package org.chromium.chrome.browser.dom_distiller; |
6 | 6 |
7 import android.app.Activity; | 7 import android.app.Activity; |
8 import android.support.v7.app.AlertDialog; | 8 import android.support.v7.app.AlertDialog; |
9 | 9 |
10 import org.chromium.base.annotations.CalledByNative; | 10 import org.chromium.base.annotations.CalledByNative; |
11 import org.chromium.base.annotations.JNINamespace; | 11 import org.chromium.base.annotations.JNINamespace; |
12 import org.chromium.base.metrics.RecordUserAction; | 12 import org.chromium.base.metrics.RecordUserAction; |
13 import org.chromium.chrome.R; | 13 import org.chromium.chrome.R; |
14 import org.chromium.chrome.browser.compositor.bottombar.OverlayPanel.StateChange Reason; | |
15 import org.chromium.content_public.browser.WebContents; | 14 import org.chromium.content_public.browser.WebContents; |
16 import org.chromium.ui.base.WindowAndroid; | 15 import org.chromium.ui.base.WindowAndroid; |
17 | 16 |
18 /** | 17 /** |
19 * Java implementation of dom_distiller::android::DistillerUIHandleAndroid. | 18 * Java implementation of dom_distiller::android::DistillerUIHandleAndroid. |
20 */ | 19 */ |
21 @JNINamespace("dom_distiller::android") | 20 @JNINamespace("dom_distiller::android") |
22 public final class DomDistillerUIUtils { | 21 public final class DomDistillerUIUtils { |
23 // Static handle to Reader Mode's manager. | 22 // Static handle to Reader Mode's manager. |
24 private static ReaderModeManagerDelegate sManagerDelegate; | 23 private static ReaderModeManager sManagerManager; |
wychen
2017/06/28 21:32:37
Do we still need this?
mdjones
2017/06/29 15:38:35
Guess not, kept it around for the settings util bu
| |
25 | 24 |
26 /** | 25 /** |
27 * Set the delegate to the ReaderModeManager. | 26 * Set the delegate to the ReaderModeManager. |
28 * @param delegate The delegate for the ReaderModeManager. | 27 * @param manager The class managing Reader Mode. |
29 */ | 28 */ |
30 public static void setReaderModeManagerDelegate(ReaderModeManagerDelegate de legate) { | 29 public static void setReaderModeManagerDelegate(ReaderModeManager manager) { |
31 sManagerDelegate = delegate; | 30 sManagerManager = manager; |
32 } | 31 } |
33 | 32 |
34 /** | 33 /** |
35 * A static method for native code to call to open the distiller UI settings . | 34 * A static method for native code to call to open the distiller UI settings . |
36 * @param webContents The WebContents containing the distilled content. | 35 * @param webContents The WebContents containing the distilled content. |
37 */ | 36 */ |
38 @CalledByNative | 37 @CalledByNative |
39 public static void openSettings(WebContents webContents) { | 38 public static void openSettings(WebContents webContents) { |
40 Activity activity = getActivityFromWebContents(webContents); | 39 Activity activity = getActivityFromWebContents(webContents); |
41 if (webContents != null && activity != null) { | 40 if (webContents != null && activity != null) { |
42 RecordUserAction.record("DomDistiller_DistilledPagePrefsOpened"); | 41 RecordUserAction.record("DomDistiller_DistilledPagePrefsOpened"); |
43 AlertDialog.Builder builder = | 42 AlertDialog.Builder builder = |
44 new AlertDialog.Builder(activity, R.style.AlertDialogTheme); | 43 new AlertDialog.Builder(activity, R.style.AlertDialogTheme); |
45 builder.setView(DistilledPagePrefsView.create(activity)); | 44 builder.setView(DistilledPagePrefsView.create(activity)); |
46 builder.show(); | 45 builder.show(); |
47 } | 46 } |
48 } | 47 } |
49 | 48 |
50 /** | 49 /** |
51 * A static method for native code to close the current Reader Mode panel. T his should be | 50 * Clear static references to objects. |
52 * some usage of a "close" button. | 51 * @param manager The manager requesting the destoy. This prevents different managers in |
53 * @param animate If the panel should animate closed. | 52 * document mode from accidentally clearing a reference it doesn't own. |
54 */ | 53 */ |
55 @CalledByNative | 54 public static void destroy(ReaderModeManager manager) { |
56 public static void closePanel(boolean animate) { | 55 if (manager != sManagerManager) return; |
57 if (sManagerDelegate == null) return; | 56 sManagerManager = null; |
58 sManagerDelegate.closeReaderPanel(StateChangeReason.CLOSE_BUTTON, animat e); | |
59 } | 57 } |
60 | 58 |
61 /** | 59 /** |
62 * Clear static references to objects. | |
63 * @param delegate The delegate requesting the destoy. This prevents differe nt managers in | |
64 * document mode from accidentally clearing a reference it doesn't own. | |
65 */ | |
66 public static void destroy(ReaderModeManagerDelegate delegate) { | |
67 if (delegate != sManagerDelegate) return; | |
68 sManagerDelegate = null; | |
69 } | |
70 | |
71 /** | |
72 * @param webContents The WebContents to get the Activity from. | 60 * @param webContents The WebContents to get the Activity from. |
73 * @return The Activity associated with the WebContents. | 61 * @return The Activity associated with the WebContents. |
74 */ | 62 */ |
75 private static Activity getActivityFromWebContents(WebContents webContents) { | 63 private static Activity getActivityFromWebContents(WebContents webContents) { |
76 if (webContents == null) return null; | 64 if (webContents == null) return null; |
77 | 65 |
78 WindowAndroid window = webContents.getTopLevelNativeWindow(); | 66 WindowAndroid window = webContents.getTopLevelNativeWindow(); |
79 if (window == null) return null; | 67 if (window == null) return null; |
80 | 68 |
81 return window.getActivity().get(); | 69 return window.getActivity().get(); |
82 } | 70 } |
83 | 71 |
84 private DomDistillerUIUtils() {} | 72 private DomDistillerUIUtils() {} |
85 } | 73 } |
OLD | NEW |