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)
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/basictypes.h"
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/files/scoped_temp_dir.h"
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/memory/ref_counted.h"
11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/memory/scoped_ptr.h"
12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/test/scoped_path_override.h"
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#if defined(OS_WIN)
154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "base/test/test_reg_util_win.h"
164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#endif
174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace extensions {
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class Extension;
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)namespace registry_util {
234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)class RegistryOverrideManager;
244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class Profile;
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
288bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#if defined(OS_MACOSX)
298bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)class MockPreferences;
308bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#endif
318bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)scoped_refptr<extensions::Extension> AddMediaGalleriesApp(
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const std::string& name,
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const std::vector<std::string>& media_galleries_permissions,
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    Profile* profile);
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class EnsureMediaDirectoriesExists {
382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public:
392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EnsureMediaDirectoriesExists();
40eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  ~EnsureMediaDirectoriesExists();
412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int num_galleries() const { return num_galleries_; }
432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  base::FilePath GetFakeAppDataPath() const;
454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#if defined(OS_WIN)
464e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  base::FilePath GetFakeLocalAppDataPath() const;
474e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#endif
484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#if defined(OS_WIN) || defined(OS_MACOSX)
491e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  void SetCustomPicasaAppDataPath(const base::FilePath& path);
504e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  base::FilePath GetFakePicasaFoldersRootPath() const;
514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#endif
524e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private:
542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void Init();
552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  base::ScopedTempDir fake_dir_;
572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int num_galleries_;
592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
604e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  scoped_ptr<base::ScopedPathOverride> app_data_override_;
61eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  scoped_ptr<base::ScopedPathOverride> music_override_;
62eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  scoped_ptr<base::ScopedPathOverride> pictures_override_;
63eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  scoped_ptr<base::ScopedPathOverride> video_override_;
644e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#if defined(OS_WIN)
654e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  scoped_ptr<base::ScopedPathOverride> local_app_data_override_;
664e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
674e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  registry_util::RegistryOverrideManager registry_override_;
684e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#endif
698bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#if defined(OS_MACOSX)
708bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  scoped_ptr<MockPreferences> mac_preferences_;
718bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#endif
72eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(EnsureMediaDirectoriesExists);
742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)};
752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif  // CHROME_BROWSER_MEDIA_GALLERIES_MEDIA_GALLERIES_TEST_UTIL_H_
77