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

Unified Diff: chrome/browser/ui/webui/sync_promo/sync_promo_ui.cc

Issue 17167006: move sync_promo_ui to non-webui-specific directory (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: fixed include guard on moved file Created 7 years, 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ui/webui/sync_promo/sync_promo_ui.h ('k') | chrome/browser/ui/webui/sync_setup_handler.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/webui/sync_promo/sync_promo_ui.cc
diff --git a/chrome/browser/ui/webui/sync_promo/sync_promo_ui.cc b/chrome/browser/ui/webui/sync_promo/sync_promo_ui.cc
deleted file mode 100644
index b63325dc46352201a5cdbb0903ea36245f86e853..0000000000000000000000000000000000000000
--- a/chrome/browser/ui/webui/sync_promo/sync_promo_ui.cc
+++ /dev/null
@@ -1,275 +0,0 @@
-// Copyright (c) 2012 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.
-
-#include "chrome/browser/ui/webui/sync_promo/sync_promo_ui.h"
-
-#include "base/command_line.h"
-#include "base/prefs/pref_service.h"
-#include "base/strings/string_number_conversions.h"
-#include "base/strings/string_util.h"
-#include "base/strings/stringprintf.h"
-#include "base/strings/utf_string_conversions.h"
-#include "chrome/browser/browser_process.h"
-#include "chrome/browser/first_run/first_run.h"
-#include "chrome/browser/google/google_util.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/profiles/profile_info_cache.h"
-#include "chrome/browser/profiles/profile_manager.h"
-#include "chrome/browser/signin/signin_manager.h"
-#include "chrome/browser/signin/signin_manager_factory.h"
-#include "chrome/browser/sync/profile_sync_service.h"
-#include "chrome/browser/sync/profile_sync_service_factory.h"
-#include "chrome/browser/ui/webui/options/core_options_handler.h"
-#include "chrome/browser/ui/webui/sync_promo/sync_promo_trial.h"
-#include "chrome/browser/ui/webui/theme_source.h"
-#include "chrome/common/chrome_switches.h"
-#include "chrome/common/net/url_util.h"
-#include "chrome/common/pref_names.h"
-#include "chrome/common/url_constants.h"
-#include "components/user_prefs/pref_registry_syncable.h"
-#include "content/public/browser/url_data_source.h"
-#include "content/public/browser/web_contents.h"
-#include "content/public/browser/web_ui.h"
-#include "content/public/browser/web_ui_data_source.h"
-#include "google_apis/gaia/gaia_urls.h"
-#include "grit/browser_resources.h"
-#include "grit/generated_resources.h"
-#include "grit/theme_resources.h"
-#include "net/base/escape.h"
-#include "net/base/network_change_notifier.h"
-#include "net/base/url_util.h"
-#include "ui/base/l10n/l10n_util.h"
-
-using content::WebContents;
-
-namespace {
-
-const char kStringsJsFile[] = "strings.js";
-const char kSyncPromoJsFile[] = "sync_promo.js";
-
-const char kSyncPromoQueryKeyAutoClose[] = "auto_close";
-const char kSyncPromoQueryKeyContinue[] = "continue";
-const char kSyncPromoQueryKeySource[] = "source";
-
-// Gaia cannot support about:blank as a continue URL, so using a hosted blank
-// page instead.
-const char kSyncLandingUrlPrefix[] =
- "https://www.google.com/intl/%s/chrome/blank.html";
-
-// The maximum number of times we want to show the sync promo at startup.
-const int kSyncPromoShowAtStartupMaximum = 10;
-
-// Forces the web based signin flow when set.
-bool g_force_web_based_signin_flow = false;
-
-// Checks we want to show the sync promo for the given brand.
-bool AllowPromoAtStartupForCurrentBrand() {
- std::string brand;
- google_util::GetBrand(&brand);
-
- if (brand.empty())
- return true;
-
- if (google_util::IsInternetCafeBrandCode(brand))
- return false;
-
- // Enable for both organic and distribution.
- return true;
-}
-
-} // namespace
-
-// static
-bool SyncPromoUI::HasShownPromoAtStartup(Profile* profile) {
- return profile->GetPrefs()->HasPrefPath(prefs::kSyncPromoStartupCount);
-}
-
-// static
-bool SyncPromoUI::ShouldShowSyncPromo(Profile* profile) {
-#if defined(OS_CHROMEOS)
- // There's no need to show the sync promo on cros since cros users are logged
- // into sync already.
- return false;
-#else
-
- // Don't bother if we don't have any kind of network connection.
- if (net::NetworkChangeNotifier::IsOffline())
- return false;
-
- // Don't show if the profile is an incognito.
- if (profile->IsOffTheRecord())
- return false;
-
- // Don't show for managed profiles.
- if (profile->GetPrefs()->GetBoolean(prefs::kProfileIsManaged))
- return false;
-
- // Display the signin promo if the user is not signed in.
- SigninManager* signin = SigninManagerFactory::GetForProfile(
- profile->GetOriginalProfile());
- return !signin->AuthInProgress() && signin->IsSigninAllowed() &&
- signin->GetAuthenticatedUsername().empty();
-#endif
-}
-
-// static
-void SyncPromoUI::RegisterUserPrefs(
- user_prefs::PrefRegistrySyncable* registry) {
- registry->RegisterIntegerPref(
- prefs::kSyncPromoStartupCount,
- 0,
- user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
- registry->RegisterBooleanPref(
- prefs::kSyncPromoUserSkipped,
- false,
- user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
- registry->RegisterBooleanPref(
- prefs::kSyncPromoShowOnFirstRunAllowed,
- true,
- user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
- registry->RegisterBooleanPref(
- prefs::kSyncPromoShowNTPBubble,
- false,
- user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
- registry->RegisterStringPref(
- prefs::kSyncPromoErrorMessage,
- std::string(),
- user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
-}
-
-// static
-bool SyncPromoUI::ShouldShowSyncPromoAtStartup(Profile* profile,
- bool is_new_profile) {
- DCHECK(profile);
-
- if (!ShouldShowSyncPromo(profile))
- return false;
-
- const CommandLine& command_line = *CommandLine::ForCurrentProcess();
- if (command_line.HasSwitch(switches::kNoFirstRun))
- is_new_profile = false;
-
- if (!is_new_profile) {
- if (!HasShownPromoAtStartup(profile))
- return false;
- }
-
- if (HasUserSkippedSyncPromo(profile))
- return false;
-
- // For Chinese users skip the sync promo.
- if (g_browser_process->GetApplicationLocale() == "zh-CN")
- return false;
-
- PrefService* prefs = profile->GetPrefs();
- int show_count = prefs->GetInteger(prefs::kSyncPromoStartupCount);
- if (show_count >= kSyncPromoShowAtStartupMaximum)
- return false;
-
- // This pref can be set in the master preferences file to allow or disallow
- // showing the sync promo at startup.
- if (prefs->HasPrefPath(prefs::kSyncPromoShowOnFirstRunAllowed))
- return prefs->GetBoolean(prefs::kSyncPromoShowOnFirstRunAllowed);
-
- // For now don't show the promo for some brands.
- if (!AllowPromoAtStartupForCurrentBrand())
- return false;
-
- // Default to show the promo for Google Chrome builds.
-#if defined(GOOGLE_CHROME_BUILD)
- return true;
-#else
- return false;
-#endif
-}
-
-void SyncPromoUI::DidShowSyncPromoAtStartup(Profile* profile) {
- int show_count = profile->GetPrefs()->GetInteger(
- prefs::kSyncPromoStartupCount);
- show_count++;
- profile->GetPrefs()->SetInteger(prefs::kSyncPromoStartupCount, show_count);
-}
-
-bool SyncPromoUI::HasUserSkippedSyncPromo(Profile* profile) {
- return profile->GetPrefs()->GetBoolean(prefs::kSyncPromoUserSkipped);
-}
-
-void SyncPromoUI::SetUserSkippedSyncPromo(Profile* profile) {
- profile->GetPrefs()->SetBoolean(prefs::kSyncPromoUserSkipped, true);
-}
-
-// static
-std::string SyncPromoUI::GetSyncLandingURL(const char* option, int value) {
- const std::string& locale = g_browser_process->GetApplicationLocale();
- std::string url = base::StringPrintf(kSyncLandingUrlPrefix, locale.c_str());
- base::StringAppendF(&url, "?%s=%d", option, value);
- return url;
-}
-
-// static
-GURL SyncPromoUI::GetSyncPromoURL(Source source, bool auto_close) {
- DCHECK_NE(SOURCE_UNKNOWN, source);
-
- std::string url_string;
-
- // Build a Gaia-based URL that can be used to sign the user into chrome.
- // There are required request parameters:
- //
- // - tell Gaia which service the user is signing into. In this case,
- // a chrome sign in uses the service "chromiumsync"
- // - provide a continue URL. This is the URL that Gaia will redirect to
- // once the sign is complete.
- //
- // The continue URL includes a source parameter that can be extracted using
- // the function GetSourceForSyncPromoURL() below. This is used to know
- // which of the chrome sign in access points was used to sign the user in.
- // See OneClickSigninHelper for details.
- url_string = GaiaUrls::GetInstance()->service_login_url();
- url_string.append("?service=chromiumsync&sarp=1");
-
- std::string continue_url = GetSyncLandingURL(
- kSyncPromoQueryKeySource, static_cast<int>(source));
-
- base::StringAppendF(&url_string, "&%s=%s", kSyncPromoQueryKeyContinue,
- net::EscapeQueryParamValue(
- continue_url, false).c_str());
-
- return GURL(url_string);
-}
-
-// static
-GURL SyncPromoUI::GetNextPageURLForSyncPromoURL(const GURL& url) {
- std::string value;
- if (net::GetValueForKeyInQuery(url, kSyncPromoQueryKeyContinue, &value))
- return GURL(value);
-
- return GURL();
-}
-
-// static
-SyncPromoUI::Source SyncPromoUI::GetSourceForSyncPromoURL(const GURL& url) {
- std::string value;
- if (net::GetValueForKeyInQuery(url, kSyncPromoQueryKeySource, &value)) {
- int source = 0;
- if (base::StringToInt(value, &source) && source >= SOURCE_START_PAGE &&
- source < SOURCE_UNKNOWN) {
- return static_cast<Source>(source);
- }
- }
- return SOURCE_UNKNOWN;
-}
-
-// static
-bool SyncPromoUI::IsContinueUrlForWebBasedSigninFlow(const GURL& url) {
- GURL::Replacements replacements;
- replacements.ClearQuery();
- const std::string& locale = g_browser_process->GetApplicationLocale();
- return url.ReplaceComponents(replacements) ==
- GURL(base::StringPrintf(kSyncLandingUrlPrefix, locale.c_str()));
-}
-
-// static
-void SyncPromoUI::ForceWebBasedSigninFlowForTesting(bool force) {
- g_force_web_based_signin_flow = force;
-}
« no previous file with comments | « chrome/browser/ui/webui/sync_promo/sync_promo_ui.h ('k') | chrome/browser/ui/webui/sync_setup_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698