| Index: chrome/browser/ui/webui/sync_promo_ui.cc
|
| diff --git a/chrome/browser/ui/webui/sync_promo_ui.cc b/chrome/browser/ui/webui/sync_promo_ui.cc
|
| deleted file mode 100644
|
| index 756aeb93b6e23133d3f4b7794e9e39b6aa8c221d..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/ui/webui/sync_promo_ui.cc
|
| +++ /dev/null
|
| @@ -1,258 +0,0 @@
|
| -// Copyright (c) 2011 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_ui.h"
|
| -
|
| -#include "base/command_line.h"
|
| -#include "base/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/prefs/pref_service.h"
|
| -#include "chrome/browser/profiles/profile.h"
|
| -#include "chrome/browser/sync/profile_sync_service.h"
|
| -#include "chrome/browser/ui/webui/chrome_url_data_manager.h"
|
| -#include "chrome/browser/ui/webui/chrome_web_ui_data_source.h"
|
| -#include "chrome/browser/ui/webui/options/core_options_handler.h"
|
| -#include "chrome/browser/ui/webui/sync_promo_handler.h"
|
| -#include "chrome/browser/ui/webui/theme_source.h"
|
| -#include "chrome/common/chrome_switches.h"
|
| -#include "chrome/common/pref_names.h"
|
| -#include "chrome/common/url_constants.h"
|
| -#include "content/browser/tab_contents/tab_contents.h"
|
| -#include "googleurl/src/url_util.h"
|
| -#include "grit/browser_resources.h"
|
| -#include "grit/generated_resources.h"
|
| -#include "grit/theme_resources.h"
|
| -#include "ui/base/l10n/l10n_util.h"
|
| -
|
| -namespace {
|
| -
|
| -const char kStringsJsFile[] = "strings.js";
|
| -const char kSyncPromoJsFile[] = "sync_promo.js";
|
| -
|
| -const char kSyncPromoQueryKeyIsLaunchPage[] = "is_launch_page";
|
| -const char kSyncPromoQueryKeyNextPage[] = "next_page";
|
| -
|
| -// The maximum number of times we want to show the sync promo at startup.
|
| -const int kSyncPromoShowAtStartupMaximum = 10;
|
| -
|
| -// 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;
|
| -
|
| - if (google_util::IsOrganic(brand))
|
| - return true;
|
| -
|
| - if (StartsWithASCII(brand, "CH", true))
|
| - return true;
|
| -
|
| - // Default to disallow for all other brand codes.
|
| - return false;
|
| -}
|
| -
|
| -// The Web UI data source for the sync promo page.
|
| -class SyncPromoUIHTMLSource : public ChromeWebUIDataSource {
|
| - public:
|
| - explicit SyncPromoUIHTMLSource(WebUI* web_ui);
|
| -
|
| - private:
|
| - ~SyncPromoUIHTMLSource() {}
|
| - DISALLOW_COPY_AND_ASSIGN(SyncPromoUIHTMLSource);
|
| -};
|
| -
|
| -SyncPromoUIHTMLSource::SyncPromoUIHTMLSource(WebUI* web_ui)
|
| - : ChromeWebUIDataSource(chrome::kChromeUISyncPromoHost) {
|
| - DictionaryValue localized_strings;
|
| - CoreOptionsHandler::GetStaticLocalizedValues(&localized_strings);
|
| - SyncSetupHandler::GetStaticLocalizedValues(&localized_strings, web_ui);
|
| - AddLocalizedStrings(localized_strings);
|
| -}
|
| -
|
| -// Looks for |search_key| in the query portion of |url|. Returns true if the
|
| -// key is found and sets |out_value| to the value for the key. Returns false if
|
| -// the key is not found.
|
| -bool GetValueForKeyInQuery(const GURL& url, const std::string& search_key,
|
| - std::string* out_value) {
|
| - url_parse::Component query = url.parsed_for_possibly_invalid_spec().query;
|
| - url_parse::Component key, value;
|
| - while (url_parse::ExtractQueryKeyValue(
|
| - url.spec().c_str(), &query, &key, &value)) {
|
| - if (key.is_nonempty()) {
|
| - std::string key_string = url.spec().substr(key.begin, key.len);
|
| - if (key_string == search_key) {
|
| - if (value.is_nonempty())
|
| - *out_value = url.spec().substr(value.begin, value.len);
|
| - else
|
| - *out_value = "";
|
| - return true;
|
| - }
|
| - }
|
| - }
|
| - return false;
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -SyncPromoUI::SyncPromoUI(TabContents* contents) : ChromeWebUI(contents) {
|
| - should_hide_url_ = true;
|
| -
|
| - SyncPromoHandler* handler = new SyncPromoHandler(
|
| - g_browser_process->profile_manager());
|
| - AddMessageHandler(handler);
|
| - handler->Attach(this);
|
| -
|
| - // Set up the chrome://theme/ source.
|
| - Profile* profile = Profile::FromBrowserContext(contents->browser_context());
|
| - ThemeSource* theme = new ThemeSource(profile);
|
| - profile->GetChromeURLDataManager()->AddDataSource(theme);
|
| -
|
| - // Set up the sync promo source.
|
| - SyncPromoUIHTMLSource* html_source = new SyncPromoUIHTMLSource(this);
|
| - html_source->set_json_path(kStringsJsFile);
|
| - html_source->add_resource_path(kSyncPromoJsFile, IDR_SYNC_PROMO_JS);
|
| - html_source->set_default_resource(IDR_SYNC_PROMO_HTML);
|
| - profile->GetChromeURLDataManager()->AddDataSource(html_source);
|
| -}
|
| -
|
| -// 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;
|
| -#endif
|
| -
|
| - // Honor the sync policies.
|
| - if (!profile->GetOriginalProfile()->IsSyncAccessible())
|
| - return false;
|
| -
|
| - // If the user is already signed into sync then don't show the promo.
|
| - ProfileSyncService* service =
|
| - profile->GetOriginalProfile()->GetProfileSyncService();
|
| - if (!service || service->HasSyncSetupCompleted())
|
| - return false;
|
| -
|
| - // Default to allow the promo.
|
| - return true;
|
| -}
|
| -
|
| -// static
|
| -void SyncPromoUI::RegisterUserPrefs(PrefService* prefs) {
|
| - prefs->RegisterIntegerPref(
|
| - prefs::kSyncPromoStartupCount, 0, PrefService::UNSYNCABLE_PREF);
|
| - prefs->RegisterBooleanPref(
|
| - prefs::kSyncPromoUserSkipped, false, PrefService::UNSYNCABLE_PREF);
|
| - prefs->RegisterBooleanPref(prefs::kSyncPromoShowOnFirstRunAllowed, true,
|
| - PrefService::UNSYNCABLE_PREF);
|
| -
|
| - SyncPromoHandler::RegisterUserPrefs(prefs);
|
| -}
|
| -
|
| -bool SyncPromoUI::ShouldShowSyncPromoAtStartup(Profile* profile,
|
| - bool is_new_profile) {
|
| - if (!ShouldShowSyncPromo(profile))
|
| - return false;
|
| -
|
| - const CommandLine& command_line = *CommandLine::ForCurrentProcess();
|
| - if (command_line.HasSwitch(switches::kNoFirstRun))
|
| - is_new_profile = false;
|
| -
|
| - PrefService *prefs = profile->GetPrefs();
|
| - if (!is_new_profile) {
|
| - if (!prefs->HasPrefPath(prefs::kSyncPromoStartupCount))
|
| - return false;
|
| - }
|
| -
|
| - if (HasUserSkippedSyncPromo(profile))
|
| - return false;
|
| -
|
| - // For Chinese users skip the sync promo.
|
| - if (g_browser_process->GetApplicationLocale() == "zh-CN")
|
| - return false;
|
| -
|
| - 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.
|
| - return true;
|
| -}
|
| -
|
| -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
|
| -GURL SyncPromoUI::GetSyncPromoURL(const GURL& next_page, bool show_title) {
|
| - std::stringstream stream;
|
| - stream << chrome::kChromeUISyncPromoURL << "?"
|
| - << kSyncPromoQueryKeyIsLaunchPage << "="
|
| - << (show_title ? "true" : "false");
|
| -
|
| - if (!next_page.spec().empty()) {
|
| - url_canon::RawCanonOutputT<char> output;
|
| - url_util::EncodeURIComponent(
|
| - next_page.spec().c_str(), next_page.spec().length(), &output);
|
| - std::string escaped_spec(output.data(), output.length());
|
| - stream << "&" << kSyncPromoQueryKeyNextPage << "=" << escaped_spec;
|
| - }
|
| -
|
| - return GURL(stream.str());
|
| -}
|
| -
|
| -// static
|
| -bool SyncPromoUI::GetIsLaunchPageForSyncPromoURL(const GURL& url) {
|
| - std::string value;
|
| - // Show the title if the promo is currently the Chrome launch page (and not
|
| - // the page accessed through the NTP).
|
| - if (GetValueForKeyInQuery(url, kSyncPromoQueryKeyIsLaunchPage, &value))
|
| - return value == "true";
|
| - return false;
|
| -}
|
| -
|
| -// static
|
| -GURL SyncPromoUI::GetNextPageURLForSyncPromoURL(const GURL& url) {
|
| - std::string value;
|
| - if (GetValueForKeyInQuery(url, kSyncPromoQueryKeyNextPage, &value)) {
|
| - url_canon::RawCanonOutputT<char16> output;
|
| - url_util::DecodeURLEscapeSequences(value.c_str(), value.length(), &output);
|
| - std::string url;
|
| - UTF16ToUTF8(output.data(), output.length(), &url);
|
| - return GURL(url);
|
| - }
|
| - return GURL();
|
| -}
|
| -
|
| -// static
|
| -bool SyncPromoUI::UserHasSeenSyncPromoAtStartup(Profile* profile) {
|
| - return profile->GetPrefs()->GetInteger(prefs::kSyncPromoStartupCount) > 0;
|
| -}
|
|
|