summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormgiuca <mgiuca@chromium.org>2015-12-10 22:12:36 -0800
committerCommit bot <commit-bot@chromium.org>2015-12-11 06:13:38 +0000
commitbd30acbde7f2cb039b261ccb3b0e255b2d654050 (patch)
treeaa08950c6a1f2931adf7df23fa8e7383d6fdfa89
parent696038970f152cf9e1bd8640f8a2eb1a5c7da1f7 (diff)
downloadchromium_src-bd30acbde7f2cb039b261ccb3b0e255b2d654050.zip
chromium_src-bd30acbde7f2cb039b261ccb3b0e255b2d654050.tar.gz
chromium_src-bd30acbde7f2cb039b261ccb3b0e255b2d654050.tar.bz2
Simplified fullscreen bubble: Always show the correct key to press.
When using the --enable-simplified-fullscreen-ui flag, pressing F11 to enter fullscreen would show "Press Esc to exit". Now it correctly says "Press F11 to exit". This requires a bit of a refactor so that the exit instruction can be dynamically updated. Note that this refactor will be needed in future anyway (to support changing between mouse lock and fullscreen while the bubble is open). BUG=352425,567974 Review URL: https://codereview.chromium.org/1509363002 Cr-Commit-Position: refs/heads/master@{#364624}
-rw-r--r--chrome/browser/ui/exclusive_access/exclusive_access_bubble.cc10
-rw-r--r--chrome/browser/ui/exclusive_access/exclusive_access_bubble.h4
-rw-r--r--chrome/browser/ui/views/exclusive_access_bubble_views.cc89
3 files changed, 63 insertions, 40 deletions
diff --git a/chrome/browser/ui/exclusive_access/exclusive_access_bubble.cc b/chrome/browser/ui/exclusive_access/exclusive_access_bubble.cc
index fe4de87..292a872 100644
--- a/chrome/browser/ui/exclusive_access/exclusive_access_bubble.cc
+++ b/chrome/browser/ui/exclusive_access/exclusive_access_bubble.cc
@@ -177,15 +177,15 @@ base::string16 ExclusiveAccessBubble::GetCurrentAllowButtonText() const {
return exclusive_access_bubble::GetAllowButtonTextForType(bubble_type_, url_);
}
-base::string16 ExclusiveAccessBubble::GetInstructionText() const {
+base::string16 ExclusiveAccessBubble::GetInstructionText(
+ const base::string16& accelerator) const {
if (!ExclusiveAccessManager::IsSimplifiedFullscreenUIEnabled()) {
- return l10n_util::GetStringFUTF16(
- IDS_FULLSCREEN_PRESS_ESC_TO_EXIT_SENTENCE,
- l10n_util::GetStringUTF16(IDS_APP_ESC_KEY));
+ return l10n_util::GetStringFUTF16(IDS_FULLSCREEN_PRESS_ESC_TO_EXIT_SENTENCE,
+ accelerator);
}
return l10n_util::GetStringFUTF16(IDS_FULLSCREEN_PRESS_ESC_TO_EXIT,
- l10n_util::GetStringUTF16(IDS_APP_ESC_KEY));
+ accelerator);
}
void ExclusiveAccessBubble::ShowAndStartTimers() {
diff --git a/chrome/browser/ui/exclusive_access/exclusive_access_bubble.h b/chrome/browser/ui/exclusive_access/exclusive_access_bubble.h
index 049df29..1d13e46 100644
--- a/chrome/browser/ui/exclusive_access/exclusive_access_bubble.h
+++ b/chrome/browser/ui/exclusive_access/exclusive_access_bubble.h
@@ -95,10 +95,10 @@ class ExclusiveAccessBubble : public gfx::AnimationDelegate {
base::string16 GetCurrentDenyButtonText() const;
base::string16 GetCurrentAllowButtonText() const;
- // The following strings never change.
// This string *may* contain the name of the key surrounded in pipe characters
// ('|'), which should be drawn graphically as a key, not displayed literally.
- base::string16 GetInstructionText() const;
+ // |accelerator| is the name of the key to exit fullscreen mode.
+ base::string16 GetInstructionText(const base::string16& accelerator) const;
// The Manager associated with this bubble.
ExclusiveAccessManager* const manager_;
diff --git a/chrome/browser/ui/views/exclusive_access_bubble_views.cc b/chrome/browser/ui/views/exclusive_access_bubble_views.cc
index 67636b2..fe7e770 100644
--- a/chrome/browser/ui/views/exclusive_access_bubble_views.cc
+++ b/chrome/browser/ui/views/exclusive_access_bubble_views.cc
@@ -98,7 +98,14 @@ class InstructionView : public views::View {
SkColor foreground_color,
SkColor background_color);
+ void SetText(const base::string16& text);
+
private:
+ views::Label* before_key_;
+ views::Label* key_name_label_;
+ views::View* key_name_;
+ views::Label* after_key_;
+
DISALLOW_COPY_AND_ASSIGN(InstructionView);
};
@@ -106,13 +113,6 @@ InstructionView::InstructionView(const base::string16& text,
const gfx::FontList& font_list,
SkColor foreground_color,
SkColor background_color) {
- // Parse |text|, looking for pipe-delimited segment.
- std::vector<base::string16> segments =
- base::SplitString(text, base::ASCIIToUTF16("|"), base::TRIM_WHITESPACE,
- base::SPLIT_WANT_ALL);
- // Expect 1 or 3 pieces (either no pipe-delimited segments, or one).
- DCHECK(segments.size() == 1 || segments.size() == 3);
-
// Spacing around the escape key name.
const int kKeyNameMarginHorizPx = 7;
const int kKeyNameBorderPx = 1;
@@ -124,33 +124,55 @@ InstructionView::InstructionView(const base::string16& text,
0, 0, kKeyNameMarginHorizPx);
SetLayoutManager(layout);
- views::Label* before_key = new views::Label(segments[0], font_list);
- before_key->SetEnabledColor(foreground_color);
- before_key->SetBackgroundColor(background_color);
- AddChildView(before_key);
-
- if (segments.size() < 3)
- return;
+ before_key_ = new views::Label(base::string16(), font_list);
+ before_key_->SetEnabledColor(foreground_color);
+ before_key_->SetBackgroundColor(background_color);
+ AddChildView(before_key_);
- views::Label* key_name_label = new views::Label(segments[1], font_list);
- key_name_label->SetEnabledColor(foreground_color);
- key_name_label->SetBackgroundColor(background_color);
+ key_name_label_ = new views::Label(base::string16(), font_list);
+ key_name_label_->SetEnabledColor(foreground_color);
+ key_name_label_->SetBackgroundColor(background_color);
- views::View* key_name = new views::View;
+ key_name_ = new views::View;
views::BoxLayout* key_name_layout = new views::BoxLayout(
views::BoxLayout::kHorizontal, kKeyNamePaddingPx, kKeyNamePaddingPx, 0);
- key_name->SetLayoutManager(key_name_layout);
- key_name->AddChildView(key_name_label);
+ key_name_->SetLayoutManager(key_name_layout);
+ key_name_->AddChildView(key_name_label_);
// The key name has a border around it.
scoped_ptr<views::Border> border(views::Border::CreateRoundedRectBorder(
kKeyNameBorderPx, kKeyNameCornerRadius, foreground_color));
- key_name->SetBorder(border.Pass());
- AddChildView(key_name);
+ key_name_->SetBorder(border.Pass());
+ AddChildView(key_name_);
- views::Label* after_key = new views::Label(segments[2], font_list);
- after_key->SetEnabledColor(foreground_color);
- after_key->SetBackgroundColor(background_color);
- AddChildView(after_key);
+ after_key_ = new views::Label(base::string16(), font_list);
+ after_key_->SetEnabledColor(foreground_color);
+ after_key_->SetBackgroundColor(background_color);
+ AddChildView(after_key_);
+
+ SetText(text);
+}
+
+void InstructionView::SetText(const base::string16& text) {
+ // Parse |text|, looking for pipe-delimited segment.
+ std::vector<base::string16> segments =
+ base::SplitString(text, base::ASCIIToUTF16("|"), base::TRIM_WHITESPACE,
+ base::SPLIT_WANT_ALL);
+ // Expect 1 or 3 pieces (either no pipe-delimited segments, or one).
+ DCHECK(segments.size() <= 1 || segments.size() == 3);
+
+ before_key_->SetText(segments.size() ? segments[0] : base::string16());
+
+ if (segments.size() < 3) {
+ key_name_->SetVisible(false);
+ after_key_->SetVisible(false);
+ return;
+ }
+
+ before_key_->SetText(segments[0]);
+ key_name_label_->SetText(segments[1]);
+ key_name_->SetVisible(true);
+ after_key_->SetVisible(true);
+ after_key_->SetText(segments[2]);
}
} // namespace
@@ -244,9 +266,8 @@ ExclusiveAccessBubbleViews::ExclusiveAccessView::ExclusiveAccessView(
message_label_->SetBackgroundColor(background_color);
}
- exit_instruction_ =
- new InstructionView(bubble_->GetInstructionText(), font_list,
- foreground_color, background_color);
+ exit_instruction_ = new InstructionView(base::string16(), font_list,
+ foreground_color, background_color);
link_ = new views::Link();
link_->SetFocusable(false);
@@ -330,11 +351,12 @@ void ExclusiveAccessBubbleViews::ExclusiveAccessView::UpdateContent(
bubble_type ==
EXCLUSIVE_ACCESS_BUBBLE_TYPE_EXTENSION_FULLSCREEN_EXIT_INSTRUCTION) {
accelerator = browser_fullscreen_exit_accelerator_;
- } else if (bubble_type ==
- EXCLUSIVE_ACCESS_BUBBLE_TYPE_FULLSCREEN_EXIT_INSTRUCTION) {
- accelerator = l10n_util::GetStringUTF16(IDS_APP_ESC_KEY);
} else {
- link_visible = false;
+ accelerator = l10n_util::GetStringUTF16(IDS_APP_ESC_KEY);
+ if (bubble_type !=
+ EXCLUSIVE_ACCESS_BUBBLE_TYPE_FULLSCREEN_EXIT_INSTRUCTION) {
+ link_visible = false;
+ }
}
#if !defined(OS_CHROMEOS)
if (link_visible) {
@@ -345,6 +367,7 @@ void ExclusiveAccessBubbleViews::ExclusiveAccessView::UpdateContent(
}
#endif
link_->SetVisible(link_visible);
+ exit_instruction_->SetText(bubble_->GetInstructionText(accelerator));
exit_instruction_->SetVisible(!link_visible);
button_view_->SetVisible(false);
}