Add a webstorePrivate API to show a permission prompt for delegated bundle installs
[chromium-blink-merge.git] / chrome / browser / extensions / test_extension_dir.cc
blob14431f54b957b35c9845b517d10d22f8f6b56597
1 // Copyright 2013 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.
5 #include "chrome/browser/extensions/test_extension_dir.h"
7 #include "base/files/file_util.h"
8 #include "base/json/json_writer.h"
9 #include "base/numerics/safe_conversions.h"
10 #include "base/test/values_test_util.h"
11 #include "chrome/browser/extensions/extension_creator.h"
12 #include "testing/gtest/include/gtest/gtest.h"
14 namespace extensions {
16 TestExtensionDir::TestExtensionDir() {
17 EXPECT_TRUE(dir_.CreateUniqueTempDir());
18 EXPECT_TRUE(crx_dir_.CreateUniqueTempDir());
21 TestExtensionDir::~TestExtensionDir() {
24 void TestExtensionDir::WriteManifest(base::StringPiece manifest) {
25 // TODO(kalman): Write some more convenient way to specify a manifest than
26 // via JSON, which requires awkwardly escaping all quotes. E.g. add a feature
27 // to JSONReader that can parse '' literals rather than "".
28 WriteFile(FILE_PATH_LITERAL("manifest.json"), manifest);
31 void TestExtensionDir::WriteFile(const base::FilePath::StringType& filename,
32 base::StringPiece contents) {
33 EXPECT_EQ(
34 base::checked_cast<int>(contents.size()),
35 base::WriteFile(
36 dir_.path().Append(filename), contents.data(), contents.size()));
39 // This function packs the extension into a .crx, and returns the path to that
40 // .crx. Multiple calls to Pack() will produce extensions with the same ID.
41 base::FilePath TestExtensionDir::Pack() {
42 ExtensionCreator creator;
43 base::FilePath crx_path =
44 crx_dir_.path().Append(FILE_PATH_LITERAL("ext.crx"));
45 base::FilePath pem_path =
46 crx_dir_.path().Append(FILE_PATH_LITERAL("ext.pem"));
47 base::FilePath pem_in_path, pem_out_path;
48 if (base::PathExists(pem_path))
49 pem_in_path = pem_path;
50 else
51 pem_out_path = pem_path;
52 if (!creator.Run(dir_.path(),
53 crx_path,
54 pem_in_path,
55 pem_out_path,
56 ExtensionCreator::kOverwriteCRX)) {
57 ADD_FAILURE()
58 << "ExtensionCreator::Run() failed: " << creator.error_message();
59 return base::FilePath();
61 if (!base::PathExists(crx_path)) {
62 ADD_FAILURE() << crx_path.value() << " was not created.";
63 return base::FilePath();
65 return crx_path;
68 } // namespace extensions