Replace bools in extension creation with flags.

Turn require_key and strict_error_checks bool params of Extension::
InitFromValue, Extension::Create and extension_file_util::LoadExtension into a
flags parameter.

BUG=None
TEST=compiles
[email protected]

Review URL: http://codereview.chromium.org/6766002

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@79638 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/background_application_list_model_unittest.cc b/chrome/browser/background_application_list_model_unittest.cc
index b994189..a552bccc 100644
--- a/chrome/browser/background_application_list_model_unittest.cc
+++ b/chrome/browser/background_application_list_model_unittest.cc
@@ -89,8 +89,8 @@
   }
   std::string error;
   scoped_refptr<Extension> extension = Extension::Create(
-      bogus_file_path().AppendASCII(name), Extension::INVALID, manifest, false,
-      true, &error);
+      bogus_file_path().AppendASCII(name), Extension::INVALID, manifest,
+      Extension::STRICT_ERROR_CHECKS, &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 a09134b5..3f89b74 100644
--- a/chrome/browser/extensions/convert_user_script.cc
+++ b/chrome/browser/extensions/convert_user_script.cc
@@ -150,8 +150,7 @@
       temp_dir.path(),
       Extension::INTERNAL,
       *root,
-      false,  // Do not require key
-      false,  // Disable strict checks
+      Extension::NO_FLAGS,
       error);
   if (!extension) {
     NOTREACHED() << "Could not init extension " << *error;
diff --git a/chrome/browser/extensions/convert_web_app.cc b/chrome/browser/extensions/convert_web_app.cc
index f3277f8..27a0fc9 100644
--- a/chrome/browser/extensions/convert_web_app.cc
+++ b/chrome/browser/extensions/convert_web_app.cc
@@ -171,8 +171,7 @@
       temp_dir.path(),
       Extension::INTERNAL,
       *root,
-      false,  // Don't require a key.
-      true,  // Enable strict error checks.
+      Extension::STRICT_ERROR_CHECKS,
       &error);
   if (!extension) {
     LOG(ERROR) << error;
diff --git a/chrome/browser/extensions/crx_installer.cc b/chrome/browser/extensions/crx_installer.cc
index 3876dc5..affc4d0 100644
--- a/chrome/browser/extensions/crx_installer.cc
+++ b/chrome/browser/extensions/crx_installer.cc
@@ -386,8 +386,7 @@
   extension_ = extension_file_util::LoadExtension(
       version_dir,
       install_source_,
-      true,  // Require key
-      false,  // Disable strict error checks
+      Extension::REQUIRE_KEY,
       &error);
   CHECK(error.empty()) << error;
 
diff --git a/chrome/browser/extensions/extension_creator.cc b/chrome/browser/extensions/extension_creator.cc
index d7d56c9c..4aa7d8c9 100644
--- a/chrome/browser/extensions/extension_creator.cc
+++ b/chrome/browser/extensions/extension_creator.cc
@@ -66,8 +66,7 @@
   scoped_refptr<Extension> extension(
       extension_file_util::LoadExtension(absolute_extension_dir,
                                          Extension::INTERNAL,
-                                         false,  // key not required
-                                         true,  // enable strict error checks
+                                         Extension::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 490eebc7..9793131 100644
--- a/chrome/browser/extensions/extension_icon_manager_unittest.cc
+++ b/chrome/browser/extensions/extension_icon_manager_unittest.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
@@ -111,7 +111,7 @@
 
   scoped_refptr<Extension> extension(Extension::Create(
       manifest_path.DirName(), Extension::INVALID, *manifest.get(),
-      false, true, NULL));
+      Extension::STRICT_ERROR_CHECKS, 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 dd814d17..d8909e65 100644
--- a/chrome/browser/extensions/extension_info_map_unittest.cc
+++ b/chrome/browser/extensions/extension_info_map_unittest.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
@@ -42,8 +42,8 @@
 
   std::string error;
   scoped_refptr<Extension> extension = Extension::Create(
-      path.AppendASCII(name), Extension::INVALID, manifest, false, true,
-      &error);
+      path.AppendASCII(name), Extension::INVALID, manifest,
+      Extension::STRICT_ERROR_CHECKS, &error);
   EXPECT_TRUE(extension) << error;
 
   return extension;
@@ -65,7 +65,7 @@
   std::string error;
   scoped_refptr<Extension> extension = Extension::Create(
       path, Extension::INVALID, *static_cast<DictionaryValue*>(result.get()),
-      false, true, &error);
+      Extension::STRICT_ERROR_CHECKS, &error);
   EXPECT_TRUE(extension) << error;
 
   return extension;
diff --git a/chrome/browser/extensions/extension_prefs_unittest.cc b/chrome/browser/extensions/extension_prefs_unittest.cc
index 40e30363..551146b 100644
--- a/chrome/browser/extensions/extension_prefs_unittest.cc
+++ b/chrome/browser/extensions/extension_prefs_unittest.cc
@@ -627,13 +627,13 @@
 
     ext1_scoped_ = Extension::Create(
         prefs_.temp_dir().AppendASCII("ext1_"), Extension::EXTERNAL_PREF,
-        simple_dict, false, true, &error);
+        simple_dict, Extension::STRICT_ERROR_CHECKS, &error);
     ext2_scoped_ = Extension::Create(
         prefs_.temp_dir().AppendASCII("ext2_"), Extension::EXTERNAL_PREF,
-        simple_dict, false, true, &error);
+        simple_dict, Extension::STRICT_ERROR_CHECKS, &error);
     ext3_scoped_ = Extension::Create(
         prefs_.temp_dir().AppendASCII("ext3_"), Extension::EXTERNAL_PREF,
-        simple_dict, false, true, &error);
+        simple_dict, Extension::STRICT_ERROR_CHECKS, &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 ed0d286..cb99385 100644
--- a/chrome/browser/extensions/extension_service.cc
+++ b/chrome/browser/extensions/extension_service.cc
@@ -199,12 +199,14 @@
   FilePath extension_path = path_in;
   file_util::AbsolutePath(&extension_path);
 
