summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorstevenjb@google.com <stevenjb@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-12 19:07:16 +0000
committerstevenjb@google.com <stevenjb@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-12 19:07:16 +0000
commit173c12b9689192e156be61f691e7be1f212f4ef4 (patch)
tree47632fbe156cc5a9ba7d84bdd4a8040272256003 /chrome
parent661f8c4e2a4def96d0c1964a92c9a73e8f4b60bc (diff)
downloadchromium_src-173c12b9689192e156be61f691e7be1f212f4ef4.zip
chromium_src-173c12b9689192e156be61f691e7be1f212f4ef4.tar.gz
chromium_src-173c12b9689192e156be61f691e7be1f212f4ef4.tar.bz2
Fix startup/shutdown Debug checks in libcros
BUG=chromium-os:20268 TEST=tests and autotests succeed Review URL: http://codereview.chromium.org/7863011 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@100734 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/chromeos/cros/login_library.cc26
-rw-r--r--chrome/browser/chromeos/cros/login_library.h2
-rw-r--r--chrome/browser/chromeos/cros/mock_login_library.h2
-rw-r--r--chrome/browser/chromeos/cros/network_library.cc3
-rw-r--r--chrome/browser/chromeos/net/network_change_notifier_chromeos.cc2
5 files changed, 26 insertions, 9 deletions
diff --git a/chrome/browser/chromeos/cros/login_library.cc b/chrome/browser/chromeos/cros/login_library.cc
index 238b52b..f149965 100644
--- a/chrome/browser/chromeos/cros/login_library.cc
+++ b/chrome/browser/chromeos/cros/login_library.cc
@@ -25,22 +25,30 @@ LoginLibrary::~LoginLibrary() {}
class LoginLibraryImpl : public LoginLibrary {
public:
LoginLibraryImpl() : job_restart_request_(NULL) {
- if (CrosLibrary::Get()->EnsureLoaded())
- Init();
+ CHECK(CrosLibrary::Get() && CrosLibrary::Get()->libcros_loaded());
+ Init();
}
virtual ~LoginLibraryImpl() {
if (session_connection_) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
chromeos::DisconnectSession(session_connection_);
}
}
- bool EmitLoginPromptReady() {
- return chromeos::EmitLoginPromptReady();
+ void EmitLoginPromptReady() {
+ if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) {
+ BrowserThread::PostTask(
+ BrowserThread::UI, FROM_HERE,
+ NewRunnableMethod(this, &LoginLibraryImpl::EmitLoginPromptReady));
+ return;
+ }
+ chromeos::EmitLoginPromptReady();
}
void RequestRetrievePolicy(RetrievePolicyCallback callback, void* delegate) {
DCHECK(callback) << "must provide a callback to RequestRetrievePolicy()";
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
chromeos::RetrievePolicy(callback, delegate);
}
@@ -48,21 +56,25 @@ class LoginLibraryImpl : public LoginLibrary {
StorePolicyCallback callback,
void* delegate) {
DCHECK(callback) << "must provide a callback to StorePolicy()";
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
chromeos::StorePolicy(policy.c_str(), policy.length(), callback, delegate);
}
bool StartSession(const std::string& user_email,
const std::string& unique_id /* unused */) {
// only pass unique_id through once we use it for something.
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
return chromeos::StartSession(user_email.c_str(), "");
}
bool StopSession(const std::string& unique_id /* unused */) {
// only pass unique_id through once we use it for something.
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
return chromeos::StopSession("");
}
bool RestartEntd() {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
return chromeos::RestartEntd();
}
@@ -166,6 +178,7 @@ class LoginLibraryImpl : public LoginLibrary {
}
void Init() {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
session_connection_ = chromeos::MonitorSession(&Handler, this);
}
@@ -213,7 +226,7 @@ class LoginLibraryStubImpl : public LoginLibrary {
LoginLibraryStubImpl() {}
virtual ~LoginLibraryStubImpl() {}
- bool EmitLoginPromptReady() { return true; }
+ void EmitLoginPromptReady() { }
void RequestRetrievePolicy(RetrievePolicyCallback callback, void* delegate) {
callback(delegate, "", 0);
}
@@ -241,3 +254,6 @@ LoginLibrary* LoginLibrary::GetImpl(bool stub) {
}
} // namespace chromeos
+
+// Needed for NewRunnableMethod() call above.
+DISABLE_RUNNABLE_METHOD_REFCOUNT(chromeos::LoginLibraryImpl);
diff --git a/chrome/browser/chromeos/cros/login_library.h b/chrome/browser/chromeos/cros/login_library.h
index a6c30a3..d2f0538 100644
--- a/chrome/browser/chromeos/cros/login_library.h
+++ b/chrome/browser/chromeos/cros/login_library.h
@@ -18,7 +18,7 @@ class LoginLibrary {
public:
virtual ~LoginLibrary();
// Requests that the Upstart signal login-prompt-ready be emitted.
- virtual bool EmitLoginPromptReady() = 0;
+ virtual void EmitLoginPromptReady() = 0;
virtual void RequestRetrievePolicy(RetrievePolicyCallback callback,
void* delegate_string) = 0;
diff --git a/chrome/browser/chromeos/cros/mock_login_library.h b/chrome/browser/chromeos/cros/mock_login_library.h
index 1e45e26..bd65aca 100644
--- a/chrome/browser/chromeos/cros/mock_login_library.h
+++ b/chrome/browser/chromeos/cros/mock_login_library.h
@@ -18,7 +18,7 @@ class MockLoginLibrary : public LoginLibrary {
MockLoginLibrary();
virtual ~MockLoginLibrary();
- MOCK_METHOD0(EmitLoginPromptReady, bool(void));
+ MOCK_METHOD0(EmitLoginPromptReady, void(void));
MOCK_METHOD2(RequestRetrievePolicy, void(RetrievePolicyCallback, void*));
MOCK_METHOD3(RequestStorePolicy, void(const std::string&,
StorePolicyCallback,
diff --git a/chrome/browser/chromeos/cros/network_library.cc b/chrome/browser/chromeos/cros/network_library.cc
index 8cb8246..a44d2e3 100644
--- a/chrome/browser/chromeos/cros/network_library.cc
+++ b/chrome/browser/chromeos/cros/network_library.cc
@@ -4289,7 +4289,8 @@ void NetworkLibraryImplCros::UpdateRememberedServiceList(
break;
}
if (iter1 == profile_list_.end()) {
- NOTREACHED() << "Profile not in list: " << profile_path;
+ // This can happen if flimflam gets restarted while Chrome is running.
+ LOG(WARNING) << "Profile not in list: " << profile_path;
return;
}
NetworkProfile& profile = *iter1;
diff --git a/chrome/browser/chromeos/net/network_change_notifier_chromeos.cc b/chrome/browser/chromeos/net/network_change_notifier_chromeos.cc
index 3d16dce..4968eeb 100644
--- a/chrome/browser/chromeos/net/network_change_notifier_chromeos.cc
+++ b/chrome/browser/chromeos/net/network_change_notifier_chromeos.cc
@@ -31,7 +31,7 @@ class OnlineStatusReportThreadTask : public CancelableTask {
// CancelableTask overrides.
virtual void Cancel() {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ // Normally called from UI thread unless called during shutdown.
should_report_ = false;
}