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

Unified Diff: chrome/browser/extensions/external_pref_extension_loader.cc

Issue 7718021: Add external extensions json source in proper mac location. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rev Created 9 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/browser/extensions/external_pref_extension_loader.cc
diff --git a/chrome/browser/extensions/external_pref_extension_loader.cc b/chrome/browser/extensions/external_pref_extension_loader.cc
index 8d90ee7249c19adf2ae7bd746cc885ed8504427d..8b6192006fbff415a761311f640a4efe4d178e40 100644
--- a/chrome/browser/extensions/external_pref_extension_loader.cc
+++ b/chrome/browser/extensions/external_pref_extension_loader.cc
@@ -7,7 +7,9 @@
#include "base/file_path.h"
#include "base/file_util.h"
#include "base/logging.h"
+#include "base/metrics/histogram.h"
#include "base/path_service.h"
+#include "chrome/common/chrome_paths.h"
#include "content/browser/browser_thread.h"
#include "content/common/json_value_serializer.h"
@@ -34,8 +36,10 @@ DictionaryValue* ExtractPrefs(const FilePath& path,
} // namespace
-ExternalPrefExtensionLoader::ExternalPrefExtensionLoader(int base_path_key)
- : base_path_key_(base_path_key) {
+ExternalPrefExtensionLoader::ExternalPrefExtensionLoader(int base_path_key,
+ Options options)
+ : base_path_key_(base_path_key),
+ options_(options){
CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
}
@@ -72,8 +76,18 @@ void ExternalPrefExtensionLoader::LoadOnFileThread() {
base_path_.Append(FILE_PATH_LITERAL("external_extensions.json"));
if (file_util::PathExists(json_file)) {
- JSONFileValueSerializer serializer(json_file);
- prefs.reset(ExtractPrefs(json_file, &serializer));
+ if (IsOptionSet(ENSURE_PATH_CONTROLLED_BY_ADMIN) &&
+ !file_util::IsPathControlledByAdmin(json_file)) {
+ LOG(ERROR) << "Can not read external extensions source. The file "
+ << json_file.value() << " and every directory in its path "
+ << "must be owned by root, and not be writable by all "
+ << "users. This restriction prevents unprivleged users "
+ << "from making chrome install extensions on other users' "
+ << "accounts.";
+ } else {
+ JSONFileValueSerializer serializer(json_file);
+ prefs.reset(ExtractPrefs(json_file, &serializer));
+ }
}
}
@@ -82,6 +96,16 @@ void ExternalPrefExtensionLoader::LoadOnFileThread() {
prefs_.reset(prefs.release());
+ // We want to deprecate the external extensions file inside the app
+ // bundle on mac os. Use a histogram to see how many extensions
+ // are installed in this way. We can use this data to measure the
+ // effectiveness of asking developers to use the new path, or any
+ // automatic migration methods we implement.
TVL 2011/08/25 14:07:28 fyi - if folks were modifying the bundle link this
Sam Kerner (Chrome) 2011/08/25 14:29:58 Mark mentioned that in the bug. In order to figur
+ if (base_path_key_ == chrome::DIR_DEPRICATED_EXTERNAL_EXTENSIONS) {
+ UMA_HISTOGRAM_COUNTS_100("Extensions.DepricatedExternalJsonCount",
+ prefs_->size());
asargent_no_longer_on_chrome 2011/08/24 22:55:09 Optional suggestion - do we want to also measure t
Sam Kerner (Chrome) 2011/08/25 14:04:37 Good point. Done.
+ }
+
// If we have any records to process, then we must have
// read the .json file. If we read the .json file, then
// we were should have set |base_path_|.

Powered by Google App Engine
This is Rietveld 408576698