| Index: components/update_client/utils.h | 
| diff --git a/components/update_client/utils.h b/components/update_client/utils.h | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..297eb976cbaf15957f43eb53d07b2365f683a4a6 | 
| --- /dev/null | 
| +++ b/components/update_client/utils.h | 
| @@ -0,0 +1,90 @@ | 
| +// Copyright 2014 The Chromium Authors. All rights reserved. | 
| +// Use of this source code is governed by a BSD-style license that can be | 
| +// found in the LICENSE file. | 
| + | 
| +#ifndef COMPONENTS_UPDATE_CLIENT_UTILS_H_ | 
| +#define COMPONENTS_UPDATE_CLIENT_UTILS_H_ | 
| + | 
| +#include <string> | 
| + | 
| +class GURL; | 
| + | 
| +namespace base { | 
| +class FilePath; | 
| +} | 
| + | 
| +namespace net { | 
| +class URLFetcher; | 
| +class URLFetcherDelegate; | 
| +class URLRequestContextGetter; | 
| +} | 
| + | 
| +namespace update_client { | 
| + | 
| +class Configurator; | 
| +struct CrxComponent; | 
| +struct CrxUpdateItem; | 
| + | 
| +// An update protocol request starts with a common preamble which includes | 
| +// version and platform information for Chrome and the operating system, | 
| +// followed by a request body, which is the actual payload of the request. | 
| +// For example: | 
| +// | 
| +// <?xml version="1.0" encoding="UTF-8"?> | 
| +// <request protocol="3.0" version="chrome-32.0.1.0"  prodversion="32.0.1.0" | 
| +//        requestid="{7383396D-B4DD-46E1-9104-AAC6B918E792}" | 
| +//        updaterchannel="canary" arch="x86" nacl_arch="x86-64" | 
| +//        ADDITIONAL ATTRIBUTES> | 
| +//   <hw physmemory="16"/> | 
| +//   <os platform="win" version="6.1" arch="x86"/> | 
| +//   ... REQUEST BODY ... | 
| +// </request> | 
| + | 
| +// Builds a protocol request string by creating the outer envelope for | 
| +// the request and including the request body specified as a parameter. | 
| +// If specified, |additional_attributes| are appended as attributes of the | 
| +// request element. The additional attributes have to be well-formed for | 
| +// insertion in the request element. | 
| +std::string BuildProtocolRequest(const std::string& browser_version, | 
| +                                 const std::string& channel, | 
| +                                 const std::string& lang, | 
| +                                 const std::string& os_long_name, | 
| +                                 const std::string& request_body, | 
| +                                 const std::string& additional_attributes); | 
| + | 
| +// Sends a protocol request to the the service endpoint specified by |url|. | 
| +// The body of the request is provided by |protocol_request| and it is | 
| +// expected to contain XML data. The caller owns the returned object. | 
| +net::URLFetcher* SendProtocolRequest( | 
| +    const GURL& url, | 
| +    const std::string& protocol_request, | 
| +    net::URLFetcherDelegate* url_fetcher_delegate, | 
| +    net::URLRequestContextGetter* url_request_context_getter); | 
| + | 
| +// Returns true if the url request of |fetcher| was succesful. | 
| +bool FetchSuccess(const net::URLFetcher& fetcher); | 
| + | 
| +// Returns the error code which occured during the fetch. The function returns 0 | 
| +// if the fetch was successful. If errors happen, the function could return a | 
| +// network error, an http response code, or the status of the fetch, if the | 
| +// fetch is pending or canceled. | 
| +int GetFetchError(const net::URLFetcher& fetcher); | 
| + | 
| +// Returns true if the |update_item| contains a valid differential update url. | 
| +bool HasDiffUpdate(const CrxUpdateItem* update_item); | 
| + | 
| +// Returns true if the |status_code| represents a server error 5xx. | 
| +bool IsHttpServerError(int status_code); | 
| + | 
| +// Deletes the file and its directory, if the directory is empty. If the | 
| +// parent directory is not empty, the function ignores deleting the directory. | 
| +// Returns true if the file and the empty directory are deleted. | 
| +bool DeleteFileAndEmptyParentDirectory(const base::FilePath& filepath); | 
| + | 
| +// Returns the component id of the |component|. The component id is in a | 
| +// format similar with the format of an extension id. | 
| +std::string GetCrxComponentID(const CrxComponent& component); | 
| + | 
| +}  // namespace update_client | 
| + | 
| +#endif  // COMPONENTS_UPDATE_CLIENT_UTILS_H_ | 
|  |