11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright 2014 The Chromium Authors. All rights reserved.
21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Use of this source code is governed by a BSD-style license that can be
31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// found in the LICENSE file.
41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/extensions/updater/chrome_extension_downloader_factory.h"
61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/extensions/updater/extension_downloader.h"
81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/google/google_brand.h"
91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/metrics/chrome_metrics_service_accessor.h"
101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/profiles/profile.h"
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/signin/profile_identity_provider.h"
121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/signin/signin_manager_factory.h"
141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/ui/webui/signin/login_ui_service_factory.h"
151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "components/omaha_query_params/omaha_query_params.h"
161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "components/signin/core/browser/signin_manager.h"
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "google_apis/gaia/identity_provider.h"
181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciusing extensions::ExtensionDownloader;
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciusing extensions::ExtensionDownloaderDelegate;
211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciusing omaha_query_params::OmahaQueryParams;
221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciscoped_ptr<ExtensionDownloader>
241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciChromeExtensionDownloaderFactory::CreateForRequestContext(
251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    net::URLRequestContextGetter* request_context,
261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    ExtensionDownloaderDelegate* delegate) {
271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  scoped_ptr<ExtensionDownloader> downloader(
281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      new ExtensionDownloader(delegate, request_context));
291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(GOOGLE_CHROME_BUILD)
301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  std::string brand;
311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  google_brand::GetBrand(&brand);
321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  if (!brand.empty() && !google_brand::IsOrganic(brand))
331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    downloader->set_brand_code(brand);
341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif  // defined(GOOGLE_CHROME_BUILD)
351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  downloader->set_manifest_query_params(
361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      OmahaQueryParams::Get(OmahaQueryParams::CRX));
371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  downloader->set_ping_enabled_domain("google.com");
381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  downloader->set_enable_extra_update_metrics(
391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      ChromeMetricsServiceAccessor::IsMetricsReportingEnabled());
401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return downloader.Pass();
411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciscoped_ptr<ExtensionDownloader>
441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciChromeExtensionDownloaderFactory::CreateForProfile(
451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    Profile* profile,
461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    ExtensionDownloaderDelegate* delegate) {
471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  scoped_ptr<IdentityProvider> identity_provider(new ProfileIdentityProvider(
481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      SigninManagerFactory::GetForProfile(profile),
491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      ProfileOAuth2TokenServiceFactory::GetForProfile(profile),
501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      LoginUIServiceFactory::GetForProfile(profile)));
511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  scoped_ptr<ExtensionDownloader> downloader =
521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      CreateForRequestContext(profile->GetRequestContext(), delegate);
531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  downloader->SetWebstoreIdentityProvider(identity_provider.Pass());
541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return downloader.Pass();
551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
56