Commit 11f869b2 authored by Jennifer Apacible's avatar Jennifer Apacible Committed by Commit Bot

[OverlayWindow] Add custom WidgetDelegate.

Add a custom WidgetDelegate for OverlayWindowViews. This is used to
control more of the behaviour of OverlayWindow. This also adds a
placeholder window title string. Non-trivial beheaviour will be added
with more guidance from UX.

Bug: 726621
Change-Id: I7d6eae901248f90d8cbebc9bc4bd6e52aa7f714d
Reviewed-on: https://chromium-review.googlesource.com/722453
Commit-Queue: apacible <apacible@chromium.org>
Reviewed-by: default avatarMounir Lamouri <mlamouri@chromium.org>
Cr-Commit-Position: refs/heads/master@{#509980}
parent e080e9d3
......@@ -5904,6 +5904,11 @@ I don't think this site should be blocked!
Turn on autoupdate
</message>
<!-- Picture in Picture -->
<message name="IDS_PICTURE_IN_PICTURE_TITLE_TEXT" desc="Title of the picture in picture window. This appears in the system tray and window header.">
Picture in Picture
</message>
<!-- Print -->
<message name="IDS_DEFAULT_PRINT_DOCUMENT_TITLE" desc="Default title for a print document">
Untitled Document
......
......@@ -4,13 +4,41 @@
#include "chrome/browser/ui/views/overlay/overlay_window_views.h"
#include "chrome/grit/generated_resources.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/views/widget/widget.h"
#include "ui/views/widget/widget_delegate.h"
// static
std::unique_ptr<OverlayWindow> OverlayWindow::Create() {
return base::WrapUnique(new OverlayWindowViews());
}
// OverlayWindow implementation of WidgetDelegate.
class OverlayWindowWidgetDelegate : public views::WidgetDelegate {
public:
explicit OverlayWindowWidgetDelegate(views::Widget* widget)
: widget_(widget) {
DCHECK(widget_);
}
~OverlayWindowWidgetDelegate() override = default;
// WidgetDelegate:
bool CanResize() const override { return true; }
ui::ModalType GetModalType() const override { return ui::MODAL_TYPE_SYSTEM; }
base::string16 GetWindowTitle() const override {
return l10n_util::GetStringUTF16(IDS_PICTURE_IN_PICTURE_TITLE_TEXT);
}
views::Widget* GetWidget() override { return widget_; }
const views::Widget* GetWidget() const override { return widget_; }
private:
// Owns OverlayWindowWidgetDelegate.
views::Widget* widget_;
DISALLOW_COPY_AND_ASSIGN(OverlayWindowWidgetDelegate);
};
OverlayWindowViews::OverlayWindowViews() {
widget_.reset(new views::Widget());
}
......@@ -28,11 +56,11 @@ void OverlayWindowViews::Init() {
params.keep_on_top = true;
params.visible_on_all_workspaces = true;
// Set WidgetDelegate for more control over |widget_|.
params.delegate = new OverlayWindowWidgetDelegate(widget_.get());
widget_->Init(params);
widget_->Show();
// TODO(apacible): Set the WidgetDelegate for more control over behavior.
// http://crbug/726621
}
bool OverlayWindowViews::IsActive() const {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment