15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/fullscreen/fullscreen_exit_bubble_type.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/extensions/extension_service.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/url_constants.h" 101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/grit/generated_resources.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "extensions/common/constants.h" 12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "extensions/common/extension.h" 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "extensions/common/extension_set.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/l10n/l10n_util.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace fullscreen_bubble { 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)base::string16 GetLabelTextForType(FullscreenExitBubbleType type, 195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const GURL& url, 205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ExtensionService* extension_service) { 215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::string16 host(base::UTF8ToUTF16(url.host())); 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (extension_service) { 235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const extensions::ExtensionSet* extensions = 245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) extension_service->extensions(); 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(extensions); 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const extensions::Extension* extension = 27ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch extensions->GetExtensionOrAppByURL(url); 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (extension) { 295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) host = base::UTF8ToUTF16(extension->name()); 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } else if (url.SchemeIs(extensions::kExtensionScheme)) { 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // In this case, |host| is set to an extension ID. 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // We are not going to show it because it's human-unreadable. 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) host.clear(); 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (host.empty()) { 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (type) { 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case FEB_TYPE_FULLSCREEN_BUTTONS: 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case FEB_TYPE_FULLSCREEN_EXIT_INSTRUCTION: 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return l10n_util::GetStringUTF16(IDS_FULLSCREEN_ENTERED_FULLSCREEN); 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case FEB_TYPE_FULLSCREEN_MOUSELOCK_BUTTONS: 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return l10n_util::GetStringUTF16( 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_FULLSCREEN_REQUEST_FULLSCREEN_MOUSELOCK); 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case FEB_TYPE_MOUSELOCK_BUTTONS: 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return l10n_util::GetStringUTF16(IDS_FULLSCREEN_REQUEST_MOUSELOCK); 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case FEB_TYPE_FULLSCREEN_MOUSELOCK_EXIT_INSTRUCTION: 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return l10n_util::GetStringUTF16( 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_FULLSCREEN_ENTERED_FULLSCREEN_MOUSELOCK); 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case FEB_TYPE_MOUSELOCK_EXIT_INSTRUCTION: 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return l10n_util::GetStringUTF16( 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_FULLSCREEN_ENTERED_MOUSELOCK); 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case FEB_TYPE_BROWSER_FULLSCREEN_EXIT_INSTRUCTION: 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return l10n_util::GetStringUTF16( 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_FULLSCREEN_USER_ENTERED_FULLSCREEN); 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case FEB_TYPE_BROWSER_EXTENSION_FULLSCREEN_EXIT_INSTRUCTION: 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return l10n_util::GetStringUTF16( 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_FULLSCREEN_UNKNOWN_EXTENSION_TRIGGERED_FULLSCREEN); 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NOTREACHED(); 60a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return base::string16(); 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (type) { 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case FEB_TYPE_FULLSCREEN_BUTTONS: 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return l10n_util::GetStringFUTF16( 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_FULLSCREEN_SITE_ENTERED_FULLSCREEN, host); 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case FEB_TYPE_FULLSCREEN_MOUSELOCK_BUTTONS: 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return l10n_util::GetStringFUTF16( 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_FULLSCREEN_SITE_REQUEST_FULLSCREEN_MOUSELOCK, host); 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case FEB_TYPE_MOUSELOCK_BUTTONS: 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return l10n_util::GetStringFUTF16( 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_FULLSCREEN_SITE_REQUEST_MOUSELOCK, host); 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case FEB_TYPE_FULLSCREEN_EXIT_INSTRUCTION: 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return l10n_util::GetStringFUTF16( 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_FULLSCREEN_SITE_ENTERED_FULLSCREEN, host); 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case FEB_TYPE_FULLSCREEN_MOUSELOCK_EXIT_INSTRUCTION: 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return l10n_util::GetStringFUTF16( 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_FULLSCREEN_SITE_ENTERED_FULLSCREEN_MOUSELOCK, host); 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case FEB_TYPE_MOUSELOCK_EXIT_INSTRUCTION: 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return l10n_util::GetStringFUTF16( 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_FULLSCREEN_SITE_ENTERED_MOUSELOCK, host); 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case FEB_TYPE_BROWSER_FULLSCREEN_EXIT_INSTRUCTION: 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return l10n_util::GetStringUTF16( 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_FULLSCREEN_USER_ENTERED_FULLSCREEN); 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case FEB_TYPE_BROWSER_EXTENSION_FULLSCREEN_EXIT_INSTRUCTION: 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return l10n_util::GetStringFUTF16( 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_FULLSCREEN_EXTENSION_TRIGGERED_FULLSCREEN, host); 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NOTREACHED(); 90a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return base::string16(); 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)base::string16 GetDenyButtonTextForType(FullscreenExitBubbleType type) { 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (type) { 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case FEB_TYPE_FULLSCREEN_BUTTONS: 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return l10n_util::GetStringUTF16(IDS_FULLSCREEN_EXIT_FULLSCREEN); 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case FEB_TYPE_FULLSCREEN_MOUSELOCK_BUTTONS: 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return l10n_util::GetStringUTF16(IDS_FULLSCREEN_EXIT); 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case FEB_TYPE_MOUSELOCK_BUTTONS: 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return l10n_util::GetStringUTF16(IDS_FULLSCREEN_DENY); 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case FEB_TYPE_FULLSCREEN_EXIT_INSTRUCTION: 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case FEB_TYPE_FULLSCREEN_MOUSELOCK_EXIT_INSTRUCTION: 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case FEB_TYPE_MOUSELOCK_EXIT_INSTRUCTION: 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case FEB_TYPE_BROWSER_FULLSCREEN_EXIT_INSTRUCTION: 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case FEB_TYPE_BROWSER_EXTENSION_FULLSCREEN_EXIT_INSTRUCTION: 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NOTREACHED(); // No button in this case. 108a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return base::string16(); 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NOTREACHED(); 111a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return base::string16(); 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool ShowButtonsForType(FullscreenExitBubbleType type) { 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return type == FEB_TYPE_FULLSCREEN_BUTTONS || 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) type == FEB_TYPE_FULLSCREEN_MOUSELOCK_BUTTONS || 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) type == FEB_TYPE_MOUSELOCK_BUTTONS; 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void PermissionRequestedByType(FullscreenExitBubbleType type, 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool* tab_fullscreen, 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool* mouse_lock) { 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (tab_fullscreen) { 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *tab_fullscreen = type == FEB_TYPE_FULLSCREEN_BUTTONS || 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) type == FEB_TYPE_FULLSCREEN_MOUSELOCK_BUTTONS; 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (mouse_lock) { 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *mouse_lock = type == FEB_TYPE_FULLSCREEN_MOUSELOCK_BUTTONS || 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) type == FEB_TYPE_MOUSELOCK_BUTTONS; 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 134ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch} // namespace fullscreen_bubble 135