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

Unified Diff: chrome/installer/util/master_preferences.h

Issue 4342001: Refactoring the master_preferences functions.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years, 1 month 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
« no previous file with comments | « chrome/installer/util/install_util.cc ('k') | chrome/installer/util/master_preferences.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/installer/util/master_preferences.h
===================================================================
--- chrome/installer/util/master_preferences.h (revision 64604)
+++ chrome/installer/util/master_preferences.h (working copy)
@@ -12,8 +12,8 @@
#include <vector>
#include "base/command_line.h"
+#include "base/scoped_ptr.h"
#include "googleurl/src/gurl.h"
-#include "chrome/installer/util/master_preferences_constants.h"
class DictionaryValue;
class FilePath;
@@ -24,30 +24,6 @@
// values in the user profile at first run.
const char kDefaultMasterPrefs[] = "master_preferences";
-// Parse command line and read master preferences, if present, to get
-// distribution related install options. Merge them if any command line
-// options present (command line value takes precedence).
-DictionaryValue* GetInstallPreferences(const CommandLine& cmd_line);
-
-// Gets the value of given boolean preference |name| from |prefs| dictionary
-// which is assumed to contain a dictionary named "distribution". Returns
-// true if the value is read successfully, otherwise false.
-bool GetDistroBooleanPreference(const DictionaryValue* prefs,
- const std::string& name,
- bool* value);
-
-// This function gets value of a string preference from master
-// preferences. Returns true if the value is read successfully, otherwise false.
-bool GetDistroStringPreference(const DictionaryValue* prefs,
- const std::string& name,
- std::string* value);
-
-// This function gets value of an integer preference from master
-// preferences. Returns true if the value is read successfully, otherwise false.
-bool GetDistroIntegerPreference(const DictionaryValue* prefs,
- const std::string& name,
- int* value);
-
// The master preferences is a JSON file with the same entries as the
// 'Default\Preferences' file. This function parses the distribution
// section of the preferences file.
@@ -93,69 +69,95 @@
// installation properties. This entry will be ignored at other times.
// This function parses the 'distribution' entry and returns a combination
// of MasterPrefResult.
-DictionaryValue* ParseDistributionPreferences(
- const FilePath& master_prefs_path);
+class MasterPreferences {
+ public:
+ // Parses the command line and optionally reads the master preferences file
+ // to get distribution related install options (if the "installerdata" switch
+ // is present in the command line.
+ // The options from the preference file and command line are merged, with the
+ // ones from the command line taking precedence in case of a conflict.
+ explicit MasterPreferences(const CommandLine& cmd_line);
-// As part of the master preferences an optional section indicates the tabs
-// to open during first run. An example is the following:
-//
-// {
-// "first_run_tabs": [
-// "http://google.com/f1",
-// "https://google.com/f2"
-// ]
-// }
-//
-// Note that the entries are usually urls but they don't have to.
-//
-// This function retuns the list as a vector of GURLs. If the master
-// preferences file does not contain such list the vector is empty.
-std::vector<GURL> GetFirstRunTabs(const DictionaryValue* prefs);
+ // Parses a specific preferences file and does not merge any command line
+ // switches with the distribution dictionary.
+ explicit MasterPreferences(const FilePath& prefs_path);
-// Sets the value of given boolean preference |name| in "distribution"
-// dictionary inside |prefs| dictionary.
-bool SetDistroBooleanPreference(DictionaryValue* prefs,
- const std::string& name,
- bool value);
+ ~MasterPreferences();
-// The master preferences can also contain a regular extensions
-// preference block. If so, the extensions referenced there will be
-// installed during the first run experience.
-// An extension can go in the master prefs needs just the basic
-// elements such as:
-// 1- An extension entry under settings, assigned by the gallery
-// 2- The "location" : 1 entry
-// 3- A minimal "manifest" block with key, name, permissions, update url
-// and version. The version needs to be lower than the version of
-// the extension that is hosted in the gallery.
-// 4- The "path" entry with the version as last component
-// 5- The "state" : 1 entry
-//
-// The following is an example of a master pref file that installs
-// Google XYZ:
-//
-// {
-// "extensions": {
-// "settings": {
-// "ppflmjolhbonpkbkooiamcnenbmbjcbb": {
-// "location": 1,
-// "manifest": {
-// "key": "MIGfMA0GCSqGSIb3DQEBAQUAA4<rest of key ommited>",
-// "name": "Google XYZ (Installing...)",
-// "permissions": [ "tabs", "http://xyz.google.com/" ],
-// "update_url": "http://fixme.com/fixme/fixme/crx",
-// "version": "0.0"
-// },
-// "path": "ppflmjolhbonpkbkooiamcnenbmbjcbb\\0.0",
-// "state": 1
-// }
-// }
-// }
-// }
-//
-bool HasExtensionsBlock(const DictionaryValue* prefs,
- DictionaryValue** extensions);
+ // Each of the Get methods below returns true if the named value was found in
+ // the distribution dictionary and its value assigned to the 'value'
+ // parameter. If the value wasn't found, the return value is false.
+ bool GetBool(const std::string& name, bool* value) const;
+ bool GetInt(const std::string& name, int* value) const;
+ bool GetString(const std::string& name, std::string* value) const;
+ // As part of the master preferences an optional section indicates the tabs
+ // to open during first run. An example is the following:
+ //
+ // {
+ // "first_run_tabs": [
+ // "http://google.com/f1",
+ // "https://google.com/f2"
+ // ]
+ // }
+ //
+ // Note that the entries are usually urls but they don't have to be.
+ //
+ // This function returns the list as a vector of GURLs. If the master
+ // preferences file does not contain such a list the vector is empty.
+ std::vector<GURL> GetFirstRunTabs() const;
+
+ // The master preferences can also contain a regular extensions
+ // preference block. If so, the extensions referenced there will be
+ // installed during the first run experience.
+ // An extension can go in the master prefs needs just the basic
+ // elements such as:
+ // 1- An extension entry under settings, assigned by the gallery
+ // 2- The "location" : 1 entry
+ // 3- A minimal "manifest" block with key, name, permissions, update url
+ // and version. The version needs to be lower than the version of
+ // the extension that is hosted in the gallery.
+ // 4- The "path" entry with the version as last component
+ // 5- The "state" : 1 entry
+ //
+ // The following is an example of a master pref file that installs
+ // Google XYZ:
+ //
+ // {
+ // "extensions": {
+ // "settings": {
+ // "ppflmjolhbonpkbkooiamcnenbmbjcbb": {
+ // "location": 1,
+ // "manifest": {
+ // "key": "MIGfMA0GCSqGSIb3DQEBAQUAA4<rest of key ommited>",
+ // "name": "Google XYZ (Installing...)",
+ // "permissions": [ "tabs", "http://xyz.google.com/" ],
+ // "update_url": "http://fixme.com/fixme/fixme/crx",
+ // "version": "0.0"
+ // },
+ // "path": "ppflmjolhbonpkbkooiamcnenbmbjcbb\\0.0",
+ // "state": 1
+ // }
+ // }
+ // }
+ // }
+ //
+ bool GetExtensionsBlock(DictionaryValue** extensions) const;
+
+ // Returns true iff the master preferences were successfully read from a file.
+ bool read_from_file() const {
+ return preferences_read_from_file_;
+ }
+
+ protected:
+ scoped_ptr<DictionaryValue> master_dictionary_;
+ DictionaryValue* distribution_;
+ bool preferences_read_from_file_;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(MasterPreferences);
+};
+
} // namespace installer_util
#endif // CHROME_INSTALLER_UTIL_MASTER_PREFERENCES_H_
« no previous file with comments | « chrome/installer/util/install_util.cc ('k') | chrome/installer/util/master_preferences.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698