1 // Copyright 2018 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.accessibility; 6 7 import android.annotation.TargetApi; 8 import android.database.ContentObserver; 9 import android.net.Uri; 10 import android.os.Build; 11 import android.os.Handler; 12 import android.provider.Settings; 13 14 import org.chromium.base.ContextUtils; 15 import org.chromium.base.ThreadUtils; 16 import org.chromium.base.annotations.CalledByNative; 17 import org.chromium.base.annotations.JNINamespace; 18 import org.chromium.base.annotations.NativeMethods; 19 20 /** 21 * Provides utility methods relating to measuring accessibility state on the current platform (i.e. 22 * Android in this case). See content::BrowserAccessibilityStateImpl. 23 */ 24 @JNINamespace("content") 25 public class BrowserAccessibilityState { 26 private static class AnimatorDurationScaleObserver extends ContentObserver { AnimatorDurationScaleObserver(Handler handler)27 public AnimatorDurationScaleObserver(Handler handler) { 28 super(handler); 29 } 30 31 @Override onChange(boolean selfChange)32 public void onChange(boolean selfChange) { 33 onChange(selfChange, null); 34 } 35 36 @Override onChange(boolean selfChange, Uri uri)37 public void onChange(boolean selfChange, Uri uri) { 38 assert ThreadUtils.runningOnUiThread(); 39 BrowserAccessibilityStateJni.get().onAnimatorDurationScaleChanged(); 40 } 41 } 42 43 @CalledByNative 44 @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) registerAnimatorDurationScaleObserver()45 static void registerAnimatorDurationScaleObserver() { 46 Handler handler = new Handler(ThreadUtils.getUiThreadLooper()); 47 Uri uri = Settings.Global.getUriFor(Settings.Global.ANIMATOR_DURATION_SCALE); 48 ContextUtils.getApplicationContext().getContentResolver().registerContentObserver( 49 uri, false, new AnimatorDurationScaleObserver(handler)); 50 } 51 52 @NativeMethods 53 interface Natives { onAnimatorDurationScaleChanged()54 void onAnimatorDurationScaleChanged(); 55 } 56 } 57