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#import "chrome/browser/ui/cocoa/extensions/extension_install_prompt_test_utils.h" 6 7#include "base/file_util.h" 8#include "base/files/file_path.h" 9#include "base/json/json_file_value_serializer.h" 10#include "base/path_service.h" 11#include "chrome/common/chrome_paths.h" 12#include "extensions/common/extension.h" 13 14using extensions::Extension; 15 16namespace chrome { 17 18void MockExtensionInstallPromptDelegate::InstallUIProceed() { 19 ++proceed_count_; 20} 21 22void MockExtensionInstallPromptDelegate::InstallUIAbort(bool user_initiated) { 23 ++abort_count_; 24} 25 26scoped_refptr<extensions::Extension> LoadInstallPromptExtension( 27 const char* extension_dir_name, 28 const char* manifest_file) { 29 scoped_refptr<Extension> extension; 30 31 base::FilePath path; 32 PathService::Get(chrome::DIR_TEST_DATA, &path); 33 path = path.AppendASCII("extensions") 34 .AppendASCII(extension_dir_name) 35 .AppendASCII(manifest_file); 36 37 std::string error; 38 JSONFileValueSerializer serializer(path); 39 scoped_ptr<base::DictionaryValue> value(static_cast<base::DictionaryValue*>( 40 serializer.Deserialize(NULL, &error))); 41 if (!value.get()) { 42 LOG(ERROR) << error; 43 return extension; 44 } 45 46 extension = Extension::Create( 47 path.DirName(), extensions::Manifest::INVALID_LOCATION, *value, 48 Extension::NO_FLAGS, &error); 49 if (!extension.get()) 50 LOG(ERROR) << error; 51 52 return extension; 53} 54 55scoped_refptr<Extension> LoadInstallPromptExtension() { 56 return LoadInstallPromptExtension("install_prompt", "extension.json"); 57} 58 59gfx::Image LoadInstallPromptIcon() { 60 base::FilePath path; 61 PathService::Get(chrome::DIR_TEST_DATA, &path); 62 path = path.AppendASCII("extensions") 63 .AppendASCII("install_prompt") 64 .AppendASCII("icon.png"); 65 66 std::string file_contents; 67 base::ReadFileToString(path, &file_contents); 68 69 return gfx::Image::CreateFrom1xPNGBytes( 70 reinterpret_cast<const unsigned char*>(file_contents.c_str()), 71 file_contents.length()); 72} 73 74scoped_refptr<ExtensionInstallPrompt::Prompt> BuildExtensionInstallPrompt( 75 Extension* extension) { 76 scoped_refptr<ExtensionInstallPrompt::Prompt> prompt = 77 new ExtensionInstallPrompt::Prompt( 78 ExtensionInstallPrompt::INSTALL_PROMPT); 79 prompt->set_extension(extension); 80 prompt->set_icon(LoadInstallPromptIcon()); 81 return prompt; 82} 83 84scoped_refptr<ExtensionInstallPrompt::Prompt> 85BuildExtensionPostInstallPermissionsPrompt(Extension* extension) { 86 scoped_refptr<ExtensionInstallPrompt::Prompt> prompt = 87 new ExtensionInstallPrompt::Prompt( 88 ExtensionInstallPrompt::POST_INSTALL_PERMISSIONS_PROMPT); 89 prompt->set_extension(extension); 90 prompt->set_icon(LoadInstallPromptIcon()); 91 return prompt; 92} 93 94} // namespace chrome 95