+  int flags = Extension::NO_FLAGS;
+  if (Extension::ShouldDoStrictErrorChecking(Extension::LOAD))
+    flags |= Extension::STRICT_ERROR_CHECKS;
   std::string error;
   scoped_refptr<const Extension> extension(extension_file_util::LoadExtension(
       extension_path,
       Extension::LOAD,
-      false,  // Don't require id
-      Extension::ShouldDoStrictErrorChecking(Extension::LOAD),
+      flags,
       &error));
 
   if (!extension) {
@@ -744,13 +746,15 @@
     return;
   }
 
+  int flags = Extension::REQUIRE_KEY;
+  if (Extension::ShouldDoStrictErrorChecking(Extension::COMPONENT))
+    flags |= Extension::STRICT_ERROR_CHECKS;
   std::string error;
   scoped_refptr<const Extension> extension(Extension::Create(
       info.root_directory,
       Extension::COMPONENT,
       *static_cast<DictionaryValue*>(manifest.get()),
-      true,  // Require key
-      Extension::ShouldDoStrictErrorChecking(Extension::COMPONENT),
+      flags,
       &error));
   if (!extension.get()) {
     NOTREACHED() << error;
@@ -791,13 +795,15 @@
       // thread.
       base::ThreadRestrictions::ScopedAllowIO allow_io;
 
+      int flags = Extension::NO_FLAGS;
+      if (Extension::ShouldDoStrictErrorChecking(info->extension_location))
+        flags |= Extension::STRICT_ERROR_CHECKS;
       std::string error;
       scoped_refptr<const Extension> extension(
           extension_file_util::LoadExtension(
               info->extension_path,
               info->extension_location,
-              false,  // Don't require key
-              Extension::ShouldDoStrictErrorChecking(info->extension_location),
+              flags,
               &error));
 
       if (extension.get()) {
@@ -911,13 +917,16 @@
   if (!extension_prefs_->IsExtensionAllowedByPolicy(info.extension_id)) {
     error = errors::kDisabledByPolicy;
   } else if (info.extension_manifest.get()) {
-    bool require_key = info.extension_location != Extension::LOAD;
+    int flags = Extension::NO_FLAGS;
+    if (info.extension_location != Extension::LOAD)
+      flags |= Extension::REQUIRE_KEY;
+    if (Extension::ShouldDoStrictErrorChecking(info.extension_location))
+      flags |= Extension::STRICT_ERROR_CHECKS;
     extension = Extension::Create(
         info.extension_path,
         info.extension_location,
         *info.extension_manifest,
-        require_key,
-        Extension::ShouldDoStrictErrorChecking(info.extension_location),
+        flags,
         &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 3a77b25..3f34ccf 100644
--- a/chrome/browser/extensions/extension_special_storage_policy_unittest.cc
+++ b/chrome/browser/extensions/extension_special_storage_policy_unittest.cc
@@ -28,7 +28,8 @@
     manifest.Set(keys::kWebURLs, list);
     std::string error;
     scoped_refptr<Extension> protected_app = Extension::Create(
-        path, Extension::INVALID, manifest, false, true, &error);
+        path, Extension::INVALID, manifest, Extension::STRICT_ERROR_CHECKS,
+        &error);
     EXPECT_TRUE(protected_app.get()) << error;
     return protected_app;
   }
@@ -52,7 +53,8 @@
     manifest.Set(keys::kWebURLs, list);
     std::string error;
     scoped_refptr<Extension> unlimited_app = Extension::Create(
-        path, Extension::INVALID, manifest, false, true, &error);
+        path, Extension::INVALID, manifest, Extension::STRICT_ERROR_CHECKS,
+        &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 b2ae1c5..a9b65ce 100644
--- a/chrome/browser/extensions/extension_ui_unittest.cc
+++ b/chrome/browser/extensions/extension_ui_unittest.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2006-2009 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
@@ -42,7 +42,8 @@
     EXPECT_EQ("", error);
 
     scoped_refptr<Extension> extension(Extension::Create(
-        path, Extension::INVALID, *extension_data, true, true, &error));
+        path, Extension::INVALID, *extension_data,
+        Extension::REQUIRE_KEY | Extension::STRICT_ERROR_CHECKS, &error));
     EXPECT_TRUE(extension.get());
     EXPECT_EQ("", error);
 
