Index: content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java |
diff --git a/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java b/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java |
index 6480eef72332275ff08daf0cb9c4f04cf7bb3000..bda063139472ade41111cb629c2b52aa1803c6e1 100644 |
--- a/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java |
+++ b/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java |
@@ -61,6 +61,9 @@ import org.chromium.content.R; |
import org.chromium.content.browser.ScreenOrientationListener.ScreenOrientationObserver; |
import org.chromium.content.browser.accessibility.AccessibilityInjector; |
import org.chromium.content.browser.accessibility.BrowserAccessibilityManager; |
+import org.chromium.content.browser.accessibility.captioning.CaptioningBridgeFactory; |
+import org.chromium.content.browser.accessibility.captioning.SystemCaptioningBridge; |
+import org.chromium.content.browser.accessibility.captioning.TextTrackSettings; |
import org.chromium.content.browser.input.AdapterInputConnection; |
import org.chromium.content.browser.input.GamepadList; |
import org.chromium.content.browser.input.ImeAdapter; |
@@ -528,6 +531,10 @@ public class ContentViewCore |
// System accessibility service. |
private final AccessibilityManager mAccessibilityManager; |
+ // Notifies the ContentViewCore when platform closed caption settings have changed |
+ // if they are supported. Otherwise does nothing. |
+ private final SystemCaptioningBridge mSystemCaptioningBridge; |
+ |
// Accessibility touch exploration state. |
private boolean mTouchExplorationEnabled; |
@@ -627,6 +634,7 @@ public class ContentViewCore |
mRenderCoordinates.setDeviceScaleFactor(deviceScaleFactor); |
mAccessibilityManager = (AccessibilityManager) |
getContext().getSystemService(Context.ACCESSIBILITY_SERVICE); |
+ mSystemCaptioningBridge = CaptioningBridgeFactory.create(this); |
mGestureStateListeners = new ObserverList<GestureStateListener>(); |
mGestureStateListenersIterator = mGestureStateListeners.rewindableIterator(); |
@@ -970,6 +978,7 @@ public class ContentViewCore |
if (mNativeContentViewCore != 0) { |
nativeOnJavaContentViewCoreDestroyed(mNativeContentViewCore); |
} |
+ mSystemCaptioningBridge.destroy(); |
mWebContentsObserver.destroy(); |
mWebContentsObserver = null; |
setSmartClipDataListener(null); |
@@ -2515,6 +2524,8 @@ public class ContentViewCore |
@CalledByNative |
private void onRenderProcessChange() { |
attachImeAdapter(); |
+ // Immediately sync closed caption settings to the new render process. |
+ mSystemCaptioningBridge.syncToDelegate(); |
} |
/** |
@@ -2822,6 +2833,20 @@ public class ContentViewCore |
} |
/** |
+ * Set closed captioning text track style settings. |
+ * |
+ * @param settings The TextTrackSettings object containing the new settings. |
+ */ |
+ @TargetApi(Build.VERSION_CODES.KITKAT) |
+ public void setTextTrackSettings(TextTrackSettings settings) { |
+ if (mNativeContentViewCore == 0) return; |
+ nativeSetTextTrackSettings(mNativeContentViewCore, settings.getTextTrackBackgroundColor(), |
+ settings.getTextTrackFontFamily(), settings.getTextTrackFontStyle(), |
+ settings.getTextTrackFontVariant(), settings.getTextTrackTextColor(), |
+ settings.getTextTrackTextShadow(), settings.getTextTrackTextSize()); |
+ } |
+ |
+ /** |
* @see View#onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo) |
*/ |
public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { |
@@ -3218,6 +3243,11 @@ public class ContentViewCore |
private native void nativeSetAccessibilityEnabled( |
long nativeContentViewCoreImpl, boolean enabled); |
+ private native void nativeSetTextTrackSettings(long nativeContentViewCoreImpl, |
+ String textTrackBackgroundColor, String textTrackFontFamily, String textTrackFontStyle, |
+ String textTrackFontVariant, String textTrackTextColor, String textTrackTextShadow, |
+ String textTrackTextSize); |
+ |
private native void nativeExtractSmartClipData(long nativeContentViewCoreImpl, |
int x, int y, int w, int h); |