Index: chrome/browser/chromeos/extensions/file_manager/file_watcher_unittest.cc |
diff --git a/chrome/browser/chromeos/extensions/file_manager/file_watcher_unittest.cc b/chrome/browser/chromeos/extensions/file_manager/file_watcher_unittest.cc |
deleted file mode 100644 |
index 6e96f669d119289342f93fccae4c777b5e2a2f70..0000000000000000000000000000000000000000 |
--- a/chrome/browser/chromeos/extensions/file_manager/file_watcher_unittest.cc |
+++ /dev/null |
@@ -1,157 +0,0 @@ |
-// Copyright 2013 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "chrome/browser/chromeos/extensions/file_manager/file_watcher.h" |
- |
-#include "base/file_util.h" |
-#include "base/files/scoped_temp_dir.h" |
-#include "base/message_loop/message_loop.h" |
-#include "base/run_loop.h" |
-#include "chrome/browser/google_apis/test_util.h" |
-#include "content/public/test/test_browser_thread_bundle.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
- |
-namespace file_manager { |
-namespace { |
- |
-using google_apis::test_util::CreateQuitCallback; |
-using google_apis::test_util::CreateCopyResultCallback; |
- |
-class FileManagerFileWatcherTest : public testing::Test { |
- public: |
- // Use IO_MAINLOOP so FilePathWatcher works in the fake FILE thread, which |
- // is actually shared with the main thread. |
- FileManagerFileWatcherTest() |
- : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP) { |
- } |
- |
- private: |
- content::TestBrowserThreadBundle thread_bundle_; |
-}; |
- |
-TEST_F(FileManagerFileWatcherTest, AddAndRemoveOneExtensionId) { |
- const base::FilePath kVirtualPath = |
- base::FilePath::FromUTF8Unsafe("foo/bar.txt"); |
- const char kExtensionId[] = "extension-id"; |
- |
- FileWatcher file_watcher(kVirtualPath); |
- file_watcher.AddExtension(kExtensionId); |
- std::vector<std::string> extension_ids = file_watcher.GetExtensionIds(); |
- |
- ASSERT_EQ(1U, extension_ids.size()); |
- ASSERT_EQ(kExtensionId, extension_ids[0]); |
- |
- file_watcher.RemoveExtension(kExtensionId); |
- extension_ids = file_watcher.GetExtensionIds(); |
- ASSERT_EQ(0U, extension_ids.size()); |
-} |
- |
-TEST_F(FileManagerFileWatcherTest, AddAndRemoveMultipleExtensionIds) { |
- const base::FilePath kVirtualPath = |
- base::FilePath::FromUTF8Unsafe("foo/bar.txt"); |
- const char kExtensionFooId[] = "extension-foo-id"; |
- const char kExtensionBarId[] = "extension-bar-id"; |
- |
- FileWatcher file_watcher(kVirtualPath); |
- file_watcher.AddExtension(kExtensionFooId); |
- file_watcher.AddExtension(kExtensionBarId); |
- std::vector<std::string> extension_ids = file_watcher.GetExtensionIds(); |
- |
- // The list should be sorted. |
- ASSERT_EQ(2U, extension_ids.size()); |
- ASSERT_EQ(kExtensionBarId, extension_ids[0]); |
- ASSERT_EQ(kExtensionFooId, extension_ids[1]); |
- |
- // Remove Foo. Bar should remain. |
- file_watcher.RemoveExtension(kExtensionFooId); |
- extension_ids = file_watcher.GetExtensionIds(); |
- ASSERT_EQ(1U, extension_ids.size()); |
- ASSERT_EQ(kExtensionBarId, extension_ids[0]); |
- |
- // Remove Bar. Nothing should remain. |
- file_watcher.RemoveExtension(kExtensionBarId); |
- extension_ids = file_watcher.GetExtensionIds(); |
- ASSERT_EQ(0U, extension_ids.size()); |
-} |
- |
-TEST_F(FileManagerFileWatcherTest, AddSameExtensionMultipleTimes) { |
- const base::FilePath kVirtualPath = |
- base::FilePath::FromUTF8Unsafe("foo/bar.txt"); |
- const char kExtensionId[] = "extension-id"; |
- |
- FileWatcher file_watcher(kVirtualPath); |
- // Add three times. |
- file_watcher.AddExtension(kExtensionId); |
- file_watcher.AddExtension(kExtensionId); |
- file_watcher.AddExtension(kExtensionId); |
- |
- std::vector<std::string> extension_ids = file_watcher.GetExtensionIds(); |
- ASSERT_EQ(1U, extension_ids.size()); |
- ASSERT_EQ(kExtensionId, extension_ids[0]); |
- |
- // Remove 1st time. |
- file_watcher.RemoveExtension(kExtensionId); |
- extension_ids = file_watcher.GetExtensionIds(); |
- ASSERT_EQ(1U, extension_ids.size()); |
- |
- // Remove 2nd time. |
- file_watcher.RemoveExtension(kExtensionId); |
- extension_ids = file_watcher.GetExtensionIds(); |
- ASSERT_EQ(1U, extension_ids.size()); |
- |
- // Remove 3rd time. The extension ID should be gone now. |
- file_watcher.RemoveExtension(kExtensionId); |
- extension_ids = file_watcher.GetExtensionIds(); |
- ASSERT_EQ(0U, extension_ids.size()); |
-} |
- |
-TEST_F(FileManagerFileWatcherTest, WatchLocalFile) { |
- const base::FilePath kVirtualPath = |
- base::FilePath::FromUTF8Unsafe("foo/bar.txt"); |
- const char kExtensionId[] = "extension-id"; |
- |
- // Create a temporary directory. |
- base::ScopedTempDir temp_dir; |
- ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
- |
- // See the comment at the end of this function for why scoped_ptr is used. |
- scoped_ptr<FileWatcher> file_watcher( |
- new FileWatcher(kVirtualPath)); |
- file_watcher->AddExtension(kExtensionId); |
- |
- // Start watching changes in the temporary directory. |
- base::FilePath changed_path; |
- bool watcher_created = false; |
- bool on_change_error = false; |
- base::RunLoop run_loop; |
- file_watcher->WatchLocalFile( |
- temp_dir.path(), |
- CreateQuitCallback( |
- &run_loop, |
- CreateCopyResultCallback(&changed_path, &on_change_error)), |
- CreateCopyResultCallback(&watcher_created)); |
- // Spin the message loop so the base::FilePathWatcher is created. |
- base::RunLoop().RunUntilIdle(); |
- ASSERT_TRUE(watcher_created); |
- |
- // Create a temporary file in the temporary directory. The file watcher |
- // should detect the change in the directory. |
- base::FilePath temp_file_path; |
- ASSERT_TRUE(file_util::CreateTemporaryFileInDir(temp_dir.path(), |
- &temp_file_path)); |
- // Wait until the directory change is notified. |
- run_loop.Run(); |
- ASSERT_FALSE(on_change_error); |
- ASSERT_EQ(temp_dir.path().value(), changed_path.value()); |
- |
- // This is ugly, but FileWatcher should be deleted explicitly here, and |
- // spin the message loop so the base::FilePathWatcher is deleted. |
- // Otherwise, base::FilePathWatcher may detect a change when the temporary |
- // directory is deleted, which may result in crash. |
- file_watcher.reset(); |
- base::RunLoop().RunUntilIdle(); |
-} |
- |
-} // namespace |
-} // namespace file_manager. |