summaryrefslogtreecommitdiffstats
path: root/apps/app_restore_service_browsertest.cc
diff options
context:
space:
mode:
authorkoz@chromium.org <koz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-13 13:14:57 +0000
committerkoz@chromium.org <koz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-13 13:14:57 +0000
commitfc2a40fab7f0d6347eba9ce7757532d5b47b977d (patch)
tree3cd2457629926cffd25702e2b91dbdc9e3f5ef90 /apps/app_restore_service_browsertest.cc
parentb790fd02a239844bfbf29ebaa204ee40ce0eaea2 (diff)
downloadchromium_src-fc2a40fab7f0d6347eba9ce7757532d5b47b977d.zip
chromium_src-fc2a40fab7f0d6347eba9ce7757532d5b47b977d.tar.gz
chromium_src-fc2a40fab7f0d6347eba9ce7757532d5b47b977d.tar.bz2
Give an app the file entries it had back on restart.
BUG=165832 Review URL: https://chromiumcodereview.appspot.com/12391006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@187846 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'apps/app_restore_service_browsertest.cc')
-rw-r--r--apps/app_restore_service_browsertest.cc48
1 files changed, 48 insertions, 0 deletions
diff --git a/apps/app_restore_service_browsertest.cc b/apps/app_restore_service_browsertest.cc
index 3eaf3ff..f17cc64 100644
--- a/apps/app_restore_service_browsertest.cc
+++ b/apps/app_restore_service_browsertest.cc
@@ -98,4 +98,52 @@ IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, FileAccessIsSavedToPrefs) {
ASSERT_TRUE(file_entries.empty());
}
+IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, FileAccessIsRestored) {
+ content::WindowedNotificationObserver extension_suspended(
+ chrome::NOTIFICATION_EXTENSION_HOST_DESTROYED,
+ content::NotificationService::AllSources());
+
+ base::ScopedTempDir temp_directory;
+ ASSERT_TRUE(temp_directory.CreateUniqueTempDir());
+ base::FilePath temp_file;
+ ASSERT_TRUE(file_util::CreateTemporaryFileInDir(temp_directory.path(),
+ &temp_file));
+
+ FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest(
+ &temp_file);
+
+ ExtensionTestMessageListener file_written_listener("fileWritten", false);
+ ExtensionTestMessageListener access_ok_listener(
+ "restartedFileAccessOK", false);
+
+ const Extension* extension =
+ LoadAndLaunchPlatformApp("file_access_restored_test");
+ ASSERT_TRUE(extension);
+ file_written_listener.WaitUntilSatisfied();
+
+ ExtensionService* extension_service =
+ ExtensionSystem::Get(browser()->profile())->extension_service();
+ ExtensionPrefs* extension_prefs = extension_service->extension_prefs();
+
+ // Record the file entries in prefs because when the app gets suspended it
+ // will have them all cleared.
+ std::vector<SavedFileEntry> file_entries;
+ extension_prefs->GetSavedFileEntries(extension->id(), &file_entries);
+ extension_suspended.Wait();
+
+ // Simulate a restart by populating the preferences as if the browser didn't
+ // get time to clean itself up.
+ extension_prefs->SetExtensionRunning(extension->id(), true);
+ for (std::vector<SavedFileEntry>::const_iterator it = file_entries.begin();
+ it != file_entries.end(); ++it) {
+ extension_prefs->AddSavedFileEntry(
+ extension->id(), it->id, it->path, it->writable);
+ }
+
+ apps::AppRestoreServiceFactory::GetForProfile(browser()->profile())->
+ HandleStartup(true);
+
+ access_ok_listener.WaitUntilSatisfied();
+}
+
} // namespace apps