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

Unified Diff: chrome/browser/sync_file_system/drive_backend/sync_engine_unittest.cc

Issue 62883005: Implement SyncEngine::UpdateRegisteredApps() (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed Created 7 years, 1 month 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/sync_file_system/drive_backend/sync_engine_unittest.cc
diff --git a/chrome/browser/sync_file_system/drive_backend/sync_engine_unittest.cc b/chrome/browser/sync_file_system/drive_backend/sync_engine_unittest.cc
index fb3c89acd19b02bce990d03aef34c9d06733cc5a..414df0e3c7e686e774f90e82701c3cd0967ac500 100644
--- a/chrome/browser/sync_file_system/drive_backend/sync_engine_unittest.cc
+++ b/chrome/browser/sync_file_system/drive_backend/sync_engine_unittest.cc
@@ -6,12 +6,16 @@
#include "base/files/scoped_temp_dir.h"
#include "base/run_loop.h"
+#include "base/strings/stringprintf.h"
#include "chrome/browser/drive/fake_drive_service.h"
+#include "chrome/browser/extensions/test_extension_service.h"
#include "chrome/browser/sync_file_system/drive_backend/metadata_database.h"
#include "chrome/browser/sync_file_system/drive_backend/metadata_database.pb.h"
#include "chrome/browser/sync_file_system/sync_file_system_test_util.h"
#include "content/public/test/test_browser_thread_bundle.h"
#include "extensions/common/extension.h"
+#include "extensions/common/extension_builder.h"
+#include "extensions/common/value_builder.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace sync_file_system {
@@ -23,6 +27,53 @@ const char kAppID[] = "app_id";
} // namespace
+class MockExtensionService : public TestExtensionService {
+ public:
+ MockExtensionService() {}
+ virtual ~MockExtensionService() {}
+
+ virtual const ExtensionSet* extensions() const OVERRIDE {
+ return &extensions_;
+ }
+
+ virtual const ExtensionSet* disabled_extensions() const OVERRIDE {
+ return &disabled_extensions_;
+ }
+
+ virtual void AddExtension(const extensions::Extension* extension) OVERRIDE {
+ extensions_.Insert(make_scoped_refptr(extension));
+ }
+
+ virtual const extensions::Extension* GetInstalledExtension(
+ const std::string& extension_id) const OVERRIDE {
+ return extensions_.GetByID(extension_id);
+ }
+
+ virtual bool IsExtensionEnabled(
+ const std::string& extension_id) const OVERRIDE {
+ return extensions_.Contains(extension_id) &&
+ !disabled_extensions_.Contains(extension_id);
+ }
+
+ void UninstallExtension(const std::string& extension_id) {
+ extensions_.Remove(extension_id);
+ disabled_extensions_.Remove(extension_id);
+ }
+
+ void DisableExtension(const std::string& extension_id) {
+ if (!IsExtensionEnabled(extension_id))
+ return;
+ const extensions::Extension* extension = extensions_.GetByID(extension_id);
+ disabled_extensions_.Insert(make_scoped_refptr(extension));
+ }
+
+ private:
+ ExtensionSet extensions_;
+ ExtensionSet disabled_extensions_;
+
+ DISALLOW_COPY_AND_ASSIGN(MockExtensionService);
+};
+
class SyncEngineTest : public testing::Test {
public:
SyncEngineTest() {}
@@ -30,6 +81,7 @@ class SyncEngineTest : public testing::Test {
virtual void SetUp() OVERRIDE {
ASSERT_TRUE(profile_dir_.CreateUniqueTempDir());
+ extension_service_.reset(new MockExtensionService);
scoped_ptr<drive::FakeDriveService> fake_drive_service(
new drive::FakeDriveService);
@@ -41,22 +93,30 @@ class SyncEngineTest : public testing::Test {
profile_dir_.path(),
base::MessageLoopProxy::current(),
fake_drive_service.PassAs<drive::DriveServiceInterface>(),
- NULL, NULL));
+ NULL,
+ extension_service_.get()));
sync_engine_->Initialize();
base::RunLoop().RunUntilIdle();
}
virtual void TearDown() OVERRIDE {
sync_engine_.reset();
+ extension_service_.reset();
base::RunLoop().RunUntilIdle();
}
+ MockExtensionService* extension_service() { return extension_service_.get(); }
SyncEngine* sync_engine() { return sync_engine_.get(); }
+ void UpdateRegisteredApps() {
+ sync_engine_->UpdateRegisteredApps();
+ }
+
private:
content::TestBrowserThreadBundle browser_threads_;
base::ScopedTempDir profile_dir_;
+ scoped_ptr<MockExtensionService> extension_service_;
scoped_ptr<drive_backend::SyncEngine> sync_engine_;
DISALLOW_COPY_AND_ASSIGN(SyncEngineTest);
@@ -95,5 +155,52 @@ TEST_F(SyncEngineTest, EnableOrigin) {
ASSERT_FALSE(metadata_database->FindAppRootTracker(kAppID, &tracker));
}
+TEST_F(SyncEngineTest, UpdateRegisteredApps) {
+ SyncStatusCode sync_status = SYNC_STATUS_UNKNOWN;
+ for (int i = 0; i < 3; i++) {
+ scoped_refptr<const extensions::Extension> extension =
+ extensions::ExtensionBuilder()
+ .SetManifest(extensions::DictionaryBuilder()
+ .Set("name", "foo")
+ .Set("version", "1.0")
+ .Set("manifest_version", 2))
+ .SetID(base::StringPrintf("app_%d", i))
+ .Build();
+ extension_service()->AddExtension(extension.get());
+ GURL origin = extensions::Extension::GetBaseURLFromExtensionId(
+ extension->id());
+ sync_status = SYNC_STATUS_UNKNOWN;
+ sync_engine()->RegisterOrigin(origin, CreateResultReceiver(&sync_status));
+ base::RunLoop().RunUntilIdle();
+ EXPECT_EQ(SYNC_STATUS_OK, sync_status);
+ }
+
+ MetadataDatabase* metadata_database = sync_engine()->GetMetadataDatabase();
+ FileTracker tracker;
+
+ ASSERT_TRUE(metadata_database->FindAppRootTracker("app_0", &tracker));
+ EXPECT_EQ(TRACKER_KIND_APP_ROOT, tracker.tracker_kind());
+
+ ASSERT_TRUE(metadata_database->FindAppRootTracker("app_1", &tracker));
+ EXPECT_EQ(TRACKER_KIND_APP_ROOT, tracker.tracker_kind());
+
+ ASSERT_TRUE(metadata_database->FindAppRootTracker("app_2", &tracker));
+ EXPECT_EQ(TRACKER_KIND_APP_ROOT, tracker.tracker_kind());
+
+ extension_service()->DisableExtension("app_1");
+ extension_service()->UninstallExtension("app_2");
+ ASSERT_FALSE(extension_service()->GetInstalledExtension("app_2"));
+ UpdateRegisteredApps();
+ base::RunLoop().RunUntilIdle();
+
+ ASSERT_TRUE(metadata_database->FindAppRootTracker("app_0", &tracker));
+ EXPECT_EQ(TRACKER_KIND_APP_ROOT, tracker.tracker_kind());
+
+ ASSERT_TRUE(metadata_database->FindAppRootTracker("app_1", &tracker));
+ EXPECT_EQ(TRACKER_KIND_DISABLED_APP_ROOT, tracker.tracker_kind());
+
+ ASSERT_FALSE(metadata_database->FindAppRootTracker("app_2", &tracker));
+}
+
} // namespace drive_backend
} // namespace sync_file_system

Powered by Google App Engine
This is Rietveld 408576698