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/ui/fullscreen/fullscreen_exit_bubble_type.h"
6
7 #include "base/strings/utf_string_conversions.h"
8 #include "chrome/browser/extensions/extension_service.h"
9 #include "chrome/common/url_constants.h"
10 #include "chrome/grit/generated_resources.h"
11 #include "extensions/common/constants.h"
12 #include "extensions/common/extension.h"
13 #include "extensions/common/extension_set.h"
14 #include "ui/base/l10n/l10n_util.h"
15
16 namespace fullscreen_bubble {
17
GetLabelTextForType(FullscreenExitBubbleType type,const GURL & url,ExtensionService * extension_service)18 base::string16 GetLabelTextForType(FullscreenExitBubbleType type,
19 const GURL& url,
20 ExtensionService* extension_service) {
21 base::string16 host(base::UTF8ToUTF16(url.host()));
22 if (extension_service) {
23 const extensions::ExtensionSet* extensions =
24 extension_service->extensions();
25 DCHECK(extensions);
26 const extensions::Extension* extension =
27 extensions->GetExtensionOrAppByURL(url);
28 if (extension) {
29 host = base::UTF8ToUTF16(extension->name());
30 } else if (url.SchemeIs(extensions::kExtensionScheme)) {
31 // In this case, |host| is set to an extension ID.
32 // We are not going to show it because it's human-unreadable.
33 host.clear();
34 }
35 }
36 if (host.empty()) {
37 switch (type) {
38 case FEB_TYPE_FULLSCREEN_BUTTONS:
39 case FEB_TYPE_FULLSCREEN_EXIT_INSTRUCTION:
40 return l10n_util::GetStringUTF16(IDS_FULLSCREEN_ENTERED_FULLSCREEN);
41 case FEB_TYPE_FULLSCREEN_MOUSELOCK_BUTTONS:
42 return l10n_util::GetStringUTF16(
43 IDS_FULLSCREEN_REQUEST_FULLSCREEN_MOUSELOCK);
44 case FEB_TYPE_MOUSELOCK_BUTTONS:
45 return l10n_util::GetStringUTF16(IDS_FULLSCREEN_REQUEST_MOUSELOCK);
46 case FEB_TYPE_FULLSCREEN_MOUSELOCK_EXIT_INSTRUCTION:
47 return l10n_util::GetStringUTF16(
48 IDS_FULLSCREEN_ENTERED_FULLSCREEN_MOUSELOCK);
49 case FEB_TYPE_MOUSELOCK_EXIT_INSTRUCTION:
50 return l10n_util::GetStringUTF16(
51 IDS_FULLSCREEN_ENTERED_MOUSELOCK);
52 case FEB_TYPE_BROWSER_FULLSCREEN_EXIT_INSTRUCTION:
53 return l10n_util::GetStringUTF16(
54 IDS_FULLSCREEN_USER_ENTERED_FULLSCREEN);
55 case FEB_TYPE_BROWSER_EXTENSION_FULLSCREEN_EXIT_INSTRUCTION:
56 return l10n_util::GetStringUTF16(
57 IDS_FULLSCREEN_UNKNOWN_EXTENSION_TRIGGERED_FULLSCREEN);
58 default:
59 NOTREACHED();
60 return base::string16();
61 }
62 }
63 switch (type) {
64 case FEB_TYPE_FULLSCREEN_BUTTONS:
65 return l10n_util::GetStringFUTF16(
66 IDS_FULLSCREEN_SITE_ENTERED_FULLSCREEN, host);
67 case FEB_TYPE_FULLSCREEN_MOUSELOCK_BUTTONS:
68 return l10n_util::GetStringFUTF16(
69 IDS_FULLSCREEN_SITE_REQUEST_FULLSCREEN_MOUSELOCK, host);
70 case FEB_TYPE_MOUSELOCK_BUTTONS:
71 return l10n_util::GetStringFUTF16(
72 IDS_FULLSCREEN_SITE_REQUEST_MOUSELOCK, host);
73 case FEB_TYPE_FULLSCREEN_EXIT_INSTRUCTION:
74 return l10n_util::GetStringFUTF16(
75 IDS_FULLSCREEN_SITE_ENTERED_FULLSCREEN, host);
76 case FEB_TYPE_FULLSCREEN_MOUSELOCK_EXIT_INSTRUCTION:
77 return l10n_util::GetStringFUTF16(
78 IDS_FULLSCREEN_SITE_ENTERED_FULLSCREEN_MOUSELOCK, host);
79 case FEB_TYPE_MOUSELOCK_EXIT_INSTRUCTION:
80 return l10n_util::GetStringFUTF16(
81 IDS_FULLSCREEN_SITE_ENTERED_MOUSELOCK, host);
82 case FEB_TYPE_BROWSER_FULLSCREEN_EXIT_INSTRUCTION:
83 return l10n_util::GetStringUTF16(
84 IDS_FULLSCREEN_USER_ENTERED_FULLSCREEN);
85 case FEB_TYPE_BROWSER_EXTENSION_FULLSCREEN_EXIT_INSTRUCTION:
86 return l10n_util::GetStringFUTF16(
87 IDS_FULLSCREEN_EXTENSION_TRIGGERED_FULLSCREEN, host);
88 default:
89 NOTREACHED();
90 return base::string16();
91 }
92 }
93
GetDenyButtonTextForType(FullscreenExitBubbleType type)94 base::string16 GetDenyButtonTextForType(FullscreenExitBubbleType type) {
95 switch (type) {
96 case FEB_TYPE_FULLSCREEN_BUTTONS:
97 return l10n_util::GetStringUTF16(IDS_FULLSCREEN_EXIT_FULLSCREEN);
98 case FEB_TYPE_FULLSCREEN_MOUSELOCK_BUTTONS:
99 return l10n_util::GetStringUTF16(IDS_FULLSCREEN_EXIT);
100 case FEB_TYPE_MOUSELOCK_BUTTONS:
101 return l10n_util::GetStringUTF16(IDS_FULLSCREEN_DENY);
102 case FEB_TYPE_FULLSCREEN_EXIT_INSTRUCTION:
103 case FEB_TYPE_FULLSCREEN_MOUSELOCK_EXIT_INSTRUCTION:
104 case FEB_TYPE_MOUSELOCK_EXIT_INSTRUCTION:
105 case FEB_TYPE_BROWSER_FULLSCREEN_EXIT_INSTRUCTION:
106 case FEB_TYPE_BROWSER_EXTENSION_FULLSCREEN_EXIT_INSTRUCTION:
107 NOTREACHED(); // No button in this case.
108 return base::string16();
109 default:
110 NOTREACHED();
111 return base::string16();
112 }
113 }
114
ShowButtonsForType(FullscreenExitBubbleType type)115 bool ShowButtonsForType(FullscreenExitBubbleType type) {
116 return type == FEB_TYPE_FULLSCREEN_BUTTONS ||
117 type == FEB_TYPE_FULLSCREEN_MOUSELOCK_BUTTONS ||
118 type == FEB_TYPE_MOUSELOCK_BUTTONS;
119 }
120
PermissionRequestedByType(FullscreenExitBubbleType type,bool * tab_fullscreen,bool * mouse_lock)121 void PermissionRequestedByType(FullscreenExitBubbleType type,
122 bool* tab_fullscreen,
123 bool* mouse_lock) {
124 if (tab_fullscreen) {
125 *tab_fullscreen = type == FEB_TYPE_FULLSCREEN_BUTTONS ||
126 type == FEB_TYPE_FULLSCREEN_MOUSELOCK_BUTTONS;
127 }
128 if (mouse_lock) {
129 *mouse_lock = type == FEB_TYPE_FULLSCREEN_MOUSELOCK_BUTTONS ||
130 type == FEB_TYPE_MOUSELOCK_BUTTONS;
131 }
132 }
133
134 } // namespace fullscreen_bubble
135