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

Side by Side Diff: components/update_client/utils.h

Issue 2888183003: Consolidate the update_client serialization code. (Closed)
Patch Set: . Created 3 years, 7 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
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef COMPONENTS_UPDATE_CLIENT_UTILS_H_ 5 #ifndef COMPONENTS_UPDATE_CLIENT_UTILS_H_
6 #define COMPONENTS_UPDATE_CLIENT_UTILS_H_ 6 #define COMPONENTS_UPDATE_CLIENT_UTILS_H_
7 7
8 #include <memory> 8 #include <memory>
9 #include <string> 9 #include <string>
10 #include <utility> 10 #include <utility>
11 #include <vector> 11 #include <vector>
12 12
13 #include "base/callback_forward.h" 13 #include "base/callback_forward.h"
14 #include "components/update_client/update_client.h" 14 #include "components/update_client/update_client.h"
15 #include "components/update_client/updater_state.h"
16 15
17 class GURL; 16 class GURL;
18 17
19 namespace base { 18 namespace base {
20 class FilePath; 19 class FilePath;
21 } 20 }
22 21
23 namespace net { 22 namespace net {
24 class URLFetcher; 23 class URLFetcher;
25 class URLFetcherDelegate; 24 class URLFetcherDelegate;
26 class URLRequestContextGetter; 25 class URLRequestContextGetter;
27 } 26 }
28 27
29 namespace update_client { 28 namespace update_client {
30 29
31 class Component; 30 class Component;
32 struct CrxComponent; 31 struct CrxComponent;
33 32
34 // Defines a name-value pair that represents an installer attribute. 33 // Defines a name-value pair that represents an installer attribute.
35 // Installer attributes are component-specific metadata, which may be serialized 34 // Installer attributes are component-specific metadata, which may be serialized
36 // in an update check request. 35 // in an update check request.
37 using InstallerAttribute = std::pair<std::string, std::string>; 36 using InstallerAttribute = std::pair<std::string, std::string>;
38 37
39 // An update protocol request starts with a common preamble which includes
40 // version and platform information for Chrome and the operating system,
41 // followed by a request body, which is the actual payload of the request.
42 // For example:
43 //
44 // <?xml version="1.0" encoding="UTF-8"?>
45 // <request protocol="3.0" version="chrome-32.0.1.0" prodversion="32.0.1.0"
46 // requestid="{7383396D-B4DD-46E1-9104-AAC6B918E792}"
47 // updaterchannel="canary" arch="x86" nacl_arch="x86-64"
48 // ADDITIONAL ATTRIBUTES>
49 // <hw physmemory="16"/>
50 // <os platform="win" version="6.1" arch="x86"/>
51 // ... REQUEST BODY ...
52 // </request>
53
54 // Builds a protocol request string by creating the outer envelope for
55 // the request and including the request body specified as a parameter.
56 // If present, the |download_preference| specifies a group policy that
57 // affects the list of download URLs returned in the update response.
58 // If specified, |additional_attributes| are appended as attributes of the
59 // request element. The additional attributes have to be well-formed for
60 // insertion in the request element. |updater_state_attributes| is an optional
61 // parameter specifying that an <updater> element is serialized as part of
62 // the request.
63 std::string BuildProtocolRequest(
64 const std::string& prod_id,
65 const std::string& browser_version,
66 const std::string& channel,
67 const std::string& lang,
68 const std::string& os_long_name,
69 const std::string& download_preference,
70 const std::string& request_body,
71 const std::string& additional_attributes,
72 const std::unique_ptr<UpdaterState::Attributes>& updater_state_attributes);
73
74 // Sends a protocol request to the the service endpoint specified by |url|. 38 // Sends a protocol request to the the service endpoint specified by |url|.
75 // The body of the request is provided by |protocol_request| and it is 39 // The body of the request is provided by |protocol_request| and it is
76 // expected to contain XML data. The caller owns the returned object. 40 // expected to contain XML data. The caller owns the returned object.
77 std::unique_ptr<net::URLFetcher> SendProtocolRequest( 41 std::unique_ptr<net::URLFetcher> SendProtocolRequest(
78 const GURL& url, 42 const GURL& url,
79 const std::string& protocol_request, 43 const std::string& protocol_request,
80 net::URLFetcherDelegate* url_fetcher_delegate, 44 net::URLFetcherDelegate* url_fetcher_delegate,
81 net::URLRequestContextGetter* url_request_context_getter); 45 net::URLRequestContextGetter* url_request_context_getter);
82 46
83 // Returns true if the url request of |fetcher| was succesful. 47 // Returns true if the url request of |fetcher| was succesful.
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 // Removes the unsecure urls in the |urls| parameter. 84 // Removes the unsecure urls in the |urls| parameter.
121 void RemoveUnsecureUrls(std::vector<GURL>* urls); 85 void RemoveUnsecureUrls(std::vector<GURL>* urls);
122 86
123 // Adapter function for the old definitions of CrxInstaller::Install until the 87 // Adapter function for the old definitions of CrxInstaller::Install until the
124 // component installer code is migrated to use a REsult instead of bool. 88 // component installer code is migrated to use a REsult instead of bool.
125 CrxInstaller::Result InstallFunctionWrapper(base::Callback<bool()> callback); 89 CrxInstaller::Result InstallFunctionWrapper(base::Callback<bool()> callback);
126 90
127 } // namespace update_client 91 } // namespace update_client
128 92
129 #endif // COMPONENTS_UPDATE_CLIENT_UTILS_H_ 93 #endif // COMPONENTS_UPDATE_CLIENT_UTILS_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698