- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / extensions / extension_error_ui_default.cc
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 "chrome/browser/extensions/extension_service.h"
9 #include "chrome/browser/ui/browser.h"
10 #include "chrome/browser/ui/browser_finder.h"
11 #include "chrome/browser/ui/chrome_pages.h"
12 #include "chrome/browser/ui/global_error/global_error_bubble_view_base.h"
13
14 ExtensionErrorUIDefault::ExtensionErrorUIDefault(
15     ExtensionService* extension_service)
16     : ExtensionErrorUI(extension_service),
17       browser_(NULL),
18       global_error_(new ExtensionGlobalError(this)) {
19 }
20
21 ExtensionErrorUIDefault::~ExtensionErrorUIDefault() {
22 }
23
24 bool ExtensionErrorUIDefault::ShowErrorInBubbleView() {
25   Browser* browser =
26       chrome::FindLastActiveWithProfile(extension_service()->profile(),
27                                         chrome::GetActiveDesktop());
28   if (!browser)
29     return false;
30
31   browser_ = browser;
32   global_error_->ShowBubbleView(browser);
33   return true;
34 }
35
36 void ExtensionErrorUIDefault::ShowExtensions() {
37   DCHECK(browser_);
38   chrome::ShowExtensions(browser_, std::string());
39 }
40
41 void ExtensionErrorUIDefault::Close() {
42   if (global_error_->HasShownBubbleView()) {
43     // Will end up calling into |global_error_|->OnBubbleViewDidClose,
44     // possibly synchronously.
45     global_error_->GetBubbleView()->CloseBubbleView();
46   }
47 }
48
49 ExtensionErrorUIDefault::ExtensionGlobalError::ExtensionGlobalError(
50     ExtensionErrorUIDefault* error_ui)
51     : error_ui_(error_ui) {
52 }
53
54 bool ExtensionErrorUIDefault::ExtensionGlobalError::HasMenuItem() {
55   return false;
56 }
57
58 int ExtensionErrorUIDefault::ExtensionGlobalError::MenuItemCommandID() {
59   NOTREACHED();
60   return 0;
61 }
62
63 string16 ExtensionErrorUIDefault::ExtensionGlobalError::MenuItemLabel() {
64   NOTREACHED();
65   return NULL;
66 }
67
68 void ExtensionErrorUIDefault::ExtensionGlobalError::ExecuteMenuItem(
69     Browser* browser) {
70   NOTREACHED();
71 }
72
73 string16 ExtensionErrorUIDefault::ExtensionGlobalError::GetBubbleViewTitle() {
74   return error_ui_->GetBubbleViewTitle();
75 }
76
77 std::vector<string16>
78 ExtensionErrorUIDefault::ExtensionGlobalError::GetBubbleViewMessages() {
79   return error_ui_->GetBubbleViewMessages();
80 }
81
82 string16 ExtensionErrorUIDefault::ExtensionGlobalError::
83     GetBubbleViewAcceptButtonLabel() {
84   return error_ui_->GetBubbleViewAcceptButtonLabel();
85 }
86
87 string16 ExtensionErrorUIDefault::ExtensionGlobalError::
88     GetBubbleViewCancelButtonLabel() {
89   return error_ui_->GetBubbleViewCancelButtonLabel();
90 }
91
92 void ExtensionErrorUIDefault::ExtensionGlobalError::
93     OnBubbleViewDidClose(Browser* browser) {
94   // Calling BubbleViewDidClose on |error_ui_| will delete it. It owns us, so
95   // |this| will be deleted too.
96   error_ui_->BubbleViewDidClose();
97 }
98
99 void ExtensionErrorUIDefault::ExtensionGlobalError::
100     BubbleViewAcceptButtonPressed(Browser* browser) {
101   error_ui_->BubbleViewAcceptButtonPressed();
102 }
103
104 void ExtensionErrorUIDefault::ExtensionGlobalError::
105     BubbleViewCancelButtonPressed(Browser* browser) {
106   error_ui_->BubbleViewCancelButtonPressed();
107 }
108
109 // static
110 ExtensionErrorUI* ExtensionErrorUI::Create(
111     ExtensionService* extension_service) {
112   return new ExtensionErrorUIDefault(extension_service);
113 }