12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/media_galleries/media_galleries_test_util.h" 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 74e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#if defined(OS_WIN) 84e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include <windows.h> 94e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#endif 104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/base_paths.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/files/file_path.h" 131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/files/file_util.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/path_service.h" 155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/strings/string_number_conversions.h" 16868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/stringprintf.h" 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/extensions/extension_service.h" 184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "chrome/browser/media_galleries/fileapi/picasa_finder.h" 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/profiles/profile.h" 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/common/chrome_paths.h" 2103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "components/crx_file/id_util.h" 225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "extensions/browser/extension_prefs.h" 235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "extensions/browser/extension_system.h" 243551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "extensions/common/manifest_constants.h" 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 278bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#if defined(OS_MACOSX) 288bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#include "base/mac/foundation_util.h" 298bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#include "base/strings/sys_string_conversions.h" 308bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#include "chrome/browser/media_galleries/fileapi/iapps_finder_impl.h" 31a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "components/policy/core/common/preferences_mock_mac.h" 328bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#endif // OS_MACOSX 338bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#if defined(OS_WIN) 354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "base/test/test_reg_util_win.h" 364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "base/win/registry.h" 378bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#endif // OS_WIN 384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)scoped_refptr<extensions::Extension> AddMediaGalleriesApp( 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& name, 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::vector<std::string>& media_galleries_permissions, 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Profile* profile) { 435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) scoped_ptr<base::DictionaryValue> manifest(new base::DictionaryValue); 443551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) manifest->SetString(extensions::manifest_keys::kName, name); 453551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) manifest->SetString(extensions::manifest_keys::kVersion, "0.1"); 463551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) manifest->SetInteger(extensions::manifest_keys::kManifestVersion, 2); 475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::ListValue* background_script_list = new base::ListValue; 485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) background_script_list->Append(new base::StringValue("background.js")); 493551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) manifest->Set(extensions::manifest_keys::kPlatformAppBackgroundScripts, 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) background_script_list); 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::ListValue* permission_detail_list = new base::ListValue; 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (size_t i = 0; i < media_galleries_permissions.size(); i++) 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) permission_detail_list->Append( 555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) new base::StringValue(media_galleries_permissions[i])); 565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::DictionaryValue* media_galleries_permission = 575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) new base::DictionaryValue(); 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) media_galleries_permission->Set("mediaGalleries", permission_detail_list); 595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::ListValue* permission_list = new base::ListValue; 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) permission_list->Append(media_galleries_permission); 613551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) manifest->Set(extensions::manifest_keys::kPermissions, permission_list); 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 6390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) extensions::ExtensionPrefs* extension_prefs = 6490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) extensions::ExtensionPrefs::Get(profile); 6590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) base::FilePath path = extension_prefs->install_directory().AppendASCII(name); 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string errors; 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_refptr<extensions::Extension> extension = 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) extensions::Extension::Create(path, extensions::Manifest::INTERNAL, 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *manifest.get(), 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) extensions::Extension::NO_FLAGS, &errors); 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(extension.get() != NULL) << errors; 7203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) EXPECT_TRUE(crx_file::id_util::IdIsValid(extension->id())); 7303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) if (!extension.get() || !crx_file::id_util::IdIsValid(extension->id())) 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return NULL; 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 7690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) extension_prefs->OnExtensionInstalled( 77a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) extension.get(), 78a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) extensions::Extension::ENABLED, 79effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch syncer::StringOrdinal::CreateInitialOrdinal(), 80effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch std::string()); 8190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ExtensionService* extension_service = 8290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) extensions::ExtensionSystem::Get(profile)->extension_service(); 83868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) extension_service->AddExtension(extension.get()); 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) extension_service->EnableExtension(extension->id()); 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return extension; 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)EnsureMediaDirectoriesExists::EnsureMediaDirectoriesExists() 905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) : num_galleries_(0), times_overrides_changed_(0) { 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Init(); 922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 94eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochEnsureMediaDirectoriesExists::~EnsureMediaDirectoriesExists() { 951e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#if defined(OS_MACOSX) 961e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) iapps::SetMacPreferencesForTesting(NULL); 971e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) picasa::SetMacPreferencesForTesting(NULL); 981e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#endif // OS_MACOSX 99eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 100eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 1015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void EnsureMediaDirectoriesExists::ChangeMediaPathOverrides() { 1025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Each pointer must be reset an extra time so as to destroy the existing 1035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // override prior to creating a new one. This is because the PathService, 1045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // which supports these overrides, only allows one override to exist per path 1055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // in its internal bookkeeping; attempting to add a second override invokes 1065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // a CHECK crash. 1075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) music_override_.reset(); 1085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) std::string music_path_string("music"); 1095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) music_path_string.append(base::IntToString(times_overrides_changed_)); 1105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) music_override_.reset(new base::ScopedPathOverride( 1115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) chrome::DIR_USER_MUSIC, 1125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) fake_dir_.path().AppendASCII(music_path_string))); 1135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) pictures_override_.reset(); 1155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) std::string pictures_path_string("pictures"); 1165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) pictures_path_string.append(base::IntToString(times_overrides_changed_)); 1175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) pictures_override_.reset(new base::ScopedPathOverride( 1185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) chrome::DIR_USER_PICTURES, 1195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) fake_dir_.path().AppendASCII(pictures_path_string))); 1205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) video_override_.reset(); 1225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) std::string videos_path_string("videos"); 1235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) videos_path_string.append(base::IntToString(times_overrides_changed_)); 1245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) video_override_.reset(new base::ScopedPathOverride( 1255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) chrome::DIR_USER_VIDEOS, 1265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) fake_dir_.path().AppendASCII(videos_path_string))); 1275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) times_overrides_changed_++; 1295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) num_galleries_ = 3; 1315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 1325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)base::FilePath EnsureMediaDirectoriesExists::GetFakeAppDataPath() const { 1344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) DCHECK(fake_dir_.IsValid()); 1354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return fake_dir_.path().AppendASCII("appdata"); 1364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 1374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#if defined(OS_WIN) 1394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)base::FilePath EnsureMediaDirectoriesExists::GetFakeLocalAppDataPath() const { 1404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) DCHECK(fake_dir_.IsValid()); 1414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return fake_dir_.path().AppendASCII("localappdata"); 1424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 1434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1441e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)void EnsureMediaDirectoriesExists::SetCustomPicasaAppDataPath( 1454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) const base::FilePath& path) { 1464e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) base::win::RegKey key(HKEY_CURRENT_USER, picasa::kPicasaRegistryPath, 1474e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) KEY_SET_VALUE); 1481e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) key.WriteValue(picasa::kPicasaRegistryAppDataPathKey, path.value().c_str()); 1494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 1508bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#endif // OS_WIN 1514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1521e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#if defined(OS_MACOSX) 1531e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)void EnsureMediaDirectoriesExists::SetCustomPicasaAppDataPath( 1541e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) const base::FilePath& path) { 1551e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) mac_preferences_->AddTestItem( 1561e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) base::mac::NSToCFCast(picasa::kPicasaAppDataPathMacPreferencesKey), 1571e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) base::SysUTF8ToNSString(path.value()), 1581e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) false); 1591e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)} 1605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif // OS_MACOSX 1611e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 1624e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#if defined(OS_WIN) || defined(OS_MACOSX) 1634e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)base::FilePath 1644e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)EnsureMediaDirectoriesExists::GetFakePicasaFoldersRootPath() const { 1654e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) DCHECK(fake_dir_.IsValid()); 1664e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return fake_dir_.path().AppendASCII("picasa_folders"); 1674e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 1688bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#endif // OS_WIN || OS_MACOSX 1694e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if defined(OS_MACOSX) 1715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)base::FilePath EnsureMediaDirectoriesExists::GetFakeITunesRootPath() const { 1725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) DCHECK(fake_dir_.IsValid()); 1735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return fake_dir_.path().AppendASCII("itunes"); 1745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 1755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)base::FilePath EnsureMediaDirectoriesExists::GetFakeIPhotoRootPath() const { 1775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) DCHECK(fake_dir_.IsValid()); 1785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return fake_dir_.path().AppendASCII("iphoto"); 1795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 1805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif // OS_MACOSX 1815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void EnsureMediaDirectoriesExists::Init() { 1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(OS_CHROMEOS) || defined(OS_ANDROID) 1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return; 1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#else 1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 187eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_TRUE(fake_dir_.CreateUniqueTempDir()); 1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 189eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#if defined(OS_WIN) || defined(OS_MACOSX) 1908bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // This is to control whether or not tests think iTunes (on Windows) and 1918bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // Picasa are installed. 1924e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) app_data_override_.reset(new base::ScopedPathOverride( 1934e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) base::DIR_APP_DATA, GetFakeAppDataPath())); 1948bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#endif // OS_WIN || OS_MACOSX 1958bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 1964e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#if defined(OS_WIN) 1974e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Picasa on Windows is by default in the DIR_LOCAL_APP_DATA directory. 1984e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) local_app_data_override_.reset(new base::ScopedPathOverride( 1994e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) base::DIR_LOCAL_APP_DATA, GetFakeLocalAppDataPath())); 2004e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Picasa also looks in the registry for an alternate path. 2011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci registry_override_.OverrideRegistry(HKEY_CURRENT_USER); 2028bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#endif // OS_WIN 2038bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 2048bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#if defined(OS_MACOSX) 2058bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) mac_preferences_.reset(new MockPreferences); 2068bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 2078bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // iTunes override. 2085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::FilePath itunes_xml = 2095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GetFakeITunesRootPath().AppendASCII("iTunes Library.xml"); 2108bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) mac_preferences_->AddTestItem( 2118bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) base::mac::NSToCFCast(iapps::kITunesRecentDatabasePathsKey), 2125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::mac::NSToCFCast(iapps::NSArrayFromFilePath(itunes_xml)), 2138bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) false); 2148bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 2158bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // iPhoto override. 2165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::FilePath iphoto_xml = 2175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GetFakeIPhotoRootPath().AppendASCII("AlbumData.xml"); 2188bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) mac_preferences_->AddTestItem( 2198bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) base::mac::NSToCFCast(iapps::kIPhotoRecentDatabasesKey), 2205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::mac::NSToCFCast(iapps::NSArrayFromFilePath(iphoto_xml)), 2218bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) false); 2225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) iapps::SetMacPreferencesForTesting(mac_preferences_.get()); 2245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) picasa::SetMacPreferencesForTesting(mac_preferences_.get()); 2255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif // OS_MACOSX 2262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ChangeMediaPathOverrides(); 2288bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#endif // OS_CHROMEOS || OS_ANDROID 2292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)base::FilePath MakeMediaGalleriesTestingPath(const std::string& dir) { 2325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if defined(OS_WIN) 2335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return base::FilePath(FILE_PATH_LITERAL("C:\\")).AppendASCII(dir); 2345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#elif defined(OS_POSIX) 2355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return base::FilePath(FILE_PATH_LITERAL("/")).Append(dir); 2365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#else 2375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) NOTREACHED(); 2385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif 2395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 240