blob: 95ceaa75e6bcbbb6524e0e7104f0425b07c7a347 [file] [log] [blame]
// 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.
#ifndef CHROME_BROWSER_UI_WEBUI_OPTIONS_MANAGE_PROFILE_HANDLER_H_
#define CHROME_BROWSER_UI_WEBUI_OPTIONS_MANAGE_PROFILE_HANDLER_H_
#include <string>
#include "base/memory/weak_ptr.h"
#include "base/prefs/pref_change_registrar.h"
#include "chrome/browser/sync/profile_sync_service_observer.h"
#include "chrome/browser/ui/webui/options/options_ui.h"
#include "content/public/browser/notification_observer.h"
namespace base {
class StringValue;
}
namespace options {
// Chrome personal stuff profiles manage overlay UI handler.
class ManageProfileHandler : public OptionsPageUIHandler,
public content::NotificationObserver,
public ProfileSyncServiceObserver {
public:
ManageProfileHandler();
~ManageProfileHandler() override;
// OptionsPageUIHandler:
void GetLocalizedValues(base::DictionaryValue* localized_strings) override;
void InitializeHandler() override;
void InitializePage() override;
void Uninitialize() override;
// WebUIMessageHandler:
void RegisterMessages() override;
// content::NotificationObserver:
void Observe(int type,
const content::NotificationSource& source,
const content::NotificationDetails& details) override;
// ProfileSyncServiceObserver:
void OnStateChanged() override;
private:
// This function creates signed in user specific strings in loadTimeData.
void GenerateSignedinUserSpecificStrings(base::DictionaryValue* dictionary);
// Callback for the "requestDefaultProfileIcons" message.
// Sends the array of default profile icon URLs and profile names to WebUI.
// First item of |args| is the dialog mode, i.e. "create" or "manage".
void RequestDefaultProfileIcons(const base::ListValue* args);
// Callback for the "requestNewProfileDefaults" message.
// Sends an object to WebUI of the form:
// { "name": profileName, "iconURL": iconURL }
void RequestNewProfileDefaults(const base::ListValue* args);
// Send all profile icons and their default names to the overlay.
// |mode| is the dialog mode, i.e. "create" or "manage".
void SendProfileIconsAndNames(const base::StringValue& mode);
// Sends an object to WebUI of the form:
// profileNames = {
// "Profile Name 1": true,
// "Profile Name 2": true,
// ...
// };
// This is used to detect duplicate profile names.
void SendExistingProfileNames();
// Show disconnect managed profile dialog after generating domain and user
// specific strings.
void ShowDisconnectManagedProfileDialog(const base::ListValue* args);
// Callback for the "setProfileIconAndName" message. Sets the name and icon
// of a given profile.
// |args| is of the form: [
// /*string*/ profileFilePath,
// /*string*/ newProfileIconURL
// /*string*/ newProfileName,
// ]
void SetProfileIconAndName(const base::ListValue* args);
#if defined(ENABLE_SETTINGS_APP)
// Callback for the "switchAppListProfile" message. Asks the
// app_list_controller to change the profile registered for the AppList.
// |args| is of the form: [ {string} profileFilePath ]
void SwitchAppListProfile(const base::ListValue* args);
#endif
// Callback for the 'profileIconSelectionChanged' message. Used to update the
// name in the manager profile dialog based on the selected icon.
void ProfileIconSelectionChanged(const base::ListValue* args);
// Callback for the "requestHasProfileShortcuts" message, which is called
// when editing an existing profile. Asks the profile shortcut manager whether
// the profile has shortcuts and gets the result in |OnHasProfileShortcuts()|.
// |args| is of the form: [ {string} profileFilePath ]
void RequestHasProfileShortcuts(const base::ListValue* args);
// Callback for the "RequestCreateProfileUpdate" message.
// Sends the email address of the signed-in user, or an empty string if the
// user is not signed in. Also sends information about whether supervised
// users may be created.
void RequestCreateProfileUpdate(const base::ListValue* args);
// When the pref allowing supervised-user creation changes, sends the new
// value to the UI.
void OnCreateSupervisedUserPrefChange();
// Callback invoked from the profile manager indicating whether the profile
// being edited has any desktop shortcuts.
void OnHasProfileShortcuts(bool has_shortcuts);
// Callback for the "addProfileShortcut" message, which is called when editing
// an existing profile and the user clicks the "Add desktop shortcut" button.
// Adds a desktop shortcut for the profile.
void AddProfileShortcut(const base::ListValue* args);
// Callback for the "removeProfileShortcut" message, which is called when
// editing an existing profile and the user clicks the "Remove desktop
// shortcut" button. Removes the desktop shortcut for the profile.
void RemoveProfileShortcut(const base::ListValue* args);
// Callback for the "refreshGaiaPicture" message, which is called when the
// user is editing an existing profile.
void RefreshGaiaPicture(const base::ListValue* args);
// URL for the current profile's GAIA picture.
std::string gaia_picture_url_;
// Used to observe the preference that allows creating supervised users, which
// can be changed by policy.
PrefChangeRegistrar pref_change_registrar_;
// For generating weak pointers to itself for callbacks.
base::WeakPtrFactory<ManageProfileHandler> weak_factory_;
DISALLOW_COPY_AND_ASSIGN(ManageProfileHandler);
};
} // namespace options
#endif // CHROME_BROWSER_UI_WEBUI_OPTIONS_MANAGE_PROFILE_HANDLER_H_