Index: chrome/browser/apps/ephemeral_app_browsertest.cc |
diff --git a/chrome/browser/apps/ephemeral_app_browsertest.cc b/chrome/browser/apps/ephemeral_app_browsertest.cc |
index 0a24044c6f49c89331e240371573b0a04b7fa338..3063399374229ad50c14794fca608bcef7394be8 100644 |
--- a/chrome/browser/apps/ephemeral_app_browsertest.cc |
+++ b/chrome/browser/apps/ephemeral_app_browsertest.cc |
@@ -277,6 +277,22 @@ class EphemeralAppBrowserTest : public EphemeralAppTestBase { |
process_manager()->GetBackgroundHostForExtension(app_id)); |
} |
+ // Verify properties of ephemeral apps. |
+ void VerifyEphemeralApp(const std::string& app_id) { |
+ EXPECT_TRUE(extensions::util::IsEphemeralApp(app_id, profile())); |
+ |
+ // Ephemeral apps should not be synced. |
+ scoped_ptr<AppSyncData> sync_change = GetLastSyncChangeForApp(app_id); |
+ EXPECT_FALSE(sync_change.get()); |
+ |
+ // Ephemeral apps should not be assigned ordinals. |
+ extensions::AppSorting* app_sorting = |
+ ExtensionPrefs::Get(profile())->app_sorting(); |
+ EXPECT_FALSE(app_sorting->GetAppLaunchOrdinal(app_id).IsValid()); |
+ EXPECT_FALSE(app_sorting->GetPageOrdinal(app_id).IsValid()); |
+ } |
+ |
+ // Dispatch a fake alarm event to the app. |
void DispatchAlarmEvent(EventRouter* event_router, |
const std::string& app_id) { |
alarms::Alarm dummy_alarm; |
@@ -324,17 +340,17 @@ class EphemeralAppBrowserTest : public EphemeralAppTestBase { |
new syncer::SyncErrorFactoryMock())); |
} |
- scoped_ptr<AppSyncData> GetFirstSyncChangeForApp(const std::string& id) { |
+ scoped_ptr<AppSyncData> GetLastSyncChangeForApp(const std::string& id) { |
scoped_ptr<AppSyncData> sync_data; |
for (syncer::SyncChangeList::iterator it = |
mock_sync_processor_.changes().begin(); |
it != mock_sync_processor_.changes().end(); ++it) { |
- sync_data.reset(new AppSyncData(*it)); |
- if (sync_data->id() == id) |
- return sync_data.Pass(); |
+ scoped_ptr<AppSyncData> data(new AppSyncData(*it)); |
+ if (data->id() == id) |
+ sync_data.reset(data.release()); |
} |
- return scoped_ptr<AppSyncData>(); |
+ return sync_data.Pass(); |
} |
void VerifySyncChange(const AppSyncData* sync_change, bool expect_enabled) { |
@@ -402,13 +418,18 @@ IN_PROC_BROWSER_TEST_F(EphemeralAppBrowserTest, |
// Verify that an updated ephemeral app will still have its ephemeral flag |
// enabled. |
IN_PROC_BROWSER_TEST_F(EphemeralAppBrowserTest, UpdateEphemeralApp) { |
- const Extension* app_v1 = InstallEphemeralApp(kMessagingReceiverApp); |
+ InitSyncService(); |
+ |
+ const Extension* app_v1 = InstallAndLaunchEphemeralApp(kMessagingReceiverApp); |
ASSERT_TRUE(app_v1); |
std::string app_id = app_v1->id(); |
base::Version app_original_version = *app_v1->version(); |
- app_v1 = NULL; // The extension object will be destroyed during update. |
+ |
+ VerifyEphemeralApp(app_id); |
+ CloseApp(app_id); |
// Update to version 2 of the app. |
+ app_v1 = NULL; // The extension object will be destroyed during update. |
InstallObserver installed_observer(profile()); |
const Extension* app_v2 = UpdateEphemeralApp( |
app_id, GetTestPath(kMessagingReceiverAppV2), |
@@ -423,8 +444,8 @@ IN_PROC_BROWSER_TEST_F(EphemeralAppBrowserTest, UpdateEphemeralApp) { |
// The ephemeral flag should still be enabled. |
ASSERT_TRUE(app_v2); |
- EXPECT_TRUE(app_v2->version()->CompareTo(app_original_version) > 0); |
- EXPECT_TRUE(extensions::util::IsEphemeralApp(app_v2->id(), profile())); |
+ EXPECT_GT(app_v2->version()->CompareTo(app_original_version), 0); |
+ VerifyEphemeralApp(app_id); |
} |
// Verify that if notifications have been disabled for an ephemeral app, it will |
@@ -533,7 +554,7 @@ IN_PROC_BROWSER_TEST_F(EphemeralAppBrowserTest, PromoteEphemeralApp) { |
ASSERT_TRUE(app); |
// Ephemeral apps should not be synced. |
- scoped_ptr<AppSyncData> sync_change = GetFirstSyncChangeForApp(app->id()); |
+ scoped_ptr<AppSyncData> sync_change = GetLastSyncChangeForApp(app->id()); |
EXPECT_FALSE(sync_change.get()); |
// Promote the app to a regular installed app. |
@@ -548,7 +569,7 @@ IN_PROC_BROWSER_TEST_F(EphemeralAppBrowserTest, PromoteEphemeralApp) { |
EXPECT_TRUE(params.from_ephemeral); |
// The installation should now be synced. |
- sync_change = GetFirstSyncChangeForApp(app->id()); |
+ sync_change = GetLastSyncChangeForApp(app->id()); |
VerifySyncChange(sync_change.get(), true); |
} |
@@ -574,7 +595,7 @@ IN_PROC_BROWSER_TEST_F(EphemeralAppBrowserTest, PromoteEphemeralAppAndEnable) { |
VerifyPromotedApp(app->id(), ExtensionRegistry::ENABLED); |
EXPECT_FALSE(prefs->DidExtensionEscalatePermissions(app->id())); |
- scoped_ptr<AppSyncData> sync_change = GetFirstSyncChangeForApp(app->id()); |
+ scoped_ptr<AppSyncData> sync_change = GetLastSyncChangeForApp(app->id()); |
VerifySyncChange(sync_change.get(), true); |
} |
@@ -599,7 +620,7 @@ IN_PROC_BROWSER_TEST_F(EphemeralAppBrowserTest, |
PromoteEphemeralApp(app); |
VerifyPromotedApp(app->id(), ExtensionRegistry::DISABLED); |
- scoped_ptr<AppSyncData> sync_change = GetFirstSyncChangeForApp(app->id()); |
+ scoped_ptr<AppSyncData> sync_change = GetLastSyncChangeForApp(app->id()); |
VerifySyncChange(sync_change.get(), false); |
} |