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