Bug 781978 - Automounter should initialize ums.mode to zero. r=gwagner

From 5eb48be9af695ac2135b8508edb8a4b1e83acb56 Mon Sep 17 00:00:00 2001
 r=gwagner
---
 dom/system/gonk/AutoMounter.cpp        |   19 ++++++++++++++++---
 dom/system/gonk/AutoMounterSetting.cpp |    7 +++++--
 dom/system/gonk/Volume.cpp             |   12 +++++++++---
 dom/system/gonk/nsVolumeService.cpp    |   11 +++++++++--
 4 files changed, 39 insertions(+), 10 deletions(-)
This commit is contained in:
Dave Hylands 2012-08-08 15:44:59 -07:00
Родитель bce08141dc
Коммит 98cc77a342
4 изменённых файлов: 39 добавлений и 10 удалений

Просмотреть файл

@ -235,6 +235,16 @@ public:
void UpdateState();
const char *ModeStr(int32_t aMode)
{
switch (aMode) {
case AUTOMOUNTER_DISABLE: return "Disable";
case AUTOMOUNTER_ENABLE: return "Enable";
case AUTOMOUNTER_DISABLE_WHEN_UNPLUGGED: return "DisableWhenUnplugged";
}
return "??? Unknown ???";
}
void SetMode(int32_t aMode)
{
if ((aMode == AUTOMOUNTER_DISABLE_WHEN_UNPLUGGED) &&
@ -243,9 +253,12 @@ public:
// AUTOMOUNTER_DISABLE_WHEN_UNPLUGGED implies "enabled until unplugged"
aMode = AUTOMOUNTER_DISABLE;
}
mMode = aMode;
DBG("Calling UpdateState due to mode set to %d", mMode);
UpdateState();
if (aMode != mMode) {
LOG("Changing mode from '%s' to '%s'", ModeStr(mMode), ModeStr(aMode));
mMode = aMode;
DBG("Calling UpdateState due to mode set to %d", mMode);
UpdateState();
}
}
private:

Просмотреть файл

@ -67,7 +67,10 @@ AutoMounterSetting::AutoMounterSetting()
return;
}
// Get the initial value of the setting.
// Force ums.mode to be 0 initially. We do this because settings are persisted.
// We don't want UMS to be enabled until such time as the phone is unlocked,
// and gaia/apps/system/js/storage.js takes care of detecting when the phone
// becomes unlocked and changes ums.mode appropriately.
nsCOMPtr<nsISettingsService> settingsService =
do_GetService("@mozilla.org/settingsService;1");
if (!settingsService) {
@ -77,7 +80,7 @@ AutoMounterSetting::AutoMounterSetting()
nsCOMPtr<nsISettingsServiceLock> lock;
settingsService->GetLock(getter_AddRefs(lock));
nsCOMPtr<nsISettingsServiceCallback> callback = new SettingsServiceCallback();
lock->Get(UMS_MODE, callback);
lock->Set(UMS_MODE, INT_TO_JSVAL(AUTOMOUNTER_DISABLE), callback);
}
AutoMounterSetting::~AutoMounterSetting()

Просмотреть файл

@ -66,9 +66,15 @@ Volume::SetState(Volume::STATE aNewState)
if (aNewState == mState) {
return;
}
LOG("Volume %s: changing state from %s to %s (%d observers)",
NameStr(), StateStr(mState),
StateStr(aNewState), mEventObserverList.Length());
if (aNewState == nsIVolume::STATE_MOUNTED) {
LOG("Volume %s: changing state from %s to %s @ '%s' (%d observers)",
NameStr(), StateStr(mState),
StateStr(aNewState), mMountPoint.get(), mEventObserverList.Length());
} else {
LOG("Volume %s: changing state from %s to %s (%d observers)",
NameStr(), StateStr(mState),
StateStr(aNewState), mEventObserverList.Length());
}
if (aNewState == nsIVolume::STATE_NOMEDIA) {
// Cover the startup case where we don't get insertion/removal events

Просмотреть файл

@ -153,6 +153,13 @@ void nsVolumeService::UpdateVolume(const nsVolume *aVolume)
if (!obs) {
return;
}
if (aVolume->State() == nsIVolume::STATE_MOUNTED) {
LOG("UpdateVolume: '%s' state %s @ '%s'",
aVolume->NameStr(), aVolume->StateStr(), aVolume->MountPointStr());
} else {
LOG("UpdateVolume: '%s' state %s",
aVolume->NameStr(), aVolume->StateStr());
}
nsString stateStr(NS_ConvertUTF8toUTF16(vol->StateStr()));
obs->NotifyObservers(vol, NS_VOLUME_STATE_CHANGED, stateStr.get());
}
@ -173,7 +180,7 @@ public:
NS_IMETHOD Run()
{
MOZ_ASSERT(NS_IsMainThread());
LOG("UpdateVolumeRunnable::Run '%s' state %s",
DBG("UpdateVolumeRunnable::Run '%s' state %s",
mVolume->NameStr(), mVolume->StateStr());
nsCOMPtr<nsIVolumeService> ivs = do_GetService(NS_VOLUMESERVICE_CONTRACTID);
@ -196,7 +203,7 @@ private:
//static
void nsVolumeService::UpdateVolumeIOThread(const Volume *aVolume)
{
LOG("UpdateVolumeIOThread: Volume '%s' state %s mount '%s'",
DBG("UpdateVolumeIOThread: Volume '%s' state %s mount '%s'",
aVolume->NameStr(), aVolume->StateStr(), aVolume->MountPoint().get());
MOZ_ASSERT(MessageLoop::current() == XRE_GetIOMessageLoop());
NS_DispatchToMainThread(new UpdateVolumeRunnable(aVolume));