Home | History | Annotate | Download | only in media_galleries
      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
      3 // found in the LICENSE file.
      4 
      5 #include "chrome/browser/media_galleries/media_galleries_test_util.h"
      6 
      7 #include "base/base_paths.h"
      8 #include "base/file_util.h"
      9 #include "base/files/file_path.h"
     10 #include "base/path_service.h"
     11 #include "base/strings/stringprintf.h"
     12 #include "chrome/browser/extensions/extension_prefs.h"
     13 #include "chrome/browser/extensions/extension_service.h"
     14 #include "chrome/browser/extensions/extension_system.h"
     15 #include "chrome/browser/profiles/profile.h"
     16 #include "chrome/common/chrome_paths.h"
     17 #include "chrome/common/extensions/extension.h"
     18 #include "chrome/common/extensions/extension_manifest_constants.h"
     19 #include "testing/gtest/include/gtest/gtest.h"
     20 
     21 namespace chrome {
     22 
     23 scoped_refptr<extensions::Extension> AddMediaGalleriesApp(
     24     const std::string& name,
     25     const std::vector<std::string>& media_galleries_permissions,
     26     Profile* profile) {
     27   scoped_ptr<DictionaryValue> manifest(new DictionaryValue);
     28   manifest->SetString(extension_manifest_keys::kName, name);
     29   manifest->SetString(extension_manifest_keys::kVersion, "0.1");
     30   manifest->SetInteger(extension_manifest_keys::kManifestVersion, 2);
     31   ListValue* background_script_list = new ListValue;
     32   background_script_list->Append(Value::CreateStringValue("background.js"));
     33   manifest->Set(extension_manifest_keys::kPlatformAppBackgroundScripts,
     34                 background_script_list);
     35 
     36   ListValue* permission_detail_list = new ListValue;
     37   for (size_t i = 0; i < media_galleries_permissions.size(); i++)
     38     permission_detail_list->Append(
     39         Value::CreateStringValue(media_galleries_permissions[i]));
     40   DictionaryValue* media_galleries_permission = new DictionaryValue();
     41   media_galleries_permission->Set("mediaGalleries", permission_detail_list);
     42   ListValue* permission_list = new ListValue;
     43   permission_list->Append(media_galleries_permission);
     44   manifest->Set(extension_manifest_keys::kPermissions, permission_list);
     45 
     46   extensions::ExtensionPrefs* extension_prefs =
     47       extensions::ExtensionPrefs::Get(profile);
     48   base::FilePath path = extension_prefs->install_directory().AppendASCII(name);
     49   std::string errors;
     50   scoped_refptr<extensions::Extension> extension =
     51       extensions::Extension::Create(path, extensions::Manifest::INTERNAL,
     52                                     *manifest.get(),
     53                                     extensions::Extension::NO_FLAGS, &errors);
     54   EXPECT_TRUE(extension.get() != NULL) << errors;
     55   EXPECT_TRUE(extensions::Extension::IdIsValid(extension->id()));
     56   if (!extension.get() || !extensions::Extension::IdIsValid(extension->id()))
     57     return NULL;
     58 
     59   extension_prefs->OnExtensionInstalled(
     60       extension.get(),
     61       extensions::Extension::ENABLED,
     62       extensions::Blacklist::NOT_BLACKLISTED,
     63       syncer::StringOrdinal::CreateInitialOrdinal());
     64   ExtensionService* extension_service =
     65       extensions::ExtensionSystem::Get(profile)->extension_service();
     66   extension_service->AddExtension(extension.get());
     67   extension_service->EnableExtension(extension->id());
     68 
     69   return extension;
     70 }
     71 
     72 EnsureMediaDirectoriesExists::EnsureMediaDirectoriesExists()
     73     : num_galleries_(0) {
     74   Init();
     75 }
     76 
     77 EnsureMediaDirectoriesExists::~EnsureMediaDirectoriesExists() {
     78 }
     79 
     80 void EnsureMediaDirectoriesExists::Init() {
     81 #if defined(OS_CHROMEOS) || defined(OS_ANDROID)
     82   return;
     83 #else
     84 
     85   ASSERT_TRUE(fake_dir_.CreateUniqueTempDir());
     86 
     87 #if defined(OS_WIN) || defined(OS_MACOSX)
     88   // This is to make sure the tests don't think iTunes is installed (unless
     89   // we control it specifically).
     90   appdir_override_.reset(new base::ScopedPathOverride(
     91       base::DIR_APP_DATA, fake_dir_.path().AppendASCII("itunes")));
     92 #endif
     93 
     94   music_override_.reset(new base::ScopedPathOverride(
     95     chrome::DIR_USER_MUSIC, fake_dir_.path().AppendASCII("music")));
     96   pictures_override_.reset(new base::ScopedPathOverride(
     97     chrome::DIR_USER_PICTURES, fake_dir_.path().AppendASCII("pictures")));
     98   video_override_.reset(new base::ScopedPathOverride(
     99     chrome::DIR_USER_VIDEOS, fake_dir_.path().AppendASCII("videos")));
    100   num_galleries_ = 3;
    101 #endif
    102 }
    103 
    104 }  // namespace chrome
    105