Home | History | Annotate | Download | only in fullscreen
      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.h"
     10 #include "chrome/common/extensions/extension_set.h"
     11 #include "chrome/common/url_constants.h"
     12 #include "extensions/common/constants.h"
     13 #include "grit/generated_resources.h"
     14 #include "ui/base/l10n/l10n_util.h"
     15 
     16 namespace fullscreen_bubble {
     17 
     18 string16 GetLabelTextForType(FullscreenExitBubbleType type,
     19                              const GURL& url,
     20                              ExtensionService* extension_service) {
     21   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 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 string16();
     90   }
     91 }
     92 
     93 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 string16();
    108     default:
    109       NOTREACHED();
    110       return 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