1ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved.
2ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// found in the LICENSE file.
4ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
5ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "chrome/browser/ui/bookmarks/bookmark_bubble_sign_in_delegate.h"
6ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
7a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "chrome/browser/signin/signin_promo.h"
8ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "chrome/browser/ui/browser.h"
9ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "chrome/browser/ui/browser_finder.h"
10ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "chrome/browser/ui/browser_list.h"
11ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "chrome/browser/ui/browser_window.h"
12ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "chrome/browser/ui/chrome_pages.h"
13ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "chrome/browser/ui/tabs/tab_strip_model.h"
14ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
15ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben MurdochBookmarkBubbleSignInDelegate::BookmarkBubbleSignInDelegate(Browser* browser)
16ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch    : browser_(browser),
17ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch      profile_(browser->profile()),
18ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch      desktop_type_(browser->host_desktop_type()) {
19ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  BrowserList::AddObserver(this);
20ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch}
21ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
22ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben MurdochBookmarkBubbleSignInDelegate::~BookmarkBubbleSignInDelegate() {
23ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  BrowserList::RemoveObserver(this);
24ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch}
25ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
26ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochvoid BookmarkBubbleSignInDelegate::OnSignInLinkClicked() {
27ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  EnsureBrowser();
28a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  chrome::ShowBrowserSignin(browser_, signin::SOURCE_BOOKMARK_BUBBLE);
29ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch}
30ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
31ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochvoid BookmarkBubbleSignInDelegate::OnBrowserRemoved(Browser* browser) {
32ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  if (browser == browser_)
33ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch    browser_ = NULL;
34ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch}
35ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
36ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochvoid BookmarkBubbleSignInDelegate::EnsureBrowser() {
37ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  if (!browser_) {
38ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch    Profile* original_profile = profile_->GetOriginalProfile();
39ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch    browser_ = chrome::FindLastActiveWithProfile(original_profile,
40ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch                                                 desktop_type_);
41ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch    if (!browser_) {
42ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch      browser_ = new Browser(Browser::CreateParams(original_profile,
43ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch                                                   desktop_type_));
44ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch    }
45ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  }
46ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch}
47