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.chromecast.base; | 5 package org.chromium.chromecast.base; |
6 | 6 |
| 7 import android.annotation.SuppressLint; |
7 import android.content.ContentResolver; | 8 import android.content.ContentResolver; |
8 import android.content.Context; | 9 import android.content.Context; |
9 import android.content.SharedPreferences; | 10 import android.content.SharedPreferences; |
10 import android.database.ContentObserver; | 11 import android.database.ContentObserver; |
11 import android.os.Build; | 12 import android.os.Build; |
12 import android.os.Handler; | 13 import android.os.Handler; |
13 import android.provider.Settings; | 14 import android.provider.Settings; |
14 | 15 |
15 import org.chromium.base.Log; | 16 import org.chromium.base.Log; |
16 | 17 |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
58 * Creates a fully-featured CastSettingsManager instance. Will fail if calle
d from a | 59 * Creates a fully-featured CastSettingsManager instance. Will fail if calle
d from a |
59 * sandboxed process. | 60 * sandboxed process. |
60 */ | 61 */ |
61 public static CastSettingsManager createCastSettingsManager( | 62 public static CastSettingsManager createCastSettingsManager( |
62 Context context, OnSettingChangedListener listener) { | 63 Context context, OnSettingChangedListener listener) { |
63 ContentResolver contentResolver = context.getContentResolver(); | 64 ContentResolver contentResolver = context.getContentResolver(); |
64 SharedPreferences settings = context.getSharedPreferences(PREFS_FILE_NAM
E, 0); | 65 SharedPreferences settings = context.getSharedPreferences(PREFS_FILE_NAM
E, 0); |
65 return new CastSettingsManager(contentResolver, listener, settings); | 66 return new CastSettingsManager(contentResolver, listener, settings); |
66 } | 67 } |
67 | 68 |
| 69 @SuppressLint("NewApi") |
68 private CastSettingsManager( | 70 private CastSettingsManager( |
69 ContentResolver contentResolver, | 71 ContentResolver contentResolver, |
70 OnSettingChangedListener listener, | 72 OnSettingChangedListener listener, |
71 SharedPreferences settings) { | 73 SharedPreferences settings) { |
72 mContentResolver = contentResolver; | 74 mContentResolver = contentResolver; |
73 mSettings = settings; | 75 mSettings = settings; |
74 mListener = listener; | 76 mListener = listener; |
75 | 77 |
76 mSharedPreferenceListener = new SharedPreferences.OnSharedPreferenceChan
geListener() { | 78 mSharedPreferenceListener = new SharedPreferences.OnSharedPreferenceChan
geListener() { |
77 @Override | 79 @Override |
78 public void onSharedPreferenceChanged(SharedPreferences prefs, Strin
g key) { | 80 public void onSharedPreferenceChanged(SharedPreferences prefs, Strin
g key) { |
79 if (mListener == null) { | 81 if (mListener == null) { |
80 return; | 82 return; |
81 } | 83 } |
82 | 84 |
83 if (key.equals(SEND_USAGE_STATS_SETTING)) { | 85 if (key.equals(SEND_USAGE_STATS_SETTING)) { |
84 mListener.onSendUsageStatsChanged(prefs.getBoolean(key, | 86 mListener.onSendUsageStatsChanged(prefs.getBoolean(key, |
85 SEND_USAGE_STATS_SETTING_DEFAULT)); | 87 SEND_USAGE_STATS_SETTING_DEFAULT)); |
86 } | 88 } |
87 } | 89 } |
88 }; | 90 }; |
89 mSettings.registerOnSharedPreferenceChangeListener(mSharedPreferenceList
ener); | 91 mSettings.registerOnSharedPreferenceChangeListener(mSharedPreferenceList
ener); |
90 | 92 |
91 mDeviceNameObserver = new ContentObserver(new Handler()) { | 93 mDeviceNameObserver = new ContentObserver(new Handler()) { |
92 @Override | 94 @Override |
93 public void onChange(boolean selfChange) { | 95 public void onChange(boolean selfChange) { |
94 mListener.onDeviceNameChanged(getDeviceName()); | 96 mListener.onDeviceNameChanged(getDeviceName()); |
95 } | 97 } |
96 }; | 98 }; |
| 99 // TODO(crbug.com/635567): Fix lint properly. |
97 mContentResolver.registerContentObserver( | 100 mContentResolver.registerContentObserver( |
98 Settings.Global.getUriFor(DEVICE_NAME_SETTING_KEY), true, mDevic
eNameObserver); | 101 Settings.Global.getUriFor(DEVICE_NAME_SETTING_KEY), true, mDevic
eNameObserver); |
99 | 102 |
100 if (!isCastEnabled()) { | 103 if (!isCastEnabled()) { |
101 mIsDeviceProvisionedObserver = new ContentObserver(new Handler()) { | 104 mIsDeviceProvisionedObserver = new ContentObserver(new Handler()) { |
102 @Override | 105 @Override |
103 public void onChange(boolean selfChange) { | 106 public void onChange(boolean selfChange) { |
104 Log.d(TAG, "Device provisioned"); | 107 Log.d(TAG, "Device provisioned"); |
105 mListener.onCastEnabledChanged(isCastEnabled()); | 108 mListener.onCastEnabledChanged(isCastEnabled()); |
106 } | 109 } |
107 }; | 110 }; |
| 111 // TODO(crbug.com/635567): Fix lint properly. |
108 mContentResolver.registerContentObserver( | 112 mContentResolver.registerContentObserver( |
109 Settings.Global.getUriFor(DEVICE_PROVISIONED_SETTING_KEY), t
rue, | 113 Settings.Global.getUriFor(DEVICE_PROVISIONED_SETTING_KEY), t
rue, |
110 mIsDeviceProvisionedObserver); | 114 mIsDeviceProvisionedObserver); |
111 } | 115 } |
112 } | 116 } |
113 | 117 |
114 public void dispose() { | 118 public void dispose() { |
115 mSettings.unregisterOnSharedPreferenceChangeListener(mSharedPreferenceLi
stener); | 119 mSettings.unregisterOnSharedPreferenceChangeListener(mSharedPreferenceLi
stener); |
116 mSharedPreferenceListener = null; | 120 mSharedPreferenceListener = null; |
117 mContentResolver.unregisterContentObserver(mDeviceNameObserver); | 121 mContentResolver.unregisterContentObserver(mDeviceNameObserver); |
118 mDeviceNameObserver = null; | 122 mDeviceNameObserver = null; |
119 | 123 |
120 if (mIsDeviceProvisionedObserver != null) { | 124 if (mIsDeviceProvisionedObserver != null) { |
121 mContentResolver.unregisterContentObserver(mIsDeviceProvisionedObser
ver); | 125 mContentResolver.unregisterContentObserver(mIsDeviceProvisionedObser
ver); |
122 mIsDeviceProvisionedObserver = null; | 126 mIsDeviceProvisionedObserver = null; |
123 } | 127 } |
124 } | 128 } |
125 | 129 |
| 130 @SuppressLint("NewApi") |
126 public boolean isCastEnabled() { | 131 public boolean isCastEnabled() { |
127 // However, Cast is disabled until the device is provisioned (see b/1895
0240). | 132 // However, Cast is disabled until the device is provisioned (see b/1895
0240). |
| 133 // TODO(crbug.com/635567): Fix lint properly. |
128 return Settings.Global.getInt( | 134 return Settings.Global.getInt( |
129 mContentResolver, DEVICE_PROVISIONED_SETTING_KEY, 0) == 1; | 135 mContentResolver, DEVICE_PROVISIONED_SETTING_KEY, 0) == 1; |
130 } | 136 } |
131 | 137 |
132 public boolean isSendUsageStatsEnabled() { | 138 public boolean isSendUsageStatsEnabled() { |
133 return mSettings.getBoolean(SEND_USAGE_STATS_SETTING, SEND_USAGE_STATS_S
ETTING_DEFAULT); | 139 return mSettings.getBoolean(SEND_USAGE_STATS_SETTING, SEND_USAGE_STATS_S
ETTING_DEFAULT); |
134 } | 140 } |
135 | 141 |
136 public void setSendUsageStatsEnabled(boolean enabled) { | 142 public void setSendUsageStatsEnabled(boolean enabled) { |
137 mSettings.edit().putBoolean(SEND_USAGE_STATS_SETTING, enabled).apply(); | 143 mSettings.edit().putBoolean(SEND_USAGE_STATS_SETTING, enabled).apply(); |
138 } | 144 } |
139 | 145 |
| 146 @SuppressLint("NewApi") |
140 public String getDeviceName() { | 147 public String getDeviceName() { |
| 148 // TODO(crbug.com/635567): Fix lint properly. |
141 String deviceName = Settings.Global.getString(mContentResolver, DEVICE_N
AME_SETTING_KEY); | 149 String deviceName = Settings.Global.getString(mContentResolver, DEVICE_N
AME_SETTING_KEY); |
142 return (deviceName != null) ? deviceName : DEFAULT_DEVICE_NAME; | 150 return (deviceName != null) ? deviceName : DEFAULT_DEVICE_NAME; |
143 } | 151 } |
144 | 152 |
145 } | 153 } |
OLD | NEW |