| Index: apps/app_restore_service_browsertest.cc
|
| diff --git a/apps/app_restore_service_browsertest.cc b/apps/app_restore_service_browsertest.cc
|
| index 3eaf3ff213f5e3cfab9a5f933def33422bad0396..f17cc64c1211521118d85668d229e7c12212cb52 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
|
|
|