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