Skip to content

Commit

Permalink
[devmode] Handle errors and fallback for developer mode detection
Browse files Browse the repository at this point in the history
In case the store client is not available, fall back to a simpler
way of detecting whether developer mode is installed or not.

When calls to enable / disable developer mode fail, report back the
error immediately instead of waiting for a reply that never comes.
  • Loading branch information
Thomas Perl committed Oct 3, 2013
1 parent 43a83aa commit fc85f16
Showing 1 changed file with 23 additions and 0 deletions.
23 changes: 23 additions & 0 deletions src/developermodesettings.cpp
Expand Up @@ -48,6 +48,9 @@
/* Developer mode package */
#define DEVELOPER_MODE_PACKAGE "jolla-developer-mode"

/* A file that is provided by the developer mode package */
#define DEVELOPER_MODE_PROVIDED_FILE "/usr/bin/devel-su"

/* D-Bus service */
#define STORE_CLIENT_SERVICE "com.jolla.jollastore"
#define STORE_CLIENT_PATH "/StoreClient"
Expand Down Expand Up @@ -112,6 +115,14 @@ DeveloperModeSettingsWorker::retrieveDeveloperModeStatus()
emit progressChanged(PROGRESS_INDETERMINATE);
emit statusChanged(true, DeveloperModeSettings::CheckingStatus);
m_storeClient.call(STORE_CLIENT_CHECK_INSTALLED, DEVELOPER_MODE_PACKAGE);
QDBusError error = m_storeClient.lastError();
if (error.isValid()) {
qWarning() << "Could not query developer mode status: " << error.message();
emit statusChanged(false, DeveloperModeSettings::Idle);
// Fallback to detecting developer mode by existence of a provided file
emit developerModeEnabledChanged(QFile(DEVELOPER_MODE_PROVIDED_FILE).exists());
m_working = false;
}
}

void
Expand All @@ -127,6 +138,12 @@ DeveloperModeSettingsWorker::enableDeveloperMode()
emit progressChanged(PROGRESS_INDETERMINATE);
emit statusChanged(true, DeveloperModeSettings::Installing);
m_storeClient.call(STORE_CLIENT_INSTALL_PACKAGE, DEVELOPER_MODE_PACKAGE);
QDBusError error = m_storeClient.lastError();
if (error.isValid()) {
qWarning() << "Could not enable developer mode: " << error.message();
emit statusChanged(false, DeveloperModeSettings::Failure);
m_working = false;
}
}

void
Expand All @@ -142,6 +159,12 @@ DeveloperModeSettingsWorker::disableDeveloperMode()
emit progressChanged(PROGRESS_INDETERMINATE);
emit statusChanged(true, DeveloperModeSettings::Removing);
m_storeClient.call(STORE_CLIENT_REMOVE_PACKAGE, DEVELOPER_MODE_PACKAGE, true);
QDBusError error = m_storeClient.lastError();
if (error.isValid()) {
qWarning() << "Could not disable developer mode: " << error.message();
emit statusChanged(false, DeveloperModeSettings::Failure);
m_working = false;
}
}

void
Expand Down

0 comments on commit fc85f16

Please sign in to comment.