Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1320)

Unified Diff: content/public/android/java/src/org/chromium/content/browser/accessibility/captioning/KitKatCaptioningBridge.java

Issue 1132053005: Make KitkatCaptioningBridge a singleton (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: remove unused singleton Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/public/android/java/src/org/chromium/content/browser/accessibility/captioning/KitKatCaptioningBridge.java
diff --git a/content/public/android/java/src/org/chromium/content/browser/accessibility/captioning/KitKatCaptioningBridge.java b/content/public/android/java/src/org/chromium/content/browser/accessibility/captioning/KitKatCaptioningBridge.java
index 04b16e8c30904ea181e6ccafef6384aa323e3286..3b0bc14a05a9af1c68f1d21559cb0c3ed13f253e 100644
--- a/content/public/android/java/src/org/chromium/content/browser/accessibility/captioning/KitKatCaptioningBridge.java
+++ b/content/public/android/java/src/org/chromium/content/browser/accessibility/captioning/KitKatCaptioningBridge.java
@@ -9,8 +9,6 @@ import android.content.Context;
import android.os.Build;
import android.view.accessibility.CaptioningManager;
-import org.chromium.content.browser.ContentViewCore;
-
import java.util.Locale;
/**
@@ -24,6 +22,7 @@ public class KitKatCaptioningBridge implements SystemCaptioningBridge {
private final CaptioningChangeDelegate mCaptioningChangeDelegate;
private final CaptioningManager mCaptioningManager;
+ private static KitKatCaptioningBridge sKitKatCaptioningBridge;
/**
* Bridge listener to inform the mCaptioningChangeDelegate when the mCaptioningManager
@@ -54,22 +53,34 @@ public class KitKatCaptioningBridge implements SystemCaptioningBridge {
}
/**
+ * Return the singleton instance of the captioning bridge for Kitkat+
+ *
+ * @param context the Context to associate with this bridge.
+ * @return the singleton instance of KitKatCaptioningBridge.
+ */
+ public static KitKatCaptioningBridge getInstance(Context context) {
+ if (sKitKatCaptioningBridge == null) {
+ sKitKatCaptioningBridge = new KitKatCaptioningBridge(context);
+ }
+ return sKitKatCaptioningBridge;
+ }
+
+ /**
* Construct a new KitKat+ captioning bridge
*
- * @param contentViewCore the ContentViewCore to associate with this bridge.
+ * @param context the Context to associate with this bridge.
*/
- public KitKatCaptioningBridge(ContentViewCore contenViewCore) {
- mCaptioningChangeDelegate = new CaptioningChangeDelegate(contenViewCore);
- mCaptioningManager = (CaptioningManager) contenViewCore.getContext()
- .getApplicationContext()
- .getSystemService(Context.CAPTIONING_SERVICE);
+ private KitKatCaptioningBridge(Context context) {
+ mCaptioningChangeDelegate = new CaptioningChangeDelegate();
+ mCaptioningManager =
+ (CaptioningManager) context.getApplicationContext().getSystemService(
+ Context.CAPTIONING_SERVICE);
}
/**
* Force-sync the current closed caption settings to the delegate
*/
- @Override
- public void syncToDelegate() {
+ private void syncToDelegate() {
mCaptioningChangeDelegate.onEnabledChanged(mCaptioningManager.isEnabled());
mCaptioningChangeDelegate.onFontScaleChanged(mCaptioningManager.getFontScale());
mCaptioningChangeDelegate.onLocaleChanged(mCaptioningManager.getLocale());
@@ -77,21 +88,30 @@ public class KitKatCaptioningBridge implements SystemCaptioningBridge {
getCaptioningStyleFrom(mCaptioningManager.getUserStyle()));
}
- /**
- * Register this bridge for event changes with the system CaptioningManager.
- */
@Override
- public void registerBridge() {
- mCaptioningManager.addCaptioningChangeListener(mCaptioningChangeListener);
- syncToDelegate();
+ public void syncToListener(SystemCaptioningBridge.SystemCaptioningBridgeListener listener) {
+ if (!mCaptioningChangeDelegate.hasActiveListener()) {
+ syncToDelegate();
+ }
+ mCaptioningChangeDelegate.notifyListener(listener);
}
- /**
- * De-register this bridge from the system captioning manager.
- */
@Override
- public void unregisterBridge() {
- mCaptioningManager.removeCaptioningChangeListener(mCaptioningChangeListener);
+ public void addListener(SystemCaptioningBridge.SystemCaptioningBridgeListener listener) {
+ if (!mCaptioningChangeDelegate.hasActiveListener()) {
+ mCaptioningManager.addCaptioningChangeListener(mCaptioningChangeListener);
+ syncToDelegate();
+ }
+ mCaptioningChangeDelegate.addListener(listener);
+ mCaptioningChangeDelegate.notifyListener(listener);
+ }
+
+ @Override
+ public void removeListener(SystemCaptioningBridge.SystemCaptioningBridgeListener listener) {
+ mCaptioningChangeDelegate.removeListener(listener);
+ if (!mCaptioningChangeDelegate.hasActiveListener()) {
+ mCaptioningManager.removeCaptioningChangeListener(mCaptioningChangeListener);
+ }
}
/**
@@ -99,7 +119,6 @@ public class KitKatCaptioningBridge implements SystemCaptioningBridge {
*
* @param userStyle the platform CaptionStyle
* @return a Chromium CaptioningStyle
- *
*/
private CaptioningStyle getCaptioningStyleFrom(CaptioningManager.CaptionStyle userStyle) {
return CaptioningStyle.createFrom(userStyle);

Powered by Google App Engine
This is Rietveld 408576698