diff --git a/chrome/browser/extensions/image_loading_tracker_unittest.cc b/chrome/browser/extensions/image_loading_tracker_unittest.cc
index ed20d00..25d2f6d1 100644
--- a/chrome/browser/extensions/image_loading_tracker_unittest.cc
+++ b/chrome/browser/extensions/image_loading_tracker_unittest.cc
@@ -74,8 +74,8 @@
     if (!valid_value.get())
       return NULL;
 
-    return Extension::Create(
-        test_file, Extension::INVALID, *valid_value, false, true, &error);
+    return Extension::Create(test_file, Extension::INVALID, *valid_value,
+        Extension::STRICT_ERROR_CHECKS, &error);
   }
 
   SkBitmap image_;
diff --git a/chrome/browser/extensions/sandboxed_extension_unpacker.cc b/chrome/browser/extensions/sandboxed_extension_unpacker.cc
index 739eb79..8b42d5e 100644
--- a/chrome/browser/extensions/sandboxed_extension_unpacker.cc
+++ b/chrome/browser/extensions/sandboxed_extension_unpacker.cc
@@ -184,8 +184,7 @@
       extension_root_,
       Extension::INTERNAL,
       *final_manifest,
-      true,  // Require key
-      false,  // Disable strict error checks
+      Extension::REQUIRE_KEY,
       &error);
 
   if (!extension_.get()) {
diff --git a/chrome/browser/extensions/test_extension_prefs.cc b/chrome/browser/extensions/test_extension_prefs.cc
index 4acac36b..7b454f1d2 100644
--- a/chrome/browser/extensions/test_extension_prefs.cc
+++ b/chrome/browser/extensions/test_extension_prefs.cc
@@ -108,7 +108,7 @@
   FilePath path =  extensions_dir_.AppendASCII(name);
   std::string errors;
   scoped_refptr<Extension> extension = Extension::Create(
-      path, location, manifest, false, true, &errors);
+      path, location, manifest, Extension::STRICT_ERROR_CHECKS, &errors);
   EXPECT_TRUE(extension);
   if (!extension)
     return NULL;
