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

Side by Side Diff: chromeos/dbus/cros_disks_client.cc

Issue 2392503002: Allow to pass remount option to Mount method of cros_disks_client. (Closed)
Patch Set: Rename enum item names to be more readable. Created 4 years, 2 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 unified diff | Download patch
« no previous file with comments | « chromeos/dbus/cros_disks_client.h ('k') | chromeos/dbus/cros_disks_client_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chromeos/dbus/cros_disks_client.h" 5 #include "chromeos/dbus/cros_disks_client.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <map> 10 #include <map>
(...skipping 19 matching lines...) Expand all
30 30
31 namespace chromeos { 31 namespace chromeos {
32 32
33 namespace { 33 namespace {
34 34
35 const char* kDefaultMountOptions[] = { 35 const char* kDefaultMountOptions[] = {
36 "nodev", "noexec", "nosuid", 36 "nodev", "noexec", "nosuid",
37 }; 37 };
38 const char kReadOnlyOption[] = "ro"; 38 const char kReadOnlyOption[] = "ro";
39 const char kReadWriteOption[] = "rw"; 39 const char kReadWriteOption[] = "rw";
40 const char kRemountOption[] = "remount";
40 const char kMountLabelOption[] = "mountlabel"; 41 const char kMountLabelOption[] = "mountlabel";
41 42
42 const char* kDefaultUnmountOptions[] = { 43 const char* kDefaultUnmountOptions[] = {
43 "force", 44 "force",
44 }; 45 };
45 46
46 const char kLazyUnmountOption[] = "lazy"; 47 const char kLazyUnmountOption[] = "lazy";
47 48
48 // Checks if retrieved media type is in boundaries of DeviceMediaType. 49 // Checks if retrieved media type is in boundaries of DeviceMediaType.
49 bool IsValidMediaType(uint32_t type) { 50 bool IsValidMediaType(uint32_t type) {
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 // The CrosDisksClient implementation. 98 // The CrosDisksClient implementation.
98 class CrosDisksClientImpl : public CrosDisksClient { 99 class CrosDisksClientImpl : public CrosDisksClient {
99 public: 100 public:
100 CrosDisksClientImpl() : proxy_(NULL), weak_ptr_factory_(this) {} 101 CrosDisksClientImpl() : proxy_(NULL), weak_ptr_factory_(this) {}
101 102
102 // CrosDisksClient override. 103 // CrosDisksClient override.
103 void Mount(const std::string& source_path, 104 void Mount(const std::string& source_path,
104 const std::string& source_format, 105 const std::string& source_format,
105 const std::string& mount_label, 106 const std::string& mount_label,
106 MountAccessMode access_mode, 107 MountAccessMode access_mode,
108 RemountOption remount,
107 const base::Closure& callback, 109 const base::Closure& callback,
108 const base::Closure& error_callback) override { 110 const base::Closure& error_callback) override {
109 dbus::MethodCall method_call(cros_disks::kCrosDisksInterface, 111 dbus::MethodCall method_call(cros_disks::kCrosDisksInterface,
110 cros_disks::kMount); 112 cros_disks::kMount);
111 dbus::MessageWriter writer(&method_call); 113 dbus::MessageWriter writer(&method_call);
112 writer.AppendString(source_path); 114 writer.AppendString(source_path);
113 writer.AppendString(source_format); 115 writer.AppendString(source_format);
114 std::vector<std::string> mount_options = 116 std::vector<std::string> mount_options =
115 ComposeMountOptions(mount_label, access_mode); 117 ComposeMountOptions(mount_label, access_mode, remount);
116 writer.AppendArrayOfStrings(mount_options); 118 writer.AppendArrayOfStrings(mount_options);
117 proxy_->CallMethod(&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, 119 proxy_->CallMethod(&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
118 base::Bind(&CrosDisksClientImpl::OnMount, 120 base::Bind(&CrosDisksClientImpl::OnMount,
119 weak_ptr_factory_.GetWeakPtr(), 121 weak_ptr_factory_.GetWeakPtr(),
120 callback, 122 callback,
121 error_callback)); 123 error_callback));
122 } 124 }
123 125
124 // CrosDisksClient override. 126 // CrosDisksClient override.
125 void Unmount(const std::string& device_path, 127 void Unmount(const std::string& device_path,
(...skipping 522 matching lines...) Expand 10 before | Expand all | Expand 10 after
648 // static 650 // static
649 base::FilePath CrosDisksClient::GetRemovableDiskMountPoint() { 651 base::FilePath CrosDisksClient::GetRemovableDiskMountPoint() {
650 return base::FilePath(base::SysInfo::IsRunningOnChromeOS() ? 652 return base::FilePath(base::SysInfo::IsRunningOnChromeOS() ?
651 FILE_PATH_LITERAL("/media/removable") : 653 FILE_PATH_LITERAL("/media/removable") :
652 FILE_PATH_LITERAL("/tmp/chromeos/media/removable")); 654 FILE_PATH_LITERAL("/tmp/chromeos/media/removable"));
653 } 655 }
654 656
655 // static 657 // static
656 std::vector<std::string> CrosDisksClient::ComposeMountOptions( 658 std::vector<std::string> CrosDisksClient::ComposeMountOptions(
657 const std::string& mount_label, 659 const std::string& mount_label,
658 MountAccessMode access_mode) { 660 MountAccessMode access_mode,
661 RemountOption remount) {
659 std::vector<std::string> mount_options( 662 std::vector<std::string> mount_options(
660 kDefaultMountOptions, 663 kDefaultMountOptions,
661 kDefaultMountOptions + arraysize(kDefaultMountOptions)); 664 kDefaultMountOptions + arraysize(kDefaultMountOptions));
662 switch (access_mode) { 665 switch (access_mode) {
663 case MOUNT_ACCESS_MODE_READ_ONLY: 666 case MOUNT_ACCESS_MODE_READ_ONLY:
664 mount_options.push_back(kReadOnlyOption); 667 mount_options.push_back(kReadOnlyOption);
665 break; 668 break;
666 case MOUNT_ACCESS_MODE_READ_WRITE: 669 case MOUNT_ACCESS_MODE_READ_WRITE:
667 mount_options.push_back(kReadWriteOption); 670 mount_options.push_back(kReadWriteOption);
668 break; 671 break;
669 } 672 }
673 if (remount == REMOUNT_OPTION_REMOUNT_EXISTING_DEVICE) {
674 mount_options.push_back(kRemountOption);
675 }
670 676
671 if (!mount_label.empty()) { 677 if (!mount_label.empty()) {
672 std::string mount_label_option = 678 std::string mount_label_option =
673 base::StringPrintf("%s=%s", kMountLabelOption, mount_label.c_str()); 679 base::StringPrintf("%s=%s", kMountLabelOption, mount_label.c_str());
674 mount_options.push_back(mount_label_option); 680 mount_options.push_back(mount_label_option);
675 } 681 }
676 return mount_options; 682 return mount_options;
677 } 683 }
678 684
679 } // namespace chromeos 685 } // namespace chromeos
OLDNEW
« no previous file with comments | « chromeos/dbus/cros_disks_client.h ('k') | chromeos/dbus/cros_disks_client_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698