• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2012 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/extension_error_ui_default.h"
6 
7 #include "base/logging.h"
8 #include "base/strings/string_util.h"
9 #include "chrome/browser/extensions/extension_service.h"
10 #include "chrome/browser/profiles/profile.h"
11 #include "chrome/browser/ui/browser.h"
12 #include "chrome/browser/ui/browser_finder.h"
13 #include "chrome/browser/ui/chrome_pages.h"
14 #include "chrome/browser/ui/global_error/global_error_bubble_view_base.h"
15 
16 namespace extensions {
17 
ExtensionErrorUIDefault(ExtensionErrorUI::Delegate * delegate)18 ExtensionErrorUIDefault::ExtensionErrorUIDefault(
19     ExtensionErrorUI::Delegate* delegate)
20     : ExtensionErrorUI(delegate),
21       profile_(Profile::FromBrowserContext(delegate->GetContext())),
22       browser_(NULL),
23       global_error_(new ExtensionGlobalError(this)) {
24 }
25 
~ExtensionErrorUIDefault()26 ExtensionErrorUIDefault::~ExtensionErrorUIDefault() {
27 }
28 
ShowErrorInBubbleView()29 bool ExtensionErrorUIDefault::ShowErrorInBubbleView() {
30   Browser* browser =
31       chrome::FindLastActiveWithProfile(profile_, chrome::GetActiveDesktop());
32   if (!browser)
33     return false;
34 
35   browser_ = browser;
36   global_error_->ShowBubbleView(browser);
37   return true;
38 }
39 
ShowExtensions()40 void ExtensionErrorUIDefault::ShowExtensions() {
41   DCHECK(browser_);
42   chrome::ShowExtensions(browser_, std::string());
43 }
44 
Close()45 void ExtensionErrorUIDefault::Close() {
46   if (global_error_->HasShownBubbleView()) {
47     // Will end up calling into |global_error_|->OnBubbleViewDidClose,
48     // possibly synchronously.
49     global_error_->GetBubbleView()->CloseBubbleView();
50   }
51 }
52 
ExtensionGlobalError(ExtensionErrorUIDefault * error_ui)53 ExtensionErrorUIDefault::ExtensionGlobalError::ExtensionGlobalError(
54     ExtensionErrorUIDefault* error_ui)
55     : error_ui_(error_ui) {
56 }
57 
HasMenuItem()58 bool ExtensionErrorUIDefault::ExtensionGlobalError::HasMenuItem() {
59   return false;
60 }
61 
MenuItemCommandID()62 int ExtensionErrorUIDefault::ExtensionGlobalError::MenuItemCommandID() {
63   NOTREACHED();
64   return 0;
65 }
66 
MenuItemLabel()67 base::string16 ExtensionErrorUIDefault::ExtensionGlobalError::MenuItemLabel() {
68   NOTREACHED();
69   return NULL;
70 }
71 
ExecuteMenuItem(Browser * browser)72 void ExtensionErrorUIDefault::ExtensionGlobalError::ExecuteMenuItem(
73     Browser* browser) {
74   NOTREACHED();
75 }
76 
77 base::string16
GetBubbleViewTitle()78 ExtensionErrorUIDefault::ExtensionGlobalError::GetBubbleViewTitle() {
79   return error_ui_->GetBubbleViewTitle();
80 }
81 
82 std::vector<base::string16>
GetBubbleViewMessages()83 ExtensionErrorUIDefault::ExtensionGlobalError::GetBubbleViewMessages() {
84   return error_ui_->GetBubbleViewMessages();
85 }
86 
87 base::string16 ExtensionErrorUIDefault::ExtensionGlobalError::
GetBubbleViewAcceptButtonLabel()88     GetBubbleViewAcceptButtonLabel() {
89   return error_ui_->GetBubbleViewAcceptButtonLabel();
90 }
91 
92 base::string16 ExtensionErrorUIDefault::ExtensionGlobalError::
GetBubbleViewCancelButtonLabel()93     GetBubbleViewCancelButtonLabel() {
94   return error_ui_->GetBubbleViewCancelButtonLabel();
95 }
96 
OnBubbleViewDidClose(Browser * browser)97 void ExtensionErrorUIDefault::ExtensionGlobalError::OnBubbleViewDidClose(
98     Browser* browser) {
99   error_ui_->BubbleViewDidClose();
100 }
101 
102 void ExtensionErrorUIDefault::ExtensionGlobalError::
BubbleViewAcceptButtonPressed(Browser * browser)103       BubbleViewAcceptButtonPressed(Browser* browser) {
104   error_ui_->BubbleViewAcceptButtonPressed();
105 }
106 
107 void ExtensionErrorUIDefault::ExtensionGlobalError::
BubbleViewCancelButtonPressed(Browser * browser)108     BubbleViewCancelButtonPressed(Browser* browser) {
109   error_ui_->BubbleViewCancelButtonPressed();
110 }
111 
112 // static
Create(ExtensionErrorUI::Delegate * delegate)113 ExtensionErrorUI* ExtensionErrorUI::Create(
114     ExtensionErrorUI::Delegate* delegate) {
115   return new ExtensionErrorUIDefault(delegate);
116 }
117 
118 }  // namespace extensions
119