Chromium Code Reviews| Index: chrome/browser/chromeos/extensions/file_manager/file_manager_private_apitest.cc |
| diff --git a/chrome/browser/chromeos/extensions/file_manager/file_manager_private_apitest.cc b/chrome/browser/chromeos/extensions/file_manager/file_manager_private_apitest.cc |
| index 7644101eb3c72bf575a6503586bd681bc4e6ee5b..bb1e52b748b1e59a2fd62312c2aeb1cc014f5c0d 100644 |
| --- a/chrome/browser/chromeos/extensions/file_manager/file_manager_private_apitest.cc |
| +++ b/chrome/browser/chromeos/extensions/file_manager/file_manager_private_apitest.cc |
| @@ -3,8 +3,11 @@ |
| // found in the LICENSE file. |
| #include "base/stl_util.h" |
| +#include "chrome/browser/chromeos/extensions/file_manager/event_router.h" |
| #include "chrome/browser/chromeos/file_manager/drive_test_util.h" |
| +#include "chrome/browser/chromeos/file_manager/file_watcher.h" |
| #include "chrome/browser/extensions/extension_apitest.h" |
| +#include "chrome/test/base/testing_profile.h" |
| #include "chromeos/dbus/cros_disks_client.h" |
| #include "chromeos/disks/mock_disk_mount_manager.h" |
| #include "extensions/common/extension.h" |
| @@ -108,6 +111,28 @@ TestDiskInfo kTestDisks[] = { |
| } |
| }; |
| +struct DispatchDirChangeEve { |
|
mtomasz
2014/10/16 04:02:03
ditto
yawano
2014/10/17 03:57:22
Done.
|
| + base::FilePath virtual_path; |
| + std::vector<std::string> extension_ids; |
| +}; |
| + |
| +class DispatchDirChangeEveImpl { |
| + public: |
| + std::vector<DispatchDirChangeEve> events; |
| + |
| + void Callback(const base::FilePath& virtual_path, |
| + const drive::FileChange* list, |
| + bool got_error, |
| + const std::vector<std::string>& extension_ids) { |
| + DispatchDirChangeEve dispatch_dir_change_eve; |
| + dispatch_dir_change_eve.virtual_path = virtual_path; |
| + dispatch_dir_change_eve.extension_ids = extension_ids; |
| + events.push_back(dispatch_dir_change_eve); |
| + } |
| +}; |
| + |
| +void AddFileWatchCallback(bool b) { } |
| + |
| } // namespace |
| class FileManagerPrivateApiTest : public ExtensionApiTest { |
| @@ -270,3 +295,41 @@ IN_PROC_BROWSER_TEST_F(FileManagerPrivateApiTest, Permissions) { |
| const extensions::InstallWarning& warning = extension->install_warnings()[0]; |
| EXPECT_EQ("fileManagerPrivate", warning.key); |
| } |
| + |
| +IN_PROC_BROWSER_TEST_F(FileManagerPrivateApiTest, OnDirectoryChanged) { |
| + TestingProfile profile; |
| + file_manager::EventRouter event_router(&profile); |
| + |
| + DispatchDirChangeEveImpl dispatch_dir_change_eve_impl; |
| + event_router.SetDispatchDirChangeEveImplForTesting(base::Bind( |
| + &DispatchDirChangeEveImpl::Callback, |
| + base::Unretained(&dispatch_dir_change_eve_impl))); |
| + |
| + // /a/b/c and /a/d/e are being watched. |
| + // In this test case, we assume these pathes does not actually exist in the |
| + // machine. (EventRouter does not notify event if the child directory still |
| + // exists). |
| + event_router.AddFileWatch(base::FilePath("no-existing-fs/root/a/b/c"), |
| + base::FilePath("no-existing-fs-virtual/root/a/b/c"), |
| + "extension_1", |
| + base::Bind(&AddFileWatchCallback)); |
| + |
| + event_router.AddFileWatch(base::FilePath("no-existing-fs/root/a/d/e"), |
| + base::FilePath("no-existing-fs-hash/root/a/d/e"), |
| + "extension_2", |
| + base::Bind(&AddFileWatchCallback)); |
| + |
| + // When /a/b is deleted (1 and 2 are notified). |
| + event_router.OnDirectoryChanged(base::FilePath("no-existing-fs/root/a")); |
| + ASSERT_EQ(2lu, dispatch_dir_change_eve_impl.events.size()); |
| + |
| + // When /a/b/c is deleted (1 is notified). |
| + event_router.OnDirectoryChanged(base::FilePath("no-existing-fs/root/a/b")); |
| + ASSERT_EQ(3lu, dispatch_dir_change_eve_impl.events.size()); |
| + |
| + // When /z/y is deleted (Not notified) |
| + event_router.OnDirectoryChanged(base::FilePath("no-existing-fs/root/z")); |
| + ASSERT_EQ(3lu, dispatch_dir_change_eve_impl.events.size()); |
| + |
| + event_router.Shutdown(); |
| +} |