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

Side by Side Diff: chrome/browser/media_galleries/media_galleries_preferences.cc

Issue 19489006: Media Galleries: Move gallery name generation back to StorageMonitor. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: rebase Created 7 years, 4 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 | Annotate | Revision Log
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 "chrome/browser/media_galleries/media_galleries_preferences.h" 5 #include "chrome/browser/media_galleries/media_galleries_preferences.h"
6 6
7 #include "base/i18n/time_formatting.h" 7 #include "base/i18n/time_formatting.h"
8 #include "base/path_service.h" 8 #include "base/path_service.h"
9 #include "base/prefs/pref_service.h" 9 #include "base/prefs/pref_service.h"
10 #include "base/stl_util.h" 10 #include "base/stl_util.h"
(...skipping 15 matching lines...) Expand all
26 #include "chrome/browser/storage_monitor/storage_monitor.h" 26 #include "chrome/browser/storage_monitor/storage_monitor.h"
27 #include "chrome/common/chrome_paths.h" 27 #include "chrome/common/chrome_paths.h"
28 #include "chrome/common/extensions/extension.h" 28 #include "chrome/common/extensions/extension.h"
29 #include "chrome/common/extensions/permissions/api_permission.h" 29 #include "chrome/common/extensions/permissions/api_permission.h"
30 #include "chrome/common/extensions/permissions/media_galleries_permission.h" 30 #include "chrome/common/extensions/permissions/media_galleries_permission.h"
31 #include "chrome/common/extensions/permissions/permissions_data.h" 31 #include "chrome/common/extensions/permissions/permissions_data.h"
32 #include "chrome/common/pref_names.h" 32 #include "chrome/common/pref_names.h"
33 #include "components/user_prefs/pref_registry_syncable.h" 33 #include "components/user_prefs/pref_registry_syncable.h"
34 #include "grit/generated_resources.h" 34 #include "grit/generated_resources.h"
35 #include "ui/base/l10n/l10n_util.h" 35 #include "ui/base/l10n/l10n_util.h"
36 #include "ui/base/text/bytes_formatting.h"
37 36
38 using base::DictionaryValue; 37 using base::DictionaryValue;
39 using base::ListValue; 38 using base::ListValue;
40 using extensions::ExtensionPrefs; 39 using extensions::ExtensionPrefs;
41 40
42 namespace chrome { 41 namespace chrome {
43 42
44 namespace { 43 namespace {
45 44
46 // Pref key for the list of media gallery permissions. 45 // Pref key for the list of media gallery permissions.
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 if (dict->GetString(kMediaGalleryIdKey, &string_id) && 213 if (dict->GetString(kMediaGalleryIdKey, &string_id) &&
215 base::StringToUint64(string_id, &out_permission->pref_id) && 214 base::StringToUint64(string_id, &out_permission->pref_id) &&
216 dict->GetBoolean(kMediaGalleryHasPermissionKey, 215 dict->GetBoolean(kMediaGalleryHasPermissionKey,
217 &out_permission->has_permission)) { 216 &out_permission->has_permission)) {
218 return true; 217 return true;
219 } 218 }
220 NOTREACHED(); 219 NOTREACHED();
221 return false; 220 return false;
222 } 221 }
223 222
224 string16 GetDisplayNameForDevice(uint64 storage_size_in_bytes,
225 const string16& name) {
226 DCHECK(!name.empty());
227 return (storage_size_in_bytes == 0) ?
228 name : ui::FormatBytes(storage_size_in_bytes) + ASCIIToUTF16(" ") + name;
229 }
230
231 // For a device with |device_name| and a relative path |sub_folder|, construct 223 // For a device with |device_name| and a relative path |sub_folder|, construct
232 // a display name. If |sub_folder| is empty, then just return |device_name|. 224 // a display name. If |sub_folder| is empty, then just return |device_name|.
233 string16 GetDisplayNameForSubFolder(const string16& device_name, 225 string16 GetDisplayNameForSubFolder(const string16& device_name,
234 const base::FilePath& sub_folder) { 226 const base::FilePath& sub_folder) {
235 if (sub_folder.empty()) 227 if (sub_folder.empty())
236 return device_name; 228 return device_name;
237 return (sub_folder.BaseName().LossyDisplayName() + 229 return (sub_folder.BaseName().LossyDisplayName() +
238 ASCIIToUTF16(" - ") + 230 base::ASCIIToUTF16(" - ") +
239 device_name); 231 device_name);
240 } 232 }
241 233
242 string16 GetFullProductName(const string16& vendor_name,
243 const string16& model_name) {
244 if (vendor_name.empty() && model_name.empty())
245 return string16();
246
247 string16 product_name;
248 if (vendor_name.empty())
249 product_name = model_name;
250 else if (model_name.empty())
251 product_name = vendor_name;
252 else if (!vendor_name.empty() && !model_name.empty())
253 product_name = vendor_name + UTF8ToUTF16(", ") + model_name;
254
255 return product_name;
256 }
257
258 } // namespace 234 } // namespace
259 235
260 MediaGalleryPrefInfo::MediaGalleryPrefInfo() 236 MediaGalleryPrefInfo::MediaGalleryPrefInfo()
261 : pref_id(kInvalidMediaGalleryPrefId), 237 : pref_id(kInvalidMediaGalleryPrefId),
262 type(kInvalidType), 238 type(kInvalidType),
263 total_size_in_bytes(0), 239 total_size_in_bytes(0),
264 volume_metadata_valid(false), 240 volume_metadata_valid(false),
265 prefs_version(0) { 241 prefs_version(0) {
266 } 242 }
267 243
268 MediaGalleryPrefInfo::~MediaGalleryPrefInfo() {} 244 MediaGalleryPrefInfo::~MediaGalleryPrefInfo() {}
269 245
270 base::FilePath MediaGalleryPrefInfo::AbsolutePath() const { 246 base::FilePath MediaGalleryPrefInfo::AbsolutePath() const {
271 base::FilePath base_path = MediaStorageUtil::FindDevicePathById(device_id); 247 base::FilePath base_path = MediaStorageUtil::FindDevicePathById(device_id);
272 DCHECK(!path.IsAbsolute()); 248 DCHECK(!path.IsAbsolute());
273 return base_path.empty() ? base_path : base_path.Append(path); 249 return base_path.empty() ? base_path : base_path.Append(path);
274 } 250 }
275 251
276 string16 MediaGalleryPrefInfo::GetGalleryDisplayName() const { 252 string16 MediaGalleryPrefInfo::GetGalleryDisplayName() const {
277 if (!StorageInfo::IsRemovableDevice(device_id)) { 253 if (!StorageInfo::IsRemovableDevice(device_id)) {
278 // For fixed storage, the name is the directory name, or, in the case 254 // For fixed storage, the name is the directory name, or, in the case
279 // of a root directory, the root directory name. 255 // of a root directory, the root directory name.
280 // TODO(gbillock): Using only the BaseName can lead to ambiguity. The 256 // TODO(gbillock): Using only the BaseName can lead to ambiguity. The
281 // tooltip resolves it. Is that enough? 257 // tooltip resolves it. Is that enough?
282 base::FilePath path = AbsolutePath(); 258 base::FilePath abspath = AbsolutePath();
283 if (!display_name.empty()) 259 if (!display_name.empty())
284 return display_name; 260 return display_name;
285 if (path == path.DirName()) 261 if (abspath == abspath.DirName())
286 return path.LossyDisplayName(); 262 return abspath.LossyDisplayName();
287 return path.BaseName().LossyDisplayName(); 263 return abspath.BaseName().LossyDisplayName();
288 } 264 }
289 265
290 string16 name = display_name; 266 StorageInfo info(device_id,
291 if (name.empty()) 267 MediaStorageUtil::FindDevicePathById(device_id).value(),
292 name = volume_label; 268 volume_label, vendor_name, model_name, total_size_in_bytes);
293 if (name.empty()) 269 base::string16 name = info.GetDisplayNameWithOverride(display_name, true);
294 name = GetFullProductName(vendor_name, model_name); 270 return GetDisplayNameForSubFolder(name, path);
295 if (name.empty())
296 name = l10n_util::GetStringUTF16(IDS_MEDIA_GALLERIES_UNLABELED_DEVICE);
297
298 name = GetDisplayNameForDevice(total_size_in_bytes, name);
299
300 if (!path.empty())
301 name = GetDisplayNameForSubFolder(name, path);
302
303 return name;
304 } 271 }
305 272
306 string16 MediaGalleryPrefInfo::GetGalleryTooltip() const { 273 string16 MediaGalleryPrefInfo::GetGalleryTooltip() const {
307 return AbsolutePath().LossyDisplayName(); 274 return AbsolutePath().LossyDisplayName();
308 } 275 }
309 276
310 string16 MediaGalleryPrefInfo::GetGalleryAdditionalDetails() const { 277 string16 MediaGalleryPrefInfo::GetGalleryAdditionalDetails() const {
311 string16 attached; 278 string16 attached;
312 if (StorageInfo::IsRemovableDevice(device_id)) { 279 if (StorageInfo::IsRemovableDevice(device_id)) {
313 if (MediaStorageUtil::IsRemovableStorageAttached(device_id)) { 280 if (MediaStorageUtil::IsRemovableStorageAttached(device_id)) {
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
374 }; 341 };
375 342
376 for (size_t i = 0; i < arraysize(kDirectoryKeys); ++i) { 343 for (size_t i = 0; i < arraysize(kDirectoryKeys); ++i) {
377 base::FilePath path; 344 base::FilePath path;
378 if (!PathService::Get(kDirectoryKeys[i], &path)) 345 if (!PathService::Get(kDirectoryKeys[i], &path))
379 continue; 346 continue;
380 347
381 base::FilePath relative_path; 348 base::FilePath relative_path;
382 StorageInfo info; 349 StorageInfo info;
383 if (MediaStorageUtil::GetDeviceInfoFromPath(path, &info, &relative_path)) { 350 if (MediaStorageUtil::GetDeviceInfoFromPath(path, &info, &relative_path)) {
384 AddGalleryInternal(info.device_id(), info.name(), relative_path, false, 351 AddGalleryInternal(info.device_id(), base::string16(), relative_path,
385 info.storage_label(), info.vendor_name(), 352 false, info.storage_label(), info.vendor_name(),
386 info.model_name(), info.total_size_in_bytes(), 353 info.model_name(), info.total_size_in_bytes(),
387 base::Time(), true, 2); 354 base::Time(), true, 2);
388 } 355 }
389 } 356 }
390 } 357 }
391 358
392 bool MediaGalleriesPreferences::UpdateDeviceIDForSingletonType( 359 bool MediaGalleriesPreferences::UpdateDeviceIDForSingletonType(
393 const std::string& device_id) { 360 const std::string& device_id) {
394 StorageInfo::Type singleton_type; 361 StorageInfo::Type singleton_type;
395 if (!StorageInfo::CrackDeviceId(device_id, &singleton_type, NULL)) 362 if (!StorageInfo::CrackDeviceId(device_id, &singleton_type, NULL))
(...skipping 547 matching lines...) Expand 10 before | Expand all | Expand 10 after
943 return extension_prefs_for_testing_; 910 return extension_prefs_for_testing_;
944 return extensions::ExtensionPrefs::Get(profile_); 911 return extensions::ExtensionPrefs::Get(profile_);
945 } 912 }
946 913
947 void MediaGalleriesPreferences::SetExtensionPrefsForTesting( 914 void MediaGalleriesPreferences::SetExtensionPrefsForTesting(
948 extensions::ExtensionPrefs* extension_prefs) { 915 extensions::ExtensionPrefs* extension_prefs) {
949 extension_prefs_for_testing_ = extension_prefs; 916 extension_prefs_for_testing_ = extension_prefs;
950 } 917 }
951 918
952 } // namespace chrome 919 } // namespace chrome
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698