| Index: mash/webtest/webtest.cc
|
| diff --git a/mash/webtest/webtest.cc b/mash/webtest/webtest.cc
|
| deleted file mode 100644
|
| index e165854cd2c5dd42cda949a46cdb579cc4ee880e..0000000000000000000000000000000000000000
|
| --- a/mash/webtest/webtest.cc
|
| +++ /dev/null
|
| @@ -1,213 +0,0 @@
|
| -// Copyright 2016 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 "mash/webtest/webtest.h"
|
| -
|
| -#include "base/macros.h"
|
| -#include "base/memory/ptr_util.h"
|
| -#include "base/memory/weak_ptr.h"
|
| -#include "base/message_loop/message_loop.h"
|
| -#include "base/strings/string16.h"
|
| -#include "base/strings/string_util.h"
|
| -#include "base/strings/utf_string_conversions.h"
|
| -#include "base/timer/timer.h"
|
| -#include "mash/public/interfaces/launchable.mojom.h"
|
| -#include "services/navigation/public/interfaces/view.mojom.h"
|
| -#include "services/service_manager/public/c/main.h"
|
| -#include "services/service_manager/public/cpp/connector.h"
|
| -#include "services/service_manager/public/cpp/service.h"
|
| -#include "services/service_manager/public/cpp/service_context.h"
|
| -#include "services/service_manager/public/cpp/service_runner.h"
|
| -#include "ui/aura/mus/window_port_mus.h"
|
| -#include "ui/aura/window.h"
|
| -#include "ui/gfx/canvas.h"
|
| -#include "ui/gfx/paint_throbber.h"
|
| -#include "ui/native_theme/native_theme.h"
|
| -#include "ui/views/background.h"
|
| -#include "ui/views/controls/button/label_button.h"
|
| -#include "ui/views/controls/textfield/textfield.h"
|
| -#include "ui/views/controls/textfield/textfield_controller.h"
|
| -#include "ui/views/mus/aura_init.h"
|
| -#include "ui/views/widget/widget.h"
|
| -#include "ui/views/widget/widget_delegate.h"
|
| -#include "url/gurl.h"
|
| -
|
| -namespace views {
|
| -class AuraInit;
|
| -}
|
| -
|
| -namespace mash {
|
| -namespace webtest {
|
| -namespace {
|
| -
|
| -// Callback from Embed().
|
| -void EmbedCallback(bool result) {}
|
| -
|
| -} // namespace
|
| -
|
| -class UI : public views::WidgetDelegateView,
|
| - public navigation::mojom::ViewClient {
|
| - public:
|
| - UI(Webtest* webtest,
|
| - navigation::mojom::ViewPtr view,
|
| - navigation::mojom::ViewClientRequest request)
|
| - : webtest_(webtest),
|
| - view_(std::move(view)),
|
| - view_client_binding_(this, std::move(request)) {}
|
| - ~UI() override {
|
| - webtest_->RemoveWindow(GetWidget());
|
| - }
|
| -
|
| - void NavigateTo(const GURL& url) {
|
| - view_->NavigateTo(url);
|
| - }
|
| -
|
| - private:
|
| - // Overridden from views::WidgetDelegate:
|
| - base::string16 GetWindowTitle() const override {
|
| - // TODO(beng): use resources.
|
| - if (current_title_.empty())
|
| - return base::ASCIIToUTF16("navigation::View client");
|
| - base::string16 format = base::ASCIIToUTF16("%s - navigation::View client");
|
| - base::ReplaceFirstSubstringAfterOffset(
|
| - &format, 0, base::ASCIIToUTF16("%s"), current_title_);
|
| - return format;
|
| - }
|
| - bool CanResize() const override { return true; }
|
| - bool CanMaximize() const override { return true; }
|
| - bool CanMinimize() const override { return true; }
|
| -
|
| - // Overridden from views::View:
|
| - void Layout() override {
|
| - gfx::Rect local_bounds = GetLocalBounds();
|
| - if (content_area_) {
|
| - gfx::Point offset = local_bounds.origin();
|
| - ConvertPointToWidget(this, &offset);
|
| - int width = local_bounds.width();
|
| - int height = local_bounds.height();
|
| - content_area_->SetBounds(
|
| - gfx::Rect(offset.x(), offset.y(), width, height));
|
| - }
|
| - }
|
| - void ViewHierarchyChanged(
|
| - const views::View::ViewHierarchyChangedDetails& details) override {
|
| - if (details.is_add && GetWidget() && !content_area_) {
|
| - aura::Window* window = GetWidget()->GetNativeWindow();
|
| - content_area_ = new aura::Window(nullptr);
|
| - content_area_->Init(ui::LAYER_NOT_DRAWN);
|
| - window->AddChild(content_area_);
|
| -
|
| - ui::mojom::WindowTreeClientPtr client;
|
| - view_->GetWindowTreeClient(MakeRequest(&client));
|
| - const uint32_t embed_flags = 0; // Nothing special.
|
| - aura::WindowPortMus::Get(content_area_)
|
| - ->Embed(std::move(client), embed_flags, base::Bind(&EmbedCallback));
|
| - }
|
| - }
|
| -
|
| - // navigation::mojom::ViewClient:
|
| - void OpenURL(navigation::mojom::OpenURLParamsPtr params) override {}
|
| - void LoadingStateChanged(bool is_loading) override {}
|
| - void NavigationStateChanged(const GURL& url,
|
| - const std::string& title,
|
| - bool can_go_back,
|
| - bool can_go_forward) override {
|
| - current_title_ = base::UTF8ToUTF16(title);
|
| - GetWidget()->UpdateWindowTitle();
|
| - }
|
| - void LoadProgressChanged(double progress) override {}
|
| - void UpdateHoverURL(const GURL& url) override {}
|
| - void ViewCreated(navigation::mojom::ViewPtr view,
|
| - navigation::mojom::ViewClientRequest request,
|
| - bool is_popup,
|
| - const gfx::Rect& initial_rect,
|
| - bool user_gesture) override {
|
| - views::Widget* window = views::Widget::CreateWindowWithContextAndBounds(
|
| - new UI(webtest_, std::move(view), std::move(request)), nullptr,
|
| - initial_rect);
|
| - window->Show();
|
| - webtest_->AddWindow(window);
|
| - }
|
| - void Close() override {
|
| - GetWidget()->Close();
|
| - }
|
| - void NavigationPending(navigation::mojom::NavigationEntryPtr entry) override {
|
| - }
|
| - void NavigationCommitted(
|
| - navigation::mojom::NavigationCommittedDetailsPtr details,
|
| - int current_index) override {}
|
| - void NavigationEntryChanged(navigation::mojom::NavigationEntryPtr entry,
|
| - int entry_index) override {}
|
| - void NavigationListPruned(bool from_front, int count) override {}
|
| -
|
| - Webtest* webtest_;
|
| - aura::Window* content_area_ = nullptr;
|
| - navigation::mojom::ViewPtr view_;
|
| - mojo::Binding<navigation::mojom::ViewClient> view_client_binding_;
|
| - base::string16 current_title_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(UI);
|
| -};
|
| -
|
| -Webtest::Webtest() {
|
| - registry_.AddInterface<mojom::Launchable>(
|
| - base::Bind(&Webtest::Create, base::Unretained(this)));
|
| -}
|
| -Webtest::~Webtest() {}
|
| -
|
| -void Webtest::AddWindow(views::Widget* window) {
|
| - windows_.push_back(window);
|
| -}
|
| -
|
| -void Webtest::RemoveWindow(views::Widget* window) {
|
| - auto it = std::find(windows_.begin(), windows_.end(), window);
|
| - DCHECK(it != windows_.end());
|
| - windows_.erase(it);
|
| - if (windows_.empty())
|
| - base::MessageLoop::current()->QuitWhenIdle();
|
| -}
|
| -
|
| -void Webtest::OnStart() {
|
| - aura_init_ = base::MakeUnique<views::AuraInit>(
|
| - context()->connector(), context()->identity(), "views_mus_resources.pak",
|
| - std::string(), nullptr, views::AuraInit::Mode::AURA_MUS);
|
| -}
|
| -
|
| -void Webtest::OnBindInterface(
|
| - const service_manager::BindSourceInfo& source_info,
|
| - const std::string& interface_name,
|
| - mojo::ScopedMessagePipeHandle interface_pipe) {
|
| - registry_.BindInterface(source_info, interface_name,
|
| - std::move(interface_pipe));
|
| -}
|
| -
|
| -void Webtest::Launch(uint32_t what, mojom::LaunchMode how) {
|
| - bool reuse = how == mojom::LaunchMode::REUSE ||
|
| - how == mojom::LaunchMode::DEFAULT;
|
| - if (reuse && !windows_.empty()) {
|
| - windows_.back()->Activate();
|
| - return;
|
| - }
|
| -
|
| - navigation::mojom::ViewFactoryPtr view_factory;
|
| - context()->connector()->BindInterface("navigation", &view_factory);
|
| - navigation::mojom::ViewPtr view;
|
| - navigation::mojom::ViewClientPtr view_client;
|
| - auto view_client_request = mojo::MakeRequest(&view_client);
|
| - view_factory->CreateView(std::move(view_client), MakeRequest(&view));
|
| - UI* ui = new UI(this, std::move(view), std::move(view_client_request));
|
| - views::Widget* window = views::Widget::CreateWindowWithContextAndBounds(
|
| - ui, nullptr, gfx::Rect(50, 10, 600, 600));
|
| - ui->NavigateTo(GURL("http://www.theverge.com/"));
|
| - window->Show();
|
| - AddWindow(window);
|
| -}
|
| -
|
| -void Webtest::Create(const service_manager::BindSourceInfo& source_info,
|
| - mojom::LaunchableRequest request) {
|
| - bindings_.AddBinding(this, std::move(request));
|
| -}
|
| -
|
| -} // namespace webtest
|
| -} // namespace mash
|
|
|