Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(179)

Unified Diff: chrome/common/extensions/manifest_handlers/content_scripts_handler.cc

Issue 495853002: Atomic UserScript ID generation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/common/extensions/manifest_handlers/content_scripts_handler.cc
diff --git a/chrome/common/extensions/manifest_handlers/content_scripts_handler.cc b/chrome/common/extensions/manifest_handlers/content_scripts_handler.cc
index ff5eb90e3eeec0422079e95d951948c721360675..30953307b406776cc59402b5446c3749b63e1270 100644
--- a/chrome/common/extensions/manifest_handlers/content_scripts_handler.cc
+++ b/chrome/common/extensions/manifest_handlers/content_scripts_handler.cc
@@ -4,6 +4,7 @@
#include "chrome/common/extensions/manifest_handlers/content_scripts_handler.h"
+#include "base/atomic_sequence_num.h"
#include "base/file_util.h"
#include "base/lazy_instance.h"
#include "base/memory/scoped_ptr.h"
@@ -33,7 +34,7 @@ namespace errors = manifest_errors;
namespace {
// The globally-unique id for a user script.
-int64 g_next_user_script_id = 0;
+base::StaticAtomicSequenceNumber g_user_script_id_generator;
Devlin 2014/08/21 15:27:47 This seems... overarchitected. Any advantage over
Mark Dittmer 2014/08/21 19:45:41 In early testing of https://codereview.chromium.or
// Helper method that loads either the include_globs or exclude_globs list
// from an entry in the content_script lists of the manifest.
@@ -396,6 +397,11 @@ const std::vector<std::string> ContentScriptsHandler::Keys() const {
return std::vector<std::string>(keys, keys + arraysize(keys));
}
+// static
+int64 ContentScriptsHandler::GetNextUserScriptID() {
Devlin 2014/08/21 15:27:47 GetNext() returns an int, not an int64. Probably
Mark Dittmer 2014/08/21 19:45:41 This is done because UserScript IDs are int64. Sho
Devlin 2014/08/21 20:10:20 Yes. We should be consistent.
Mark Dittmer 2014/08/21 21:12:29 Done.
Devlin 2014/08/21 21:24:23 You're missing some. What about all the renderer
+ return g_user_script_id_generator.GetNext();
+}
+
bool ContentScriptsHandler::Parse(Extension* extension, base::string16* error) {
scoped_ptr<ContentScriptsInfo> content_scripts_info(new ContentScriptsInfo);
const base::ListValue* scripts_list = NULL;
@@ -428,7 +434,7 @@ bool ContentScriptsHandler::Parse(Extension* extension, base::string16* error) {
// Greasemonkey matches all frames.
user_script.set_match_all_frames(true);
}
- user_script.set_id(g_next_user_script_id++);
+ user_script.set_id(GetNextUserScriptID());
content_scripts_info->content_scripts.push_back(user_script);
}
extension->SetManifestData(keys::kContentScripts,

Powered by Google App Engine
This is Rietveld 408576698