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)#ifndef CHROME_BROWSER_MEDIA_GALLERIES_MEDIA_GALLERIES_TEST_UTIL_H_ 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CHROME_BROWSER_MEDIA_GALLERIES_MEDIA_GALLERIES_TEST_UTIL_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include <string> 95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include <vector> 105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/basictypes.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/files/scoped_temp_dir.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/memory/ref_counted.h" 14eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/memory/scoped_ptr.h" 15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/test/scoped_path_override.h" 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#if defined(OS_WIN) 184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "base/test/test_reg_util_win.h" 194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#endif 204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace extensions { 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class Extension; 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)namespace registry_util { 264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)class RegistryOverrideManager; 274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class Profile; 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 318bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#if defined(OS_MACOSX) 328bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)class MockPreferences; 338bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#endif 348bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)scoped_refptr<extensions::Extension> AddMediaGalleriesApp( 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& name, 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::vector<std::string>& media_galleries_permissions, 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Profile* profile); 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class EnsureMediaDirectoriesExists { 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EnsureMediaDirectoriesExists(); 43eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ~EnsureMediaDirectoriesExists(); 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int num_galleries() const { return num_galleries_; } 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 474e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) base::FilePath GetFakeAppDataPath() const; 485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Changes the directories for the media paths (music, pictures, videos) 505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // overrides to new, different directories that are generated. 515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) void ChangeMediaPathOverrides(); 524e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#if defined(OS_WIN) 534e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) base::FilePath GetFakeLocalAppDataPath() const; 544e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#endif 554e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#if defined(OS_WIN) || defined(OS_MACOSX) 561e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) void SetCustomPicasaAppDataPath(const base::FilePath& path); 574e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) base::FilePath GetFakePicasaFoldersRootPath() const; 584e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#endif 594e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if defined(OS_MACOSX) 615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::FilePath GetFakeITunesRootPath() const; 625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::FilePath GetFakeIPhotoRootPath() const; 635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif 645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void Init(); 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::ScopedTempDir fake_dir_; 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int num_galleries_; 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) int times_overrides_changed_; 735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 744e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) scoped_ptr<base::ScopedPathOverride> app_data_override_; 75eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch scoped_ptr<base::ScopedPathOverride> music_override_; 76eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch scoped_ptr<base::ScopedPathOverride> pictures_override_; 77eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch scoped_ptr<base::ScopedPathOverride> video_override_; 784e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#if defined(OS_WIN) 794e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) scoped_ptr<base::ScopedPathOverride> local_app_data_override_; 804e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 814e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) registry_util::RegistryOverrideManager registry_override_; 824e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#endif 838bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#if defined(OS_MACOSX) 848bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) scoped_ptr<MockPreferences> mac_preferences_; 858bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#endif 86eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(EnsureMediaDirectoriesExists); 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)extern base::FilePath MakeMediaGalleriesTestingPath(const std::string& dir); 915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // CHROME_BROWSER_MEDIA_GALLERIES_MEDIA_GALLERIES_TEST_UTIL_H_ 93