diff --git a/chrome/browser/sync/glue/extension_util_unittest.cc b/chrome/browser/sync/glue/extension_util_unittest.cc
index 2ca92dd..b72b7a8 100644
--- a/chrome/browser/sync/glue/extension_util_unittest.cc
+++ b/chrome/browser/sync/glue/extension_util_unittest.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
@@ -71,7 +71,7 @@
 
   std::string error;
   scoped_refptr<Extension> extension = Extension::Create(
-      extension_path, location, source, false, true, &error);
+      extension_path, location, source, Extension::STRICT_ERROR_CHECKS, &error);
 #if defined(OS_CHROMEOS)
   if (num_plugins > 0) {  // plugins are illegal in extensions on chrome os.
     EXPECT_FALSE(extension);
@@ -386,7 +386,8 @@
   source.SetString(extension_manifest_keys::kName, name);
   std::string error;
   scoped_refptr<Extension> extension = Extension::Create(
-      extension_path, Extension::INTERNAL, source, false, true, &error);
+      extension_path, Extension::INTERNAL, source,
+      Extension::STRICT_ERROR_CHECKS, &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 f9548cec8..5c83117 100644
--- a/chrome/browser/sync/glue/theme_util_unittest.cc
+++ b/chrome/browser/sync/glue/theme_util_unittest.cc
@@ -35,7 +35,8 @@
   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, true, &error);
+      extension_path, Extension::INTERNAL, source,
+      Extension::STRICT_ERROR_CHECKS, &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 67585ae..b7e8e7c2 100644
--- a/chrome/browser/sync/util/extensions_activity_monitor_unittest.cc
+++ b/chrome/browser/sync/util/extensions_activity_monitor_unittest.cc
@@ -73,8 +73,8 @@
     input.SetString(keys::kVersion, kTestExtensionVersion);
     input.SetString(keys::kName, kTestExtensionName);
     scoped_refptr<Extension> extension(Extension::Create(
-        FilePath(extension_path), Extension::INVALID, input, false, true,
-        &error));
+        FilePath(extension_path), Extension::INVALID, input,
+        Extension::STRICT_ERROR_CHECKS, &error));
     bookmarks_function->set_name(T::function_name());
     base::WaitableEvent done_event(false, false);
     BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
@@ -132,8 +132,8 @@
     input.SetString(keys::kVersion, kTestExtensionVersion);
     input.SetString(keys::kName, kTestExtensionName);
     scoped_refptr<Extension> extension(Extension::Create(
-        FilePath(extension_path), Extension::INVALID, input, false, true,
-        &error));
+        FilePath(extension_path), Extension::INVALID, input,
+        Extension::STRICT_ERROR_CHECKS, &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 492cf06..842833b 100644
--- a/chrome/browser/themes/browser_theme_pack_unittest.cc
+++ b/chrome/browser/themes/browser_theme_pack_unittest.cc
@@ -406,8 +406,8 @@
     EXPECT_EQ("", error);
     ASSERT_TRUE(valid_value.get());
     scoped_refptr<Extension> extension(Extension::Create(
-        star_gazing_path, Extension::INVALID, *valid_value, true, true,
-        &error));
+        star_gazing_path, Extension::INVALID, *valid_value,
+        Extension::REQUIRE_KEY | Extension::STRICT_ERROR_CHECKS, &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 f11aeb4..aaa9aa3 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
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
@@ -60,8 +60,8 @@
       return;
     }
 
-    extension_ = Extension::Create(
-        path.DirName(), Extension::INVALID, *value, false, true, &error);
+    extension_ = Extension::Create(path.DirName(), Extension::INVALID, *value,
+                                   Extension::STRICT_ERROR_CHECKS, &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 9242796..1205c58 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
@@ -100,8 +100,8 @@
     }
 
     std::string error;
-    return Extension::Create(
-        path, Extension::INVALID, extension_input_value, false, true, &error);
+    return Extension::Create(path, Extension::INVALID, extension_input_value,
+                             Extension::STRICT_ERROR_CHECKS, &error);
   }
 
   // Allows us to create the window and browser for testing.