1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "chrome/browser/extensions/api/principals_private/principals_private_api.h"
6
7#include "chrome/browser/browser_process.h"
8#include "chrome/browser/profiles/avatar_menu.h"
9#include "chrome/browser/profiles/profile_window.h"
10#include "chrome/browser/signin/signin_header_helper.h"
11#include "chrome/browser/ui/browser.h"
12#include "chrome/browser/ui/browser_window.h"
13#include "components/signin/core/common/profile_management_switches.h"
14
15namespace extensions {
16
17bool PrincipalsPrivateExtensionFunction::RunSync() {
18  if (!switches::IsEnableAccountConsistency()) {
19    SetError(
20        "Need to enable account consistency to use principalsPrivate API.");
21    return false;
22  }
23  return RunSyncSafe();
24}
25
26bool PrincipalsPrivateSignOutFunction::RunSyncSafe() {
27  Browser* browser = GetCurrentBrowser();
28  if (browser) {
29    profiles::LockProfile(browser->profile());
30  }
31  return true;
32}
33
34bool PrincipalsPrivateShowAvatarBubbleFunction::RunSyncSafe() {
35  Browser* browser = GetCurrentBrowser();
36  if (browser) {
37    browser->window()->ShowAvatarBubbleFromAvatarButton(
38        BrowserWindow::AVATAR_BUBBLE_MODE_ACCOUNT_MANAGEMENT,
39        signin::ManageAccountsParams());
40  }
41  return true;
42}
43
44}  // namespace extensions
45