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

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

Issue 10231010: gdata: Apply correct mount label when mounting archives in GData (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: rebase Created 8 years, 7 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/mock_cros_disks_client.h » ('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 "base/bind.h" 7 #include "base/bind.h"
8 #include "base/stl_util.h" 8 #include "base/stl_util.h"
9 #include "base/stringprintf.h"
9 #include "dbus/bus.h" 10 #include "dbus/bus.h"
10 #include "dbus/message.h" 11 #include "dbus/message.h"
11 #include "dbus/object_path.h" 12 #include "dbus/object_path.h"
12 #include "dbus/object_proxy.h" 13 #include "dbus/object_proxy.h"
13 #include "third_party/cros_system_api/dbus/service_constants.h" 14 #include "third_party/cros_system_api/dbus/service_constants.h"
14 15
15 namespace chromeos { 16 namespace chromeos {
16 17
17 namespace { 18 namespace {
18 19
19 const char* kDefaultMountOptions[] = { 20 const char* kDefaultMountOptions[] = {
20 "rw", 21 "rw",
21 "nodev", 22 "nodev",
22 "noexec", 23 "noexec",
23 "nosuid", 24 "nosuid",
24 }; 25 };
25 26
26 const char* kDefaultUnmountOptions[] = { 27 const char* kDefaultUnmountOptions[] = {
27 "force", 28 "force",
28 }; 29 };
29 30
31 const char kMountLabelOption[] = "mountlabel";
32
30 // Checks if retrieved media type is in boundaries of DeviceMediaType. 33 // Checks if retrieved media type is in boundaries of DeviceMediaType.
31 bool IsValidMediaType(uint32 type) { 34 bool IsValidMediaType(uint32 type) {
32 return type < static_cast<uint32>(cros_disks::DEVICE_MEDIA_NUM_VALUES); 35 return type < static_cast<uint32>(cros_disks::DEVICE_MEDIA_NUM_VALUES);
33 } 36 }
34 37
35 38
36 // Translates enum used in cros-disks to enum used in Chrome. 39 // Translates enum used in cros-disks to enum used in Chrome.
37 // Note that we could just do static_cast, but this is less sensitive to 40 // Note that we could just do static_cast, but this is less sensitive to
38 // changes in cros-disks. 41 // changes in cros-disks.
39 DeviceType DeviceMediaTypeToDeviceType(uint32 media_type_uint32) { 42 DeviceType DeviceMediaTypeToDeviceType(uint32 media_type_uint32) {
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 explicit CrosDisksClientImpl(dbus::Bus* bus) 110 explicit CrosDisksClientImpl(dbus::Bus* bus)
108 : proxy_(bus->GetObjectProxy( 111 : proxy_(bus->GetObjectProxy(
109 cros_disks::kCrosDisksServiceName, 112 cros_disks::kCrosDisksServiceName,
110 dbus::ObjectPath(cros_disks::kCrosDisksServicePath))), 113 dbus::ObjectPath(cros_disks::kCrosDisksServicePath))),
111 weak_ptr_factory_(this) { 114 weak_ptr_factory_(this) {
112 } 115 }
113 116
114 // CrosDisksClient override. 117 // CrosDisksClient override.
115 virtual void Mount(const std::string& source_path, 118 virtual void Mount(const std::string& source_path,
116 const std::string& source_format, 119 const std::string& source_format,
120 const std::string& mount_label,
117 MountType type, 121 MountType type,
118 const MountCallback& callback, 122 const MountCallback& callback,
119 const ErrorCallback& error_callback) OVERRIDE { 123 const ErrorCallback& error_callback) OVERRIDE {
120 dbus::MethodCall method_call(cros_disks::kCrosDisksInterface, 124 dbus::MethodCall method_call(cros_disks::kCrosDisksInterface,
121 cros_disks::kMount); 125 cros_disks::kMount);
122 dbus::MessageWriter writer(&method_call); 126 dbus::MessageWriter writer(&method_call);
123 writer.AppendString(source_path); 127 writer.AppendString(source_path);
124 writer.AppendString(source_format); 128 writer.AppendString(source_format);
125 std::vector<std::string> mount_options(kDefaultMountOptions, 129 std::vector<std::string> mount_options(kDefaultMountOptions,
126 kDefaultMountOptions + 130 kDefaultMountOptions +
127 arraysize(kDefaultMountOptions)); 131 arraysize(kDefaultMountOptions));
132 if (!mount_label.empty()) {
133 std::string mount_label_option = base::StringPrintf("%s=%s",
134 kMountLabelOption,
135 mount_label.c_str());
136 mount_options.push_back(mount_label_option);
137 }
128 writer.AppendArrayOfStrings(mount_options); 138 writer.AppendArrayOfStrings(mount_options);
129 proxy_->CallMethod(&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, 139 proxy_->CallMethod(&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
130 base::Bind(&CrosDisksClientImpl::OnMount, 140 base::Bind(&CrosDisksClientImpl::OnMount,
131 weak_ptr_factory_.GetWeakPtr(), 141 weak_ptr_factory_.GetWeakPtr(),
132 callback, 142 callback,
133 error_callback)); 143 error_callback));
134 } 144 }
135 145
136 // CrosDisksClient override. 146 // CrosDisksClient override.
137 virtual void Unmount(const std::string& device_path, 147 virtual void Unmount(const std::string& device_path,
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
370 }; 380 };
371 381
372 // A stub implementaion of CrosDisksClient. 382 // A stub implementaion of CrosDisksClient.
373 class CrosDisksClientStubImpl : public CrosDisksClient { 383 class CrosDisksClientStubImpl : public CrosDisksClient {
374 public: 384 public:
375 CrosDisksClientStubImpl() {} 385 CrosDisksClientStubImpl() {}
376 virtual ~CrosDisksClientStubImpl() {} 386 virtual ~CrosDisksClientStubImpl() {}
377 387
378 virtual void Mount(const std::string& source_path, 388 virtual void Mount(const std::string& source_path,
379 const std::string& source_format, 389 const std::string& source_format,
390 const std::string& mount_label,
380 MountType type, 391 MountType type,
381 const MountCallback& callback, 392 const MountCallback& callback,
382 const ErrorCallback& error_callback) OVERRIDE {} 393 const ErrorCallback& error_callback) OVERRIDE {}
383 virtual void Unmount(const std::string& device_path, 394 virtual void Unmount(const std::string& device_path,
384 const UnmountCallback& callback, 395 const UnmountCallback& callback,
385 const ErrorCallback& error_callback) OVERRIDE {} 396 const ErrorCallback& error_callback) OVERRIDE {}
386 virtual void EnumerateAutoMountableDevices( 397 virtual void EnumerateAutoMountableDevices(
387 const EnumerateAutoMountableDevicesCallback& callback, 398 const EnumerateAutoMountableDevicesCallback& callback,
388 const ErrorCallback& error_callback) OVERRIDE {} 399 const ErrorCallback& error_callback) OVERRIDE {}
389 virtual void FormatDevice(const std::string& device_path, 400 virtual void FormatDevice(const std::string& device_path,
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
561 // static 572 // static
562 CrosDisksClient* CrosDisksClient::Create(DBusClientImplementationType type, 573 CrosDisksClient* CrosDisksClient::Create(DBusClientImplementationType type,
563 dbus::Bus* bus) { 574 dbus::Bus* bus) {
564 if (type == REAL_DBUS_CLIENT_IMPLEMENTATION) 575 if (type == REAL_DBUS_CLIENT_IMPLEMENTATION)
565 return new CrosDisksClientImpl(bus); 576 return new CrosDisksClientImpl(bus);
566 DCHECK_EQ(STUB_DBUS_CLIENT_IMPLEMENTATION, type); 577 DCHECK_EQ(STUB_DBUS_CLIENT_IMPLEMENTATION, type);
567 return new CrosDisksClientStubImpl(); 578 return new CrosDisksClientStubImpl();
568 } 579 }
569 580
570 } // namespace chromeos 581 } // namespace chromeos
OLDNEW
« no previous file with comments | « chromeos/dbus/cros_disks_client.h ('k') | chromeos/dbus/mock_cros_disks_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698