Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5375)

Unified Diff: chrome/browser/extensions/extension_gcm_app_handler_unittest.cc

Issue 225403021: Extract Profile-independent GCMService from GCMProfileService (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed comments. Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/extension_gcm_app_handler_unittest.cc
diff --git a/chrome/browser/extensions/extension_gcm_app_handler_unittest.cc b/chrome/browser/extensions/extension_gcm_app_handler_unittest.cc
index 1adc3dc21f20895e15847fbc7c2c781fbf3e6168..8a0ac66d270ab4472df9dce9c2b7bfbfa31f0c57 100644
--- a/chrome/browser/extensions/extension_gcm_app_handler_unittest.cc
+++ b/chrome/browser/extensions/extension_gcm_app_handler_unittest.cc
@@ -2,31 +2,52 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "chrome/browser/extensions/extension_gcm_app_handler.h"
+
+#include <vector>
+
#include "base/bind.h"
+#include "base/bind_helpers.h"
#include "base/command_line.h"
-#include "base/prefs/pref_service.h"
-#include "chrome/browser/extensions/extension_gcm_app_handler.h"
+#include "base/files/file_path.h"
+#include "base/location.h"
+#include "base/logging.h"
+#include "base/memory/ref_counted.h"
+#include "base/message_loop/message_loop.h"
+#include "base/run_loop.h"
+#include "base/values.h"
+#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/test_extension_service.h"
#include "chrome/browser/extensions/test_extension_system.h"
+#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/services/gcm/fake_gcm_client_factory.h"
+#include "chrome/browser/services/gcm/fake_signin_manager.h"
+#include "chrome/browser/services/gcm/gcm_client_factory.h"
#include "chrome/browser/services/gcm/gcm_client_mock.h"
#include "chrome/browser/services/gcm/gcm_profile_service.h"
#include "chrome/browser/services/gcm/gcm_profile_service_factory.h"
-#include "chrome/browser/services/gcm/gcm_profile_service_test_helper.h"
#include "chrome/browser/signin/signin_manager_factory.h"
#include "chrome/common/pref_names.h"
#include "chrome/test/base/testing_profile.h"
+#include "components/keyed_service/core/keyed_service.h"
+#include "content/public/browser/browser_context.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/test/test_browser_thread_bundle.h"
+#include "extensions/browser/extension_system.h"
#include "extensions/common/extension.h"
+#include "extensions/common/manifest.h"
#include "extensions/common/manifest_constants.h"
+#include "extensions/common/permissions/api_permission.h"
#include "testing/gtest/include/gtest/gtest.h"
+#if !defined(OS_ANDROID)
+#include "chrome/browser/extensions/api/gcm/gcm_api.h"
+#endif
+
#if defined(OS_CHROMEOS)
#include "chrome/browser/chromeos/login/user_manager.h"
#include "chrome/browser/chromeos/settings/cros_settings.h"
#include "chrome/browser/chromeos/settings/device_settings_service.h"
-#else
-#include "components/signin/core/browser/signin_manager.h"
#endif
using namespace gcm;
@@ -40,6 +61,69 @@ const char kTestingUsername[] = "user1@example.com";
} // namespace
+// Helper class for asynchronous waiting.
+class Waiter {
+ public:
+ Waiter() {}
+ ~Waiter() {}
+
+ // Waits until the asynchronous operation finishes.
+ void WaitUntilCompleted() {
+ run_loop_.reset(new base::RunLoop);
+ run_loop_->Run();
+ }
+
+ // Signals that the asynchronous operation finishes.
+ void SignalCompleted() {
+ if (run_loop_ && run_loop_->running())
+ run_loop_->Quit();
+ }
+
+ // Runs until UI loop becomes idle.
+ void PumpUILoop() {
+ base::MessageLoop::current()->RunUntilIdle();
+ }
+
+ // Runs until IO loop becomes idle.
+ void PumpIOLoop() {
+ content::BrowserThread::PostTask(
+ content::BrowserThread::IO,
+ FROM_HERE,
+ base::Bind(&Waiter::OnIOLoopPump, base::Unretained(this)));
+
+ WaitUntilCompleted();
+ }
+
+ private:
+ void PumpIOLoopCompleted() {
+ DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
+
+ SignalCompleted();
+ }
+
+ void OnIOLoopPump() {
+ DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO));
+
+ content::BrowserThread::PostTask(
+ content::BrowserThread::IO,
+ FROM_HERE,
+ base::Bind(&Waiter::OnIOLoopPumpCompleted, base::Unretained(this)));
+ }
+
+ void OnIOLoopPumpCompleted() {
+ DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO));
+
+ content::BrowserThread::PostTask(
+ content::BrowserThread::UI,
+ FROM_HERE,
+ base::Bind(&Waiter::PumpIOLoopCompleted, base::Unretained(this)));
+ }
+
+ scoped_ptr<base::RunLoop> run_loop_;
+
+ DISALLOW_COPY_AND_ASSIGN(Waiter);
+};
+
class FakeExtensionGCMAppHandler : public ExtensionGCMAppHandler {
public:
FakeExtensionGCMAppHandler(Profile* profile, Waiter* waiter)
@@ -53,7 +137,7 @@ class FakeExtensionGCMAppHandler : public ExtensionGCMAppHandler {
virtual void OnMessage(
const std::string& app_id,
- const GCMClient::IncomingMessage& message)OVERRIDE {
+ const GCMClient::IncomingMessage& message) OVERRIDE {
}
virtual void OnMessagesDeleted(const std::string& app_id) OVERRIDE {
@@ -111,9 +195,9 @@ class ExtensionGCMAppHandlerTest : public testing::Test {
// Create a new profile.
TestingProfile::Builder builder;
builder.AddTestingFactory(SigninManagerFactory::GetInstance(),
- gcm::FakeSigninManager::Build);
+ FakeSigninManager::Build);
profile_ = builder.Build();
- signin_manager_ = static_cast<gcm::FakeSigninManager*>(
+ signin_manager_ = static_cast<FakeSigninManager*>(
SigninManagerFactory::GetInstance()->GetForProfile(profile_.get()));
// Create extension service in order to uninstall the extension.
@@ -239,7 +323,7 @@ class ExtensionGCMAppHandlerTest : public testing::Test {
scoped_ptr<content::TestBrowserThreadBundle> thread_bundle_;
scoped_ptr<TestingProfile> profile_;
ExtensionService* extension_service_; // Not owned.
- gcm::FakeSigninManager* signin_manager_; // Not owned.
+ FakeSigninManager* signin_manager_; // Not owned.
// This is needed to create extension service under CrOS.
#if defined(OS_CHROMEOS)

Powered by Google App Engine
This is Rietveld 408576698