Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4141)

Unified Diff: chrome/browser/chromeos/extensions/file_manager/file_watcher_unittest.cc

Issue 23945002: file_manager: Move non-binding code to c/b/chromeos/file_manager (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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.

Powered by Google App Engine
This is Rietveld 408576698