diff options
author | stevenjb@google.com <stevenjb@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-12 19:07:16 +0000 |
---|---|---|
committer | stevenjb@google.com <stevenjb@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-12 19:07:16 +0000 |
commit | 173c12b9689192e156be61f691e7be1f212f4ef4 (patch) | |
tree | 47632fbe156cc5a9ba7d84bdd4a8040272256003 /chrome | |
parent | 661f8c4e2a4def96d0c1964a92c9a73e8f4b60bc (diff) | |
download | chromium_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')
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; } |