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