• 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/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