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

Side by Side Diff: chrome/browser/component_updater/origin_trials_component_installer.cc

Issue 1887743003: Allow the component updater framework to control Origin Trials. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@ef-finch
Patch Set: Created 4 years, 8 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/component_updater/origin_trials_component_installer.h"
6
7 #include "base/bind.h"
8 #include "base/command_line.h"
9 #include "base/files/file_path.h"
10 #include "base/path_service.h"
11 #include "chrome/common/chrome_switches.h"
12 #include "components/component_updater/component_updater_paths.h"
13
14 // The client-side configuration for the origin trial framework can be
15 // overridden by an installed component named 'OriginTrials' (extension id
16 // kfoklmclfodeliojeaekpoflbkkhojea. This component currently consists of just a
17 // manifest.json file, which can contain a custom key named 'origin-trials'. The
18 // value of this key is a dictionary:
19 //
20 // {
21 // "public-key": "<base64-encoding of replacement public key>",
22 // "disabled-features": [<list of features to disable>],
23 // "revoked-tokens": "<base64-encoded data>"
24 // }
25 //
26 // TODO(iclelland): Implement support for revoked tokens and disabled features.
27 //
28 // If the component is not present in the user data directory, the default
29 // configuration will be used.
30
31 namespace component_updater {
32
33 namespace {
34
35 // Extension id is kfoklmclfodeliojeaekpoflbkkhojea
36 const uint8_t kSha256Hash[] = {
37 0xa5, 0xea, 0xbc, 0x2b, 0x5e, 0x34, 0xb8, 0xe9,
38 0x40, 0x4a, 0xfe, 0x5b, 0x1a, 0xa7, 0xe9, 0x40,
39 0xa8, 0xc5, 0xef, 0xa1, 0x9e, 0x20, 0x5a, 0x39,
40 0x73, 0x98, 0x98, 0x0f, 0x7a, 0x76, 0x62, 0xfa
41 };
42
43 } // namespace
44
45 bool OriginTrialsComponentInstallerTraits::VerifyInstallation(
46 const base::DictionaryValue& manifest,
47 const base::FilePath& install_dir) const {
48 // Test if the "origin-trials" key is present in the manifest.
49 return manifest.HasKey("origin-trials");
50 }
51
52 bool OriginTrialsComponentInstallerTraits::CanAutoUpdate() const {
53 return true;
54 }
55
56 bool OriginTrialsComponentInstallerTraits::RequiresNetworkEncryption() const {
57 return true;
58 }
59
60 bool OriginTrialsComponentInstallerTraits::OnCustomInstall(
61 const base::DictionaryValue& manifest,
62 const base::FilePath& install_dir) {
63 return true; // nothing to do!
Sorin Jianu 2016/04/13 21:17:47 Comment is not needed. Please start with capital l
iclelland 2016/04/14 14:30:08 Removed.
64 }
65
66 void OriginTrialsComponentInstallerTraits::ComponentReady(
67 const base::Version& version,
68 const base::FilePath& install_dir,
69 std::unique_ptr<base::DictionaryValue> manifest) {
70 // Read the public key from the manifest and set the command line.
71 std::string override_public_key;
72 if (manifest->GetString("origin-trials.public-key", &override_public_key)) {
73 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
74 command_line->AppendSwitchASCII(switches::kOriginTrialPublicKey,
75 override_public_key);
76 }
77 }
78
79 base::FilePath OriginTrialsComponentInstallerTraits::GetBaseDirectory() const {
80 base::FilePath result;
81 PathService::Get(DIR_ORIGIN_TRIAL_KEYS, &result);
82 return result;
83 }
84
85 void OriginTrialsComponentInstallerTraits::GetHash(
86 std::vector<uint8_t>* hash) const {
87 if (!hash)
88 return;
89 hash->assign(kSha256Hash,
90 kSha256Hash + arraysize(kSha256Hash));
91 }
92
93 std::string OriginTrialsComponentInstallerTraits::GetName() const {
94 return "Origin Trials";
95 }
96
97 std::string OriginTrialsComponentInstallerTraits::GetAp() const {
98 // No additional parameters required; return empty string.
Sorin Jianu 2016/04/13 21:17:47 Comment is not needed, especially the part that fo
iclelland 2016/04/14 14:30:07 Removed.
99 return std::string();
100 }
101
102 void RegisterOriginTrialsComponent(ComponentUpdateService* cus,
103 const base::FilePath& user_data_dir) {
104 VLOG(1) << "Registering origin trials component.";
Sorin Jianu 2016/04/13 21:17:47 Maybe use a DVLOG if this is needed for debugging,
iclelland 2016/04/14 14:30:07 Also removed.
105
106 scoped_ptr<ComponentInstallerTraits> traits(
107 new OriginTrialsComponentInstallerTraits());
108 // |cus| will take ownership of |installer| during installer->Register(cus).
109 DefaultComponentInstaller* installer =
110 new DefaultComponentInstaller(std::move(traits));
111 installer->Register(cus, base::Closure());
112 }
113
114 } // namespace component_updater
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698