diff options
author | koz@chromium.org <koz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-13 13:14:57 +0000 |
---|---|---|
committer | koz@chromium.org <koz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-13 13:14:57 +0000 |
commit | fc2a40fab7f0d6347eba9ce7757532d5b47b977d (patch) | |
tree | 3cd2457629926cffd25702e2b91dbdc9e3f5ef90 /apps/app_restore_service_browsertest.cc | |
parent | b790fd02a239844bfbf29ebaa204ee40ce0eaea2 (diff) | |
download | chromium_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.cc | 48 |
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 |