summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/chromeos/extensions/file_browser_private_apitest.cc82
-rw-r--r--chrome/test/data/extensions/api_test/filebrowser_mount/test.js2
-rw-r--r--chromeos/dbus/cros_disks_client.cc16
-rw-r--r--chromeos/dbus/cros_disks_client.h10
-rw-r--r--webkit/chromeos/DEPS3
-rw-r--r--webkit/chromeos/fileapi/cros_mount_point_provider.cc14
-rw-r--r--webkit/chromeos/fileapi/cros_mount_point_provider_unittest.cc11
-rw-r--r--webkit/fileapi/external_mount_points.cc20
8 files changed, 94 insertions, 64 deletions
diff --git a/chrome/browser/chromeos/extensions/file_browser_private_apitest.cc b/chrome/browser/chromeos/extensions/file_browser_private_apitest.cc
index e7fa7c5..0fbd87c 100644
--- a/chrome/browser/chromeos/extensions/file_browser_private_apitest.cc
+++ b/chrome/browser/chromeos/extensions/file_browser_private_apitest.cc
@@ -9,6 +9,7 @@
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/test/base/ui_test_utils.h"
+#include "chromeos/dbus/cros_disks_client.h"
#include "chromeos/disks/mock_disk_mount_manager.h"
#include "content/public/browser/browser_context.h"
#include "content/public/browser/storage_partition.h"
@@ -16,10 +17,7 @@
#include "webkit/fileapi/file_system_mount_point_provider.h"
using ::testing::_;
-using ::testing::AnyNumber;
using ::testing::ReturnRef;
-using ::testing::StrEq;
-using content::BrowserContext;
using chromeos::disks::DiskMountManager;
@@ -46,8 +44,8 @@ struct TestDiskInfo {
};
struct TestMountPoint {
- const char* source_path;
- const char* mount_path;
+ std::string source_path;
+ std::string mount_path;
chromeos::MountType mount_type;
chromeos::disks::MountCondition mount_condition;
@@ -115,38 +113,6 @@ TestDiskInfo kTestDisks[] = {
}
};
-TestMountPoint kTestMountPoints[] = {
- {
- "device_path1",
- "/media/removable/mount_path1",
- chromeos::MOUNT_TYPE_DEVICE,
- chromeos::disks::MOUNT_CONDITION_NONE,
- 0
- },
- {
- "device_path2",
- "/media/removable/mount_path2",
- chromeos::MOUNT_TYPE_DEVICE,
- chromeos::disks::MOUNT_CONDITION_NONE,
- 1
- },
- {
- "device_path3",
- "/media/removable/mount_path3",
- chromeos::MOUNT_TYPE_DEVICE,
- chromeos::disks::MOUNT_CONDITION_NONE,
- 2
- },
- {
- "/media/removable/archive_path",
- "/media/archive/archive_mount_path",
- chromeos::MOUNT_TYPE_ARCHIVE,
- chromeos::disks::MOUNT_CONDITION_NONE,
- -1
- }
-};
-
-
} // namespace
class ExtensionFileBrowserPrivateApiTest : public ExtensionApiTest {
@@ -186,6 +152,41 @@ class ExtensionFileBrowserPrivateApiTest : public ExtensionApiTest {
private:
void InitMountPoints() {
+ const TestMountPoint kTestMountPoints[] = {
+ {
+ "device_path1",
+ chromeos::CrosDisksClient::GetRemovableDiskMountPoint().AppendASCII(
+ "mount_path1").AsUTF8Unsafe(),
+ chromeos::MOUNT_TYPE_DEVICE,
+ chromeos::disks::MOUNT_CONDITION_NONE,
+ 0
+ },
+ {
+ "device_path2",
+ chromeos::CrosDisksClient::GetRemovableDiskMountPoint().AppendASCII(
+ "mount_path2").AsUTF8Unsafe(),
+ chromeos::MOUNT_TYPE_DEVICE,
+ chromeos::disks::MOUNT_CONDITION_NONE,
+ 1
+ },
+ {
+ "device_path3",
+ chromeos::CrosDisksClient::GetRemovableDiskMountPoint().AppendASCII(
+ "mount_path3").AsUTF8Unsafe(),
+ chromeos::MOUNT_TYPE_DEVICE,
+ chromeos::disks::MOUNT_CONDITION_NONE,
+ 2
+ },
+ {
+ "archive_path",
+ chromeos::CrosDisksClient::GetArchiveMountPoint().AppendASCII(
+ "archive_mount_path").AsUTF8Unsafe(),
+ chromeos::MOUNT_TYPE_ARCHIVE,
+ chromeos::disks::MOUNT_CONDITION_NONE,
+ -1
+ }
+ };
+
for (size_t i = 0; i < arraysize(kTestMountPoints); i++) {
mount_points_.insert(DiskMountManager::MountPointMap::value_type(
kTestMountPoints[i].mount_path,
@@ -247,9 +248,10 @@ IN_PROC_BROWSER_TEST_F(ExtensionFileBrowserPrivateApiTest, FileBrowserMount) {
EXPECT_CALL(*disk_mount_manager_mock_, UnmountPath(_, _))
.Times(0);
EXPECT_CALL(*disk_mount_manager_mock_,
- UnmountPath(StrEq("/media/archive/archive_mount_path"),
- chromeos::UNMOUNT_OPTIONS_NONE))
- .Times(1);
+ UnmountPath(
+ chromeos::CrosDisksClient::GetArchiveMountPoint().AppendASCII(
+ "archive_mount_path").AsUTF8Unsafe(),
+ chromeos::UNMOUNT_OPTIONS_NONE)).Times(1);
EXPECT_CALL(*disk_mount_manager_mock_, disks())
.WillRepeatedly(ReturnRef(volumes_));
diff --git a/chrome/test/data/extensions/api_test/filebrowser_mount/test.js b/chrome/test/data/extensions/api_test/filebrowser_mount/test.js
index b6b6812..f6a141e 100644
--- a/chrome/test/data/extensions/api_test/filebrowser_mount/test.js
+++ b/chrome/test/data/extensions/api_test/filebrowser_mount/test.js
@@ -53,7 +53,7 @@ var expectedVolume3 = {
// and values sorted by mountPath.
var expectedMountPoints = [
{
- sourcePath: '/media/removable/archive_path',
+ sourcePath: 'archive_path',
mountPath: 'archive/archive_mount_path',
mountType: 'file',
mountCondition: ''
diff --git a/chromeos/dbus/cros_disks_client.cc b/chromeos/dbus/cros_disks_client.cc
index ab24b37..0116a63 100644
--- a/chromeos/dbus/cros_disks_client.cc
+++ b/chromeos/dbus/cros_disks_client.cc
@@ -7,6 +7,8 @@
#include <map>
#include "base/bind.h"
+#include "base/chromeos/chromeos_version.h"
+#include "base/files/file_path.h"
#include "base/stl_util.h"
#include "base/stringprintf.h"
#include "dbus/bus.h"
@@ -610,4 +612,18 @@ CrosDisksClient* CrosDisksClient::Create(DBusClientImplementationType type,
return new CrosDisksClientStubImpl();
}
+// static
+base::FilePath CrosDisksClient::GetArchiveMountPoint() {
+ return base::FilePath(base::chromeos::IsRunningOnChromeOS() ?
+ FILE_PATH_LITERAL("/media/archive") :
+ FILE_PATH_LITERAL("/tmp/chromeos/media/archive"));
+}
+
+// static
+base::FilePath CrosDisksClient::GetRemovableDiskMountPoint() {
+ return base::FilePath(base::chromeos::IsRunningOnChromeOS() ?
+ FILE_PATH_LITERAL("/media/removable") :
+ FILE_PATH_LITERAL("/tmp/chromeos/media/removable"));
+}
+
} // namespace chromeos
diff --git a/chromeos/dbus/cros_disks_client.h b/chromeos/dbus/cros_disks_client.h
index ea0e425..047aeca 100644
--- a/chromeos/dbus/cros_disks_client.h
+++ b/chromeos/dbus/cros_disks_client.h
@@ -13,6 +13,10 @@
#include "chromeos/chromeos_export.h"
#include "chromeos/dbus/dbus_client_implementation_type.h"
+namespace base {
+class FilePath;
+}
+
namespace dbus {
class Bus;
class Response;
@@ -288,6 +292,12 @@ class CHROMEOS_EXPORT CrosDisksClient {
static CrosDisksClient* Create(DBusClientImplementationType type,
dbus::Bus* bus);
+ // Returns the path of the mount point for archive files.
+ static base::FilePath GetArchiveMountPoint();
+
+ // Returns the path of the mount point for removable disks.
+ static base::FilePath GetRemovableDiskMountPoint();
+
protected:
// Create() should be used instead.
CrosDisksClient();
diff --git a/webkit/chromeos/DEPS b/webkit/chromeos/DEPS
new file mode 100644
index 0000000..79b8e8b
--- /dev/null
+++ b/webkit/chromeos/DEPS
@@ -0,0 +1,3 @@
+include_rules = [
+ "+chromeos",
+]
diff --git a/webkit/chromeos/fileapi/cros_mount_point_provider.cc b/webkit/chromeos/fileapi/cros_mount_point_provider.cc
index 7f13002..731b10c 100644
--- a/webkit/chromeos/fileapi/cros_mount_point_provider.cc
+++ b/webkit/chromeos/fileapi/cros_mount_point_provider.cc
@@ -11,6 +11,7 @@
#include "base/stringprintf.h"
#include "base/synchronization/lock.h"
#include "base/utf_string_conversions.h"
+#include "chromeos/dbus/cros_disks_client.h"
#include "third_party/WebKit/Source/Platform/chromium/public/WebCString.h"
#include "third_party/WebKit/Source/Platform/chromium/public/WebFileSystem.h"
#include "third_party/WebKit/Source/Platform/chromium/public/WebString.h"
@@ -57,6 +58,19 @@ CrosMountPointProvider::CrosMountPointProvider(
new fileapi::IsolatedFileUtil())),
mount_points_(mount_points),
system_mount_points_(system_mount_points) {
+ // Add default system mount points.
+ system_mount_points_->RegisterFileSystem(
+ "archive",
+ fileapi::kFileSystemTypeNativeLocal,
+ chromeos::CrosDisksClient::GetArchiveMountPoint());
+ system_mount_points_->RegisterFileSystem(
+ "removable",
+ fileapi::kFileSystemTypeNativeLocal,
+ chromeos::CrosDisksClient::GetRemovableDiskMountPoint());
+ system_mount_points_->RegisterFileSystem(
+ "oem",
+ fileapi::kFileSystemTypeRestrictedNativeLocal,
+ base::FilePath(FILE_PATH_LITERAL("/usr/share/oem")));
}
CrosMountPointProvider::~CrosMountPointProvider() {
diff --git a/webkit/chromeos/fileapi/cros_mount_point_provider_unittest.cc b/webkit/chromeos/fileapi/cros_mount_point_provider_unittest.cc
index 1910ee3..22f74df 100644
--- a/webkit/chromeos/fileapi/cros_mount_point_provider_unittest.cc
+++ b/webkit/chromeos/fileapi/cros_mount_point_provider_unittest.cc
@@ -7,6 +7,7 @@
#include <set>
#include "base/files/file_path.h"
+#include "chromeos/dbus/cros_disks_client.h"
#include "googleurl/src/url_util.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "webkit/fileapi/external_mount_points.h"
@@ -45,8 +46,10 @@ TEST(CrosMountPointProviderTest, DefaultMountPoints) {
// By default there should be 3 mount points (in system mount points):
EXPECT_EQ(3u, root_dirs.size());
- EXPECT_TRUE(root_dirs_set.count(base::FilePath(FPL("/media/removable"))));
- EXPECT_TRUE(root_dirs_set.count(base::FilePath(FPL("/media/archive"))));
+ EXPECT_TRUE(root_dirs_set.count(
+ chromeos::CrosDisksClient::GetRemovableDiskMountPoint()));
+ EXPECT_TRUE(root_dirs_set.count(
+ chromeos::CrosDisksClient::GetArchiveMountPoint()));
EXPECT_TRUE(root_dirs_set.count(base::FilePath(FPL("/usr/share/oem"))));
}
@@ -64,6 +67,8 @@ TEST(CrosMountPointProviderTest, GetRootDirectories) {
mount_points.get(),
system_mount_points.get());
+ const size_t initial_root_dirs_size = provider.GetRootDirectories().size();
+
// Register 'local' test mount points.
mount_points->RegisterFileSystem("c",
fileapi::kFileSystemTypeNativeLocal,
@@ -82,7 +87,7 @@ TEST(CrosMountPointProviderTest, GetRootDirectories) {
std::vector<base::FilePath> root_dirs = provider.GetRootDirectories();
std::set<base::FilePath> root_dirs_set(root_dirs.begin(), root_dirs.end());
- EXPECT_EQ(4u, root_dirs.size());
+ EXPECT_EQ(initial_root_dirs_size + 4, root_dirs.size());
EXPECT_TRUE(root_dirs_set.count(base::FilePath(FPL("/a/b/c"))));
EXPECT_TRUE(root_dirs_set.count(base::FilePath(FPL("/b/c/d"))));
EXPECT_TRUE(root_dirs_set.count(base::FilePath(FPL("/g/c/d"))));
diff --git a/webkit/fileapi/external_mount_points.cc b/webkit/fileapi/external_mount_points.cc
index 5c84c1b..58a8883 100644
--- a/webkit/fileapi/external_mount_points.cc
+++ b/webkit/fileapi/external_mount_points.cc
@@ -37,7 +37,6 @@ class SystemMountPointsLazyWrapper {
public:
SystemMountPointsLazyWrapper()
: system_mount_points_(fileapi::ExternalMountPoints::CreateRefCounted()) {
- RegisterDefaultMountPoints();
}
~SystemMountPointsLazyWrapper() {}
@@ -47,24 +46,6 @@ class SystemMountPointsLazyWrapper {
}
private:
- void RegisterDefaultMountPoints() {
-#if defined(OS_CHROMEOS)
- // Add default system mount points.
- system_mount_points_->RegisterFileSystem(
- "archive",
- fileapi::kFileSystemTypeNativeLocal,
- base::FilePath(FILE_PATH_LITERAL("/media/archive")));
- system_mount_points_->RegisterFileSystem(
- "removable",
- fileapi::kFileSystemTypeNativeLocal,
- base::FilePath(FILE_PATH_LITERAL("/media/removable")));
- system_mount_points_->RegisterFileSystem(
- "oem",
- fileapi::kFileSystemTypeRestrictedNativeLocal,
- base::FilePath(FILE_PATH_LITERAL("/usr/share/oem")));
-#endif // defined(OS_CHROMEOS)
- }
-
scoped_refptr<fileapi::ExternalMountPoints> system_mount_points_;
};
@@ -351,4 +332,3 @@ ScopedExternalFileSystem::~ScopedExternalFileSystem() {
}
} // namespace fileapi
-