From 759aca9d20e76a99df556304caf9171da18c7f51 Mon Sep 17 00:00:00 2001 From: John Wang Date: Fri, 14 Jan 2011 19:07:10 -0800 Subject: [PATCH] Enable AUTO_TIME_ZONE settings. There are separate settings for AUTO_TIME and AUTO_TIME_ZONE. Modify *ServiceStateTracker to monitor AUTO_TIME and AUTO_TIME_ZONE changes separately and reset NITZ time and timezone accordingly. bug: 3304255 Change-Id: Ie430f7b4a256618bea87672b3628d1223ea6e36a --- .../cdma/CdmaServiceStateTracker.java | 34 +++++++++++++++---- .../telephony/gsm/GsmServiceStateTracker.java | 34 +++++++++++++++---- 2 files changed, 55 insertions(+), 13 deletions(-) diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java index 17cf36dd2363f..8e69eb722d127 100755 --- a/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java +++ b/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java @@ -152,9 +152,16 @@ final class CdmaServiceStateTracker extends ServiceStateTracker { private ContentObserver mAutoTimeObserver = new ContentObserver(new Handler()) { @Override public void onChange(boolean selfChange) { - Log.i("CdmaServiceStateTracker", "Auto time state called ..."); - revertToNitz(); + Log.i("CdmaServiceStateTracker", "Auto time state changed"); + revertToNitzTime(); + } + }; + private ContentObserver mAutoTimeZoneObserver = new ContentObserver(new Handler()) { + @Override + public void onChange(boolean selfChange) { + Log.i("CdmaServiceStateTracker", "Auto time zone state changed"); + revertToNitzTimeZone(); } }; @@ -194,6 +201,9 @@ final class CdmaServiceStateTracker extends ServiceStateTracker { cr.registerContentObserver( Settings.System.getUriFor(Settings.System.AUTO_TIME), true, mAutoTimeObserver); + cr.registerContentObserver( + Settings.System.getUriFor(Settings.System.AUTO_TIME_ZONE), true, + mAutoTimeZoneObserver); setSignalStrengthDefaultValues(); mNeedToRegForRuimLoaded = true; @@ -212,6 +222,7 @@ final class CdmaServiceStateTracker extends ServiceStateTracker { cm.unSetOnSignalStrengthUpdate(this); cm.unSetOnNITZTime(this); cr.unregisterContentObserver(this.mAutoTimeObserver); + cr.unregisterContentObserver(this.mAutoTimeZoneObserver); } @Override @@ -1579,20 +1590,29 @@ final class CdmaServiceStateTracker extends ServiceStateTracker { phone.getContext().sendStickyBroadcast(intent); } - private void revertToNitz() { + private void revertToNitzTime() { if (Settings.System.getInt(cr, Settings.System.AUTO_TIME, 0) == 0) { return; } - Log.d(LOG_TAG, "Reverting to NITZ: tz='" + mSavedTimeZone - + "' mSavedTime=" + mSavedTime + Log.d(LOG_TAG, "Reverting to NITZ Time: mSavedTime=" + mSavedTime + " mSavedAtTime=" + mSavedAtTime); - if (mSavedTimeZone != null && mSavedTime != 0 && mSavedAtTime != 0) { - setAndBroadcastNetworkSetTimeZone(mSavedTimeZone); + if (mSavedTime != 0 && mSavedAtTime != 0) { setAndBroadcastNetworkSetTime(mSavedTime + (SystemClock.elapsedRealtime() - mSavedAtTime)); } } + private void revertToNitzTimeZone() { + if (Settings.System.getInt(phone.getContext().getContentResolver(), + Settings.System.AUTO_TIME_ZONE, 0) == 0) { + return; + } + Log.d(LOG_TAG, "Reverting to NITZ TimeZone: tz='" + mSavedTimeZone); + if (mSavedTimeZone != null) { + setAndBroadcastNetworkSetTimeZone(mSavedTimeZone); + } + } + private boolean isSidsAllZeros() { if (mHomeSystemId != null) { for (int i=0; i < mHomeSystemId.length; i++) { diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java index b04d4b930b8a2..c107d174919f3 100644 --- a/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java +++ b/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java @@ -181,7 +181,15 @@ final class GsmServiceStateTracker extends ServiceStateTracker { @Override public void onChange(boolean selfChange) { Log.i("GsmServiceStateTracker", "Auto time state changed"); - revertToNitz(); + revertToNitzTime(); + } + }; + + private ContentObserver mAutoTimeZoneObserver = new ContentObserver(new Handler()) { + @Override + public void onChange(boolean selfChange) { + Log.i("GsmServiceStateTracker", "Auto time zone state changed"); + revertToNitzTimeZone(); } }; @@ -220,6 +228,10 @@ final class GsmServiceStateTracker extends ServiceStateTracker { cr.registerContentObserver( Settings.System.getUriFor(Settings.System.AUTO_TIME), true, mAutoTimeObserver); + cr.registerContentObserver( + Settings.System.getUriFor(Settings.System.AUTO_TIME_ZONE), true, + mAutoTimeZoneObserver); + setSignalStrengthDefaultValues(); mNeedToRegForSimLoaded = true; @@ -244,6 +256,7 @@ final class GsmServiceStateTracker extends ServiceStateTracker { cm.unSetOnRestrictedStateChanged(this); cm.unSetOnNITZTime(this); cr.unregisterContentObserver(this.mAutoTimeObserver); + cr.unregisterContentObserver(this.mAutoTimeZoneObserver); } protected void finalize() { @@ -1613,21 +1626,30 @@ final class GsmServiceStateTracker extends ServiceStateTracker { phone.getContext().sendStickyBroadcast(intent); } - private void revertToNitz() { + private void revertToNitzTime() { if (Settings.System.getInt(phone.getContext().getContentResolver(), Settings.System.AUTO_TIME, 0) == 0) { return; } - Log.d(LOG_TAG, "Reverting to NITZ: tz='" + mSavedTimeZone - + "' mSavedTime=" + mSavedTime + Log.d(LOG_TAG, "Reverting to NITZ Time: mSavedTime=" + mSavedTime + " mSavedAtTime=" + mSavedAtTime); - if (mSavedTimeZone != null && mSavedTime != 0 && mSavedAtTime != 0) { - setAndBroadcastNetworkSetTimeZone(mSavedTimeZone); + if (mSavedTime != 0 && mSavedAtTime != 0) { setAndBroadcastNetworkSetTime(mSavedTime + (SystemClock.elapsedRealtime() - mSavedAtTime)); } } + private void revertToNitzTimeZone() { + if (Settings.System.getInt(phone.getContext().getContentResolver(), + Settings.System.AUTO_TIME_ZONE, 0) == 0) { + return; + } + Log.d(LOG_TAG, "Reverting to NITZ TimeZone: tz='" + mSavedTimeZone); + if (mSavedTimeZone != null) { + setAndBroadcastNetworkSetTimeZone(mSavedTimeZone); + } + } + /** * Post a notification to NotificationManager for restricted state *