зеркало из https://github.com/mozilla/gecko-dev.git
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:
Родитель
bce08141dc
Коммит
98cc77a342
|
@ -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));
|
||||
|
|
Загрузка…
Ссылка в новой задаче