diff options
Diffstat (limited to 'chrome/browser/sync/personalization.h')
-rw-r--r-- | chrome/browser/sync/personalization.h | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/chrome/browser/sync/personalization.h b/chrome/browser/sync/personalization.h new file mode 100644 index 0000000..57decf5 --- /dev/null +++ b/chrome/browser/sync/personalization.h @@ -0,0 +1,109 @@ +// Copyright (c) 2006-2008 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. + +#ifdef CHROME_PERSONALIZATION + +// TODO(timsteele): Remove this file by finding proper homes for everything in +// trunk. +#ifndef CHROME_BROWSER_SYNC_PERSONALIZATION_H_ +#define CHROME_BROWSER_SYNC_PERSONALIZATION_H_ + +#include <string> +#include "base/basictypes.h" +#include "chrome/browser/dom_ui/chrome_url_data_manager.h" + +class Browser; +class DOMUI; +class DOMMessageHandler; +class Profile; +class RenderView; +class RenderViewHost; +class WebFrame; +class WebView; + +class ProfileSyncService; +class ProfileSyncServiceObserver; + +namespace views { class View; } + +// TODO(ncarter): Move these switches into chrome_switches. They are here +// now because we want to keep them secret during early development. +namespace switches { +extern const wchar_t kSyncServiceURL[]; +extern const wchar_t kSyncServicePort[]; +extern const wchar_t kSyncUserForTest[]; +extern const wchar_t kSyncPasswordForTest[]; +} + +// Names of various preferences. +// TODO(munjal): Move these preferences to common/pref_names.h. +namespace prefs { +extern const wchar_t kSyncPath[]; +extern const wchar_t kSyncLastSyncedTime[]; +extern const wchar_t kSyncUserName[]; +extern const wchar_t kSyncHasSetupCompleted[]; +} + +// Contains a profile sync service, which is initialized at profile creation. +// A pointer to this class is passed as a handle. +class ProfilePersonalization { + public: + ProfilePersonalization() {} + virtual ~ProfilePersonalization() {} + + virtual ProfileSyncService* sync_service() = 0; + + private: + DISALLOW_COPY_AND_ASSIGN(ProfilePersonalization); +}; + +// Contains methods to perform Personalization-related tasks on behalf of the +// caller. +namespace Personalization { + +// Checks if P13N is globally disabled or not, and that |profile| has a valid +// ProfilePersonalization member (it can be NULL for TestingProfiles). +bool IsP13NDisabled(Profile* profile); + +// Returns whether |url| should be loaded in a DOMUI. +bool NeedsDOMUI(const GURL& url); + +// Construct a new ProfilePersonalization and return it so the caller can take +// ownership. +ProfilePersonalization* CreateProfilePersonalization(Profile* p); + +// The caller of Create...() above should call this when the returned +// ProfilePersonalization object should be deleted. +void CleanupProfilePersonalization(ProfilePersonalization* p); + +// Handler for "cloudy:stats" +std::string MakeCloudyStats(); + +// Construct a new DOMMessageHandler for the new tab page |dom_ui|. +DOMMessageHandler* CreateNewTabPageHandler(DOMUI* dom_ui); + +// Get HTML for the Personalization iframe in the New Tab Page. +std::string GetNewTabSource(); + +// Returns the text for personalization info menu item and sets its enabled +// state. +std::wstring GetMenuItemInfoText(Browser* browser); + +// Performs appropriate action when the sync menu item is clicked. +void HandleMenuItemClick(Profile* p); +} // namespace Personalization + +// The internal scheme used to retrieve HTML resources for personalization +// related code (e.g cloudy:stats, GAIA login page). +// We need to ensure the GAIA login HTML is loaded into an HTMLDialogContents. +// Outside of p13n (for the time being) only "gears://" gives this (see +// HtmlDialogContents::IsHtmlDialogUrl) for the application shortcut dialog. +// TODO(timsteele): We should have a robust way to handle this to allow more +// reuse of our HTML dialog code, perhaps by using a dedicated "dialog-resource" +// scheme (chrome-resource is coupled to DOM_UI). Figure out if that is the best +// course of action / pitch this idea to chromium-dev. +static const char kPersonalizationScheme[] = "cloudy"; + +#endif // CHROME_BROWSER_SYNC_PERSONALIZATION_H_ +#endif // CHROME_PERSONALIZATION |