blob: 9fa188d486db52c04595f1ed26e976fb34c3af9e [file] [log] [blame]
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/ui/exclusive_access/exclusive_access_bubble_type.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/common/url_constants.h"
#include "chrome/grit/generated_resources.h"
#include "extensions/browser/extension_registry.h"
#include "extensions/common/constants.h"
#include "extensions/common/extension.h"
#include "extensions/common/extension_set.h"
#include "ui/base/l10n/l10n_util.h"
namespace exclusive_access_bubble {
base::string16 GetLabelTextForType(ExclusiveAccessBubbleType type,
const GURL& url,
extensions::ExtensionRegistry* registry) {
base::string16 host(base::UTF8ToUTF16(url.host()));
if (registry) {
const extensions::Extension* extension =
registry->enabled_extensions().GetExtensionOrAppByURL(url);
if (extension) {
host = base::UTF8ToUTF16(extension->name());
} else if (url.SchemeIs(extensions::kExtensionScheme)) {
// In this case, |host| is set to an extension ID.
// We are not going to show it because it's human-unreadable.
host.clear();
}
}
if (host.empty()) {
switch (type) {
case EXCLUSIVE_ACCESS_BUBBLE_TYPE_FULLSCREEN_EXIT_INSTRUCTION:
case EXCLUSIVE_ACCESS_BUBBLE_TYPE_KEYBOARD_LOCK_EXIT_INSTRUCTION:
return l10n_util::GetStringUTF16(IDS_FULLSCREEN_ENTERED_FULLSCREEN);
case EXCLUSIVE_ACCESS_BUBBLE_TYPE_FULLSCREEN_MOUSELOCK_EXIT_INSTRUCTION:
return l10n_util::GetStringUTF16(
IDS_FULLSCREEN_ENTERED_FULLSCREEN_MOUSELOCK);
case EXCLUSIVE_ACCESS_BUBBLE_TYPE_MOUSELOCK_EXIT_INSTRUCTION:
return l10n_util::GetStringUTF16(IDS_FULLSCREEN_ENTERED_MOUSELOCK);
case EXCLUSIVE_ACCESS_BUBBLE_TYPE_BROWSER_FULLSCREEN_EXIT_INSTRUCTION:
return l10n_util::GetStringUTF16(
IDS_FULLSCREEN_USER_ENTERED_FULLSCREEN);
case EXCLUSIVE_ACCESS_BUBBLE_TYPE_EXTENSION_FULLSCREEN_EXIT_INSTRUCTION:
return l10n_util::GetStringUTF16(
IDS_FULLSCREEN_UNKNOWN_EXTENSION_TRIGGERED_FULLSCREEN);
case EXCLUSIVE_ACCESS_BUBBLE_TYPE_NONE:
NOTREACHED();
return base::string16();
}
NOTREACHED();
return base::string16();
}
switch (type) {
case EXCLUSIVE_ACCESS_BUBBLE_TYPE_FULLSCREEN_EXIT_INSTRUCTION:
case EXCLUSIVE_ACCESS_BUBBLE_TYPE_KEYBOARD_LOCK_EXIT_INSTRUCTION:
return l10n_util::GetStringFUTF16(IDS_FULLSCREEN_SITE_ENTERED_FULLSCREEN,
host);
case EXCLUSIVE_ACCESS_BUBBLE_TYPE_FULLSCREEN_MOUSELOCK_EXIT_INSTRUCTION:
return l10n_util::GetStringFUTF16(
IDS_FULLSCREEN_SITE_ENTERED_FULLSCREEN_MOUSELOCK, host);
case EXCLUSIVE_ACCESS_BUBBLE_TYPE_MOUSELOCK_EXIT_INSTRUCTION:
return l10n_util::GetStringFUTF16(IDS_FULLSCREEN_SITE_ENTERED_MOUSELOCK,
host);
case EXCLUSIVE_ACCESS_BUBBLE_TYPE_BROWSER_FULLSCREEN_EXIT_INSTRUCTION:
return l10n_util::GetStringUTF16(IDS_FULLSCREEN_USER_ENTERED_FULLSCREEN);
case EXCLUSIVE_ACCESS_BUBBLE_TYPE_EXTENSION_FULLSCREEN_EXIT_INSTRUCTION:
return l10n_util::GetStringFUTF16(
IDS_FULLSCREEN_EXTENSION_TRIGGERED_FULLSCREEN, host);
case EXCLUSIVE_ACCESS_BUBBLE_TYPE_NONE:
NOTREACHED();
return base::string16();
}
NOTREACHED();
return base::string16();
}
base::string16 GetDenyButtonTextForType(ExclusiveAccessBubbleType type) {
switch (type) {
case EXCLUSIVE_ACCESS_BUBBLE_TYPE_FULLSCREEN_EXIT_INSTRUCTION:
case EXCLUSIVE_ACCESS_BUBBLE_TYPE_KEYBOARD_LOCK_EXIT_INSTRUCTION:
case EXCLUSIVE_ACCESS_BUBBLE_TYPE_FULLSCREEN_MOUSELOCK_EXIT_INSTRUCTION:
case EXCLUSIVE_ACCESS_BUBBLE_TYPE_MOUSELOCK_EXIT_INSTRUCTION:
case EXCLUSIVE_ACCESS_BUBBLE_TYPE_BROWSER_FULLSCREEN_EXIT_INSTRUCTION:
case EXCLUSIVE_ACCESS_BUBBLE_TYPE_EXTENSION_FULLSCREEN_EXIT_INSTRUCTION:
case EXCLUSIVE_ACCESS_BUBBLE_TYPE_NONE:
NOTREACHED(); // No button in this case.
return base::string16();
}
NOTREACHED();
return base::string16();
}
base::string16 GetAllowButtonTextForType(ExclusiveAccessBubbleType type,
const GURL& url) {
switch (type) {
case EXCLUSIVE_ACCESS_BUBBLE_TYPE_FULLSCREEN_EXIT_INSTRUCTION:
case EXCLUSIVE_ACCESS_BUBBLE_TYPE_KEYBOARD_LOCK_EXIT_INSTRUCTION:
case EXCLUSIVE_ACCESS_BUBBLE_TYPE_FULLSCREEN_MOUSELOCK_EXIT_INSTRUCTION:
case EXCLUSIVE_ACCESS_BUBBLE_TYPE_MOUSELOCK_EXIT_INSTRUCTION:
case EXCLUSIVE_ACCESS_BUBBLE_TYPE_BROWSER_FULLSCREEN_EXIT_INSTRUCTION:
case EXCLUSIVE_ACCESS_BUBBLE_TYPE_EXTENSION_FULLSCREEN_EXIT_INSTRUCTION:
case EXCLUSIVE_ACCESS_BUBBLE_TYPE_NONE:
NOTREACHED(); // No button in this case.
return base::string16();
}
NOTREACHED();
return base::string16();
}
base::string16 GetInstructionTextForType(ExclusiveAccessBubbleType type,
const base::string16& accelerator) {
switch (type) {
case EXCLUSIVE_ACCESS_BUBBLE_TYPE_FULLSCREEN_EXIT_INSTRUCTION:
case EXCLUSIVE_ACCESS_BUBBLE_TYPE_FULLSCREEN_MOUSELOCK_EXIT_INSTRUCTION:
case EXCLUSIVE_ACCESS_BUBBLE_TYPE_BROWSER_FULLSCREEN_EXIT_INSTRUCTION:
case EXCLUSIVE_ACCESS_BUBBLE_TYPE_EXTENSION_FULLSCREEN_EXIT_INSTRUCTION:
// Both fullscreen and fullscreen + mouselock have the same message (the
// user does not care about mouse lock when in fullscreen mode). All ways
// to trigger fullscreen result in the same message.
return l10n_util::GetStringFUTF16(
IDS_FULLSCREEN_PRESS_ESC_TO_EXIT_FULLSCREEN, accelerator);
case EXCLUSIVE_ACCESS_BUBBLE_TYPE_KEYBOARD_LOCK_EXIT_INSTRUCTION:
return l10n_util::GetStringFUTF16(
IDS_FULLSCREEN_HOLD_ESC_TO_EXIT_FULLSCREEN, accelerator);
case EXCLUSIVE_ACCESS_BUBBLE_TYPE_MOUSELOCK_EXIT_INSTRUCTION:
return l10n_util::GetStringFUTF16(
IDS_FULLSCREEN_PRESS_ESC_TO_EXIT_MOUSELOCK, accelerator);
case EXCLUSIVE_ACCESS_BUBBLE_TYPE_NONE:
NOTREACHED();
return base::string16();
}
NOTREACHED();
return base::string16();
}
} // namespace exclusive_access_bubble