summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser')
-rw-r--r--chrome/browser/background_application_list_model_unittest.cc2
-rw-r--r--chrome/browser/extensions/convert_user_script.cc7
-rw-r--r--chrome/browser/extensions/convert_web_app.cc7
-rw-r--r--chrome/browser/extensions/crx_installer.cc6
-rw-r--r--chrome/browser/extensions/extension_context_menu_api.cc5
-rw-r--r--chrome/browser/extensions/extension_creator.cc1
-rw-r--r--chrome/browser/extensions/extension_icon_manager_unittest.cc2
-rw-r--r--chrome/browser/extensions/extension_info_map_unittest.cc5
-rw-r--r--chrome/browser/extensions/extension_prefs.cc18
-rw-r--r--chrome/browser/extensions/extension_prefs_unittest.cc6
-rw-r--r--chrome/browser/extensions/extension_service.cc20
-rw-r--r--chrome/browser/extensions/extension_special_storage_policy_unittest.cc4
-rw-r--r--chrome/browser/extensions/extension_ui_unittest.cc2
-rw-r--r--chrome/browser/extensions/extension_webrequest_api.cc3
-rw-r--r--chrome/browser/extensions/image_loading_tracker_unittest.cc2
-rw-r--r--chrome/browser/extensions/sandboxed_extension_unpacker.cc7
-rw-r--r--chrome/browser/extensions/test_extension_prefs.cc2
-rw-r--r--chrome/browser/extensions/user_script_master.cc3
-rw-r--r--chrome/browser/sync/glue/extension_util_unittest.cc4
-rw-r--r--chrome/browser/sync/glue/theme_util_unittest.cc2
-rw-r--r--chrome/browser/sync/util/extensions_activity_monitor_unittest.cc6
-rw-r--r--chrome/browser/themes/browser_theme_pack_unittest.cc3
-rw-r--r--chrome/browser/ui/cocoa/extensions/extension_install_prompt_controller_unittest.mm2
-rw-r--r--chrome/browser/ui/cocoa/extensions/extension_installed_bubble_controller_unittest.mm2
24 files changed, 84 insertions, 37 deletions
diff --git a/chrome/browser/background_application_list_model_unittest.cc b/chrome/browser/background_application_list_model_unittest.cc
index 27e8514..4f4a249 100644
--- a/chrome/browser/background_application_list_model_unittest.cc
+++ b/chrome/browser/background_application_list_model_unittest.cc
@@ -90,7 +90,7 @@ static scoped_refptr<Extension> CreateExtension(const std::string& name,
std::string error;
scoped_refptr<Extension> extension = Extension::Create(
bogus_file_path().AppendASCII(name), Extension::INVALID, manifest, false,
- &error);
+ true, &error);
// Cannot ASSERT_* here because that attempts an illegitimate return.
// Cannot EXPECT_NE here because that assumes non-pointers unlike EXPECT_EQ
EXPECT_TRUE(extension.get() != NULL) << error;
diff --git a/chrome/browser/extensions/convert_user_script.cc b/chrome/browser/extensions/convert_user_script.cc
index 0b45da8..f0ec459 100644
--- a/chrome/browser/extensions/convert_user_script.cc
+++ b/chrome/browser/extensions/convert_user_script.cc
@@ -147,7 +147,12 @@ scoped_refptr<Extension> ConvertUserScriptToExtension(
}
scoped_refptr<Extension> extension = Extension::Create(
- temp_dir.path(), Extension::INTERNAL, *root, false, error);
+ temp_dir.path(),
+ Extension::INTERNAL,
+ *root,
+ false, // Do not require key
+ false, // Disable strict checks
+ error);
if (!extension) {
NOTREACHED() << "Could not init extension " << *error;
return NULL;
diff --git a/chrome/browser/extensions/convert_web_app.cc b/chrome/browser/extensions/convert_web_app.cc
index fe082d9..66e3e8f 100644
--- a/chrome/browser/extensions/convert_web_app.cc
+++ b/chrome/browser/extensions/convert_web_app.cc
@@ -168,7 +168,12 @@ scoped_refptr<Extension> ConvertWebAppToExtension(
// Finally, create the extension object to represent the unpacked directory.
std::string error;
scoped_refptr<Extension> extension = Extension::Create(
- temp_dir.path(), Extension::INTERNAL, *root, false, &error);
+ temp_dir.path(),
+ Extension::INTERNAL,
+ *root,
+ false, // Don't require a key.
+ true, // Enable strict error checks.
+ &error);
if (!extension) {
LOG(ERROR) << error;
return NULL;
diff --git a/chrome/browser/extensions/crx_installer.cc b/chrome/browser/extensions/crx_installer.cc
index 1f494b0..39365fd 100644
--- a/chrome/browser/extensions/crx_installer.cc
+++ b/chrome/browser/extensions/crx_installer.cc
@@ -374,7 +374,11 @@ void CrxInstaller::CompleteInstall() {
// lazily and based on the Extension's root path at that moment.
std::string error;
extension_ = extension_file_util::LoadExtension(
- version_dir, install_source_, true, &error);
+ version_dir,
+ install_source_,
+ true, // Require key
+ false, // Disable strict error checks
+ &error);
CHECK(error.empty()) << error;
ReportSuccessFromFileThread();
diff --git a/chrome/browser/extensions/extension_context_menu_api.cc b/chrome/browser/extensions/extension_context_menu_api.cc
index 78f4f03..d8e93f2 100644
--- a/chrome/browser/extensions/extension_context_menu_api.cc
+++ b/chrome/browser/extensions/extension_context_menu_api.cc
@@ -138,7 +138,10 @@ bool ExtensionContextMenuFunction::ParseURLPatterns(
return false;
URLPattern pattern(ExtensionMenuManager::kAllowedSchemes);
- if (URLPattern::PARSE_SUCCESS != pattern.Parse(tmp)) {
+ // TODO(skerner): Consider enabling strict pattern parsing
+ // if this extension's location indicates that it is under development.
+ if (URLPattern::PARSE_SUCCESS != pattern.Parse(tmp,
+ URLPattern::PARSE_LENIENT)) {
error_ = ExtensionErrorUtils::FormatErrorMessage(kInvalidURLPatternError,
tmp);
return false;
diff --git a/chrome/browser/extensions/extension_creator.cc b/chrome/browser/extensions/extension_creator.cc
index a211071..e21728f 100644
--- a/chrome/browser/extensions/extension_creator.cc
+++ b/chrome/browser/extensions/extension_creator.cc
@@ -60,6 +60,7 @@ bool ExtensionCreator::InitializeInput(
extension_file_util::LoadExtension(extension_dir,
Extension::INTERNAL,
false, // key not required
+ true, // enable strict error checks
&error_message_));
if (!extension.get())
return false; // LoadExtension already set error_message_.
diff --git a/chrome/browser/extensions/extension_icon_manager_unittest.cc b/chrome/browser/extensions/extension_icon_manager_unittest.cc
index 0a4189c..6bb2445 100644
--- a/chrome/browser/extensions/extension_icon_manager_unittest.cc
+++ b/chrome/browser/extensions/extension_icon_manager_unittest.cc
@@ -111,7 +111,7 @@ TEST_F(ExtensionIconManagerTest, LoadRemoveLoad) {
scoped_refptr<Extension> extension(Extension::Create(
manifest_path.DirName(), Extension::INVALID, *manifest.get(),
- false, NULL));
+ false, true, NULL));
ASSERT_TRUE(extension.get());
TestIconManager icon_manager(this);
diff --git a/chrome/browser/extensions/extension_info_map_unittest.cc b/chrome/browser/extensions/extension_info_map_unittest.cc
index ba5a0b2..7d82dd2 100644
--- a/chrome/browser/extensions/extension_info_map_unittest.cc
+++ b/chrome/browser/extensions/extension_info_map_unittest.cc
@@ -42,7 +42,8 @@ static scoped_refptr<Extension> CreateExtension(const std::string& name) {
std::string error;
scoped_refptr<Extension> extension = Extension::Create(
- path.AppendASCII(name), Extension::INVALID, manifest, false, &error);
+ path.AppendASCII(name), Extension::INVALID, manifest, false, true,
+ &error);
EXPECT_TRUE(extension) << error;
return extension;
@@ -64,7 +65,7 @@ static scoped_refptr<Extension> LoadManifest(const std::string& dir,
std::string error;
scoped_refptr<Extension> extension = Extension::Create(
path, Extension::INVALID, *static_cast<DictionaryValue*>(result.get()),
- false, &error);
+ false, true, &error);
EXPECT_TRUE(extension) << error;
return extension;
diff --git a/chrome/browser/extensions/extension_prefs.cc b/chrome/browser/extensions/extension_prefs.cc
index 2022c11..1aa8840 100644
--- a/chrome/browser/extensions/extension_prefs.cc
+++ b/chrome/browser/extensions/extension_prefs.cc
@@ -488,7 +488,6 @@ void ExtensionPrefs::SetLastPingDayImpl(const Time& time,
SavePrefsAndNotify();
}
-
bool ExtensionPrefs::GetGrantedPermissions(
const std::string& extension_id,
bool* full_access,
@@ -511,11 +510,20 @@ bool ExtensionPrefs::GetGrantedPermissions(
// "permissions" array and from the content script "matches" arrays,
// so the URLPattern needs to accept valid schemes from both types.
for (std::set<std::string>::iterator i = host_permissions.begin();
- i != host_permissions.end(); ++i)
- host_extent->AddPattern(URLPattern(
+ i != host_permissions.end(); ++i) {
+ URLPattern pattern(
Extension::kValidHostPermissionSchemes |
- UserScript::kValidUserScriptSchemes,
- *i));
+ UserScript::kValidUserScriptSchemes);
+
+ // Parse without strict checks, so that new strict checks do not
+ // fail on a pattern in an installed extension.
+ if (URLPattern::PARSE_SUCCESS != pattern.Parse(
+ *i, URLPattern::PARSE_LENIENT)) {
+ NOTREACHED(); // Corrupt prefs? Hand editing?
+ } else {
+ host_extent->AddPattern(pattern);
+ }
+ }
return true;
}
diff --git a/chrome/browser/extensions/extension_prefs_unittest.cc b/chrome/browser/extensions/extension_prefs_unittest.cc
index fd83f56..71b4bb1 100644
--- a/chrome/browser/extensions/extension_prefs_unittest.cc
+++ b/chrome/browser/extensions/extension_prefs_unittest.cc
@@ -619,13 +619,13 @@ class ExtensionPrefsPreferencesBase : public ExtensionPrefsTest {
ext1_scoped_ = Extension::Create(
prefs_.temp_dir().AppendASCII("ext1_"), Extension::EXTERNAL_PREF,
- simple_dict, false, &error);
+ simple_dict, false, true, &error);
ext2_scoped_ = Extension::Create(
prefs_.temp_dir().AppendASCII("ext2_"), Extension::EXTERNAL_PREF,
- simple_dict, false, &error);
+ simple_dict, false, true, &error);
ext3_scoped_ = Extension::Create(
prefs_.temp_dir().AppendASCII("ext3_"), Extension::EXTERNAL_PREF,
- simple_dict, false, &error);
+ simple_dict, false, true, &error);
ext1_ = ext1_scoped_.get();
ext2_ = ext2_scoped_.get();
diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc
index 6116e99..7d6d5e10 100644
--- a/chrome/browser/extensions/extension_service.cc
+++ b/chrome/browser/extensions/extension_service.cc
@@ -201,6 +201,7 @@ void ExtensionServiceBackend::LoadSingleExtension(
extension_path,
Extension::LOAD,
false, // Don't require id
+ Extension::ShouldDoStrictErrorChecking(Extension::LOAD),
&error));
if (!extension) {
@@ -833,7 +834,8 @@ void ExtensionService::LoadComponentExtensions() {
it->root_directory,
Extension::COMPONENT,
*static_cast<DictionaryValue*>(manifest.get()),
- true, // require key
+ true, // Require key
+ Extension::ShouldDoStrictErrorChecking(Extension::COMPONENT),
&error));
if (!extension.get()) {
NOTREACHED() << error;
@@ -878,7 +880,11 @@ void ExtensionService::LoadAllExtensions() {
std::string error;
scoped_refptr<const Extension> extension(
extension_file_util::LoadExtension(
- info->extension_path, info->extension_location, false, &error));
+ info->extension_path,
+ info->extension_location,
+ false, // Don't require key
+ Extension::ShouldDoStrictErrorChecking(info->extension_location),
+ &error));
if (extension.get()) {
extensions_info->at(i)->extension_manifest.reset(
@@ -985,7 +991,7 @@ void ExtensionService::LoadAllExtensions() {
}
void ExtensionService::LoadInstalledExtension(const ExtensionInfo& info,
- bool write_to_prefs) {
+ bool write_to_prefs) {
std::string error;
scoped_refptr<const Extension> extension(NULL);
if (!extension_prefs_->IsExtensionAllowedByPolicy(info.extension_id)) {
@@ -993,8 +999,12 @@ void ExtensionService::LoadInstalledExtension(const ExtensionInfo& info,
} else if (info.extension_manifest.get()) {
bool require_key = info.extension_location != Extension::LOAD;
extension = Extension::Create(
- info.extension_path, info.extension_location, *info.extension_manifest,
- require_key, &error);
+ info.extension_path,
+ info.extension_location,
+ *info.extension_manifest,
+ require_key,
+ Extension::ShouldDoStrictErrorChecking(info.extension_location),
+ &error);
} else {
error = errors::kManifestUnreadable;
}
diff --git a/chrome/browser/extensions/extension_special_storage_policy_unittest.cc b/chrome/browser/extensions/extension_special_storage_policy_unittest.cc
index 9597fb8..3a77b25 100644
--- a/chrome/browser/extensions/extension_special_storage_policy_unittest.cc
+++ b/chrome/browser/extensions/extension_special_storage_policy_unittest.cc
@@ -28,7 +28,7 @@ class ExtensionSpecialStoragePolicyTest : public testing::Test {
manifest.Set(keys::kWebURLs, list);
std::string error;
scoped_refptr<Extension> protected_app = Extension::Create(
- path, Extension::INVALID, manifest, false, &error);
+ path, Extension::INVALID, manifest, false, true, &error);
EXPECT_TRUE(protected_app.get()) << error;
return protected_app;
}
@@ -52,7 +52,7 @@ class ExtensionSpecialStoragePolicyTest : public testing::Test {
manifest.Set(keys::kWebURLs, list);
std::string error;
scoped_refptr<Extension> unlimited_app = Extension::Create(
- path, Extension::INVALID, manifest, false, &error);
+ path, Extension::INVALID, manifest, false, true, &error);
EXPECT_TRUE(unlimited_app.get()) << error;
return unlimited_app;
}
diff --git a/chrome/browser/extensions/extension_ui_unittest.cc b/chrome/browser/extensions/extension_ui_unittest.cc
index 5980109..b2ae1c5 100644
--- a/chrome/browser/extensions/extension_ui_unittest.cc
+++ b/chrome/browser/extensions/extension_ui_unittest.cc
@@ -42,7 +42,7 @@ namespace {
EXPECT_EQ("", error);
scoped_refptr<Extension> extension(Extension::Create(
- path, Extension::INVALID, *extension_data, true, &error));
+ path, Extension::INVALID, *extension_data, true, true, &error));
EXPECT_TRUE(extension.get());
EXPECT_EQ("", error);
diff --git a/chrome/browser/extensions/extension_webrequest_api.cc b/chrome/browser/extensions/extension_webrequest_api.cc
index d2567a9..a68f2b3 100644
--- a/chrome/browser/extensions/extension_webrequest_api.cc
+++ b/chrome/browser/extensions/extension_webrequest_api.cc
@@ -131,7 +131,8 @@ bool ExtensionWebRequestEventRouter::RequestFilter::InitFromValue(
std::string url;
URLPattern pattern(URLPattern::SCHEME_ALL);
if (!urls_value->GetString(i, &url) ||
- pattern.Parse(url) != URLPattern::PARSE_SUCCESS)
+ pattern.Parse(url, URLPattern::PARSE_STRICT) !=
+ URLPattern::PARSE_SUCCESS)
return false;
urls.AddPattern(pattern);
}
diff --git a/chrome/browser/extensions/image_loading_tracker_unittest.cc b/chrome/browser/extensions/image_loading_tracker_unittest.cc
index 4e41d32..e43d8d5 100644
--- a/chrome/browser/extensions/image_loading_tracker_unittest.cc
+++ b/chrome/browser/extensions/image_loading_tracker_unittest.cc
@@ -75,7 +75,7 @@ class ImageLoadingTrackerTest : public testing::Test,
return NULL;
return Extension::Create(
- test_file, Extension::INVALID, *valid_value, false, &error);
+ test_file, Extension::INVALID, *valid_value, false, true, &error);
}
SkBitmap image_;
diff --git a/chrome/browser/extensions/sandboxed_extension_unpacker.cc b/chrome/browser/extensions/sandboxed_extension_unpacker.cc
index 008c2fc..d7a9b1b 100644
--- a/chrome/browser/extensions/sandboxed_extension_unpacker.cc
+++ b/chrome/browser/extensions/sandboxed_extension_unpacker.cc
@@ -181,7 +181,12 @@ void SandboxedExtensionUnpacker::OnUnpackExtensionSucceeded(
}
extension_ = Extension::Create(
- extension_root_, Extension::INTERNAL, *final_manifest, true, &error);
+ extension_root_,
+ Extension::INTERNAL,
+ *final_manifest,
+ true, // Require key
+ false, // Disable strict error checks
+ &error);
if (!extension_.get()) {
ReportFailure(
diff --git a/chrome/browser/extensions/test_extension_prefs.cc b/chrome/browser/extensions/test_extension_prefs.cc
index 0975f27..a8c8a66 100644
--- a/chrome/browser/extensions/test_extension_prefs.cc
+++ b/chrome/browser/extensions/test_extension_prefs.cc
@@ -98,7 +98,7 @@ scoped_refptr<Extension> TestExtensionPrefs::AddExtensionWithManifest(
FilePath path = extensions_dir_.AppendASCII(name);
std::string errors;
scoped_refptr<Extension> extension = Extension::Create(
- path, location, manifest, false, &errors);
+ path, location, manifest, false, true, &errors);
EXPECT_TRUE(extension);
if (!extension)
return NULL;
diff --git a/chrome/browser/extensions/user_script_master.cc b/chrome/browser/extensions/user_script_master.cc
index eae62b4..c62f452 100644
--- a/chrome/browser/extensions/user_script_master.cc
+++ b/chrome/browser/extensions/user_script_master.cc
@@ -107,7 +107,8 @@ bool UserScriptMaster::ScriptReloader::ParseMetadataHeader(
script->set_description(value);
} else if (GetDeclarationValue(line, kMatchDeclaration, &value)) {
URLPattern pattern(UserScript::kValidUserScriptSchemes);
- if (URLPattern::PARSE_SUCCESS != pattern.Parse(value))
+ if (URLPattern::PARSE_SUCCESS !=
+ pattern.Parse(value, URLPattern::PARSE_LENIENT))
return false;
script->add_url_pattern(pattern);
} else if (GetDeclarationValue(line, kRunAtDeclaration, &value)) {
diff --git a/chrome/browser/sync/glue/extension_util_unittest.cc b/chrome/browser/sync/glue/extension_util_unittest.cc
index 946ca5a..2ca92dd 100644
--- a/chrome/browser/sync/glue/extension_util_unittest.cc
+++ b/chrome/browser/sync/glue/extension_util_unittest.cc
@@ -71,7 +71,7 @@ scoped_refptr<Extension> MakeExtension(
std::string error;
scoped_refptr<Extension> extension = Extension::Create(
- extension_path, location, source, false, &error);
+ extension_path, location, source, false, true, &error);
#if defined(OS_CHROMEOS)
if (num_plugins > 0) { // plugins are illegal in extensions on chrome os.
EXPECT_FALSE(extension);
@@ -386,7 +386,7 @@ scoped_refptr<Extension> MakeSyncableExtension(
source.SetString(extension_manifest_keys::kName, name);
std::string error;
scoped_refptr<Extension> extension = Extension::Create(
- extension_path, Extension::INTERNAL, source, false, &error);
+ extension_path, Extension::INTERNAL, source, false, true, &error);
EXPECT_TRUE(extension);
EXPECT_EQ("", error);
return extension;
diff --git a/chrome/browser/sync/glue/theme_util_unittest.cc b/chrome/browser/sync/glue/theme_util_unittest.cc
index 575ae86..dfa3ea3 100644
--- a/chrome/browser/sync/glue/theme_util_unittest.cc
+++ b/chrome/browser/sync/glue/theme_util_unittest.cc
@@ -33,7 +33,7 @@ scoped_refptr<Extension> MakeThemeExtension(const FilePath& extension_path,
source.SetString(extension_manifest_keys::kVersion, "0.0.0.0");
std::string error;
scoped_refptr<Extension> extension = Extension::Create(
- extension_path, Extension::INTERNAL, source, false, &error);
+ extension_path, Extension::INTERNAL, source, false, true, &error);
EXPECT_TRUE(extension);
EXPECT_EQ("", error);
return extension;
diff --git a/chrome/browser/sync/util/extensions_activity_monitor_unittest.cc b/chrome/browser/sync/util/extensions_activity_monitor_unittest.cc
index ec661bf..ed51a36 100644
--- a/chrome/browser/sync/util/extensions_activity_monitor_unittest.cc
+++ b/chrome/browser/sync/util/extensions_activity_monitor_unittest.cc
@@ -73,7 +73,8 @@ class BookmarkAPIEventGenerator {
input.SetString(keys::kVersion, kTestExtensionVersion);
input.SetString(keys::kName, kTestExtensionName);
scoped_refptr<Extension> extension(Extension::Create(
- FilePath(extension_path), Extension::INVALID, input, false, &error));
+ FilePath(extension_path), Extension::INVALID, input, false, true,
+ &error));
bookmarks_function->set_name(T::function_name());
base::WaitableEvent done_event(false, false);
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
@@ -131,7 +132,8 @@ class ExtensionsActivityMonitorTest : public testing::Test {
input.SetString(keys::kVersion, kTestExtensionVersion);
input.SetString(keys::kName, kTestExtensionName);
scoped_refptr<Extension> extension(Extension::Create(
- FilePath(extension_path), Extension::INVALID, input, false, &error));
+ FilePath(extension_path), Extension::INVALID, input, false, true,
+ &error));
EXPECT_EQ("", error);
return extension->id();
}
diff --git a/chrome/browser/themes/browser_theme_pack_unittest.cc b/chrome/browser/themes/browser_theme_pack_unittest.cc
index d13945c..72219f0 100644
--- a/chrome/browser/themes/browser_theme_pack_unittest.cc
+++ b/chrome/browser/themes/browser_theme_pack_unittest.cc
@@ -406,7 +406,8 @@ TEST_F(BrowserThemePackTest, CanBuildAndReadPack) {
EXPECT_EQ("", error);
ASSERT_TRUE(valid_value.get());
scoped_refptr<Extension> extension(Extension::Create(
- star_gazing_path, Extension::INVALID, *valid_value, true, &error));
+ star_gazing_path, Extension::INVALID, *valid_value, true, true,
+ &error));
ASSERT_TRUE(extension.get());
ASSERT_EQ("", error);
diff --git a/chrome/browser/ui/cocoa/extensions/extension_install_prompt_controller_unittest.mm b/chrome/browser/ui/cocoa/extensions/extension_install_prompt_controller_unittest.mm
index fb393af..f11aeb4 100644
--- a/chrome/browser/ui/cocoa/extensions/extension_install_prompt_controller_unittest.mm
+++ b/chrome/browser/ui/cocoa/extensions/extension_install_prompt_controller_unittest.mm
@@ -61,7 +61,7 @@ public:
}
extension_ = Extension::Create(
- path.DirName(), Extension::INVALID, *value, false, &error);
+ path.DirName(), Extension::INVALID, *value, false, true, &error);
if (!extension_.get()) {
LOG(ERROR) << error;
return;
diff --git a/chrome/browser/ui/cocoa/extensions/extension_installed_bubble_controller_unittest.mm b/chrome/browser/ui/cocoa/extensions/extension_installed_bubble_controller_unittest.mm
index 1cafd26..5115d7d 100644
--- a/chrome/browser/ui/cocoa/extensions/extension_installed_bubble_controller_unittest.mm
+++ b/chrome/browser/ui/cocoa/extensions/extension_installed_bubble_controller_unittest.mm
@@ -101,7 +101,7 @@ class ExtensionInstalledBubbleControllerTest : public CocoaTest {
std::string error;
return Extension::Create(
- path, Extension::INVALID, extension_input_value, false, &error);
+ path, Extension::INVALID, extension_input_value, false, true, &error);
}
// Allows us to create the window and browser for testing.