Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(489)

Unified Diff: services/navigation/view_impl.cc

Issue 2901613002: Remove navigation_service_unittests, along with the service itself. (Closed)
Patch Set: Fix isolate files? Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « services/navigation/view_impl.h ('k') | testing/buildbot/chromium.linux.json » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: services/navigation/view_impl.cc
diff --git a/services/navigation/view_impl.cc b/services/navigation/view_impl.cc
deleted file mode 100644
index 90975f34009307ce364582606fd18eec03737ab5..0000000000000000000000000000000000000000
--- a/services/navigation/view_impl.cc
+++ /dev/null
@@ -1,320 +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 "services/navigation/view_impl.h"
-
-#include "base/memory/ptr_util.h"
-#include "base/strings/utf_string_conversions.h"
-#include "content/public/browser/browser_context.h"
-#include "content/public/browser/interstitial_page.h"
-#include "content/public/browser/interstitial_page_delegate.h"
-#include "content/public/browser/navigation_controller.h"
-#include "content/public/browser/navigation_details.h"
-#include "content/public/browser/navigation_entry.h"
-#include "content/public/browser/notification_details.h"
-#include "content/public/browser/notification_source.h"
-#include "content/public/browser/notification_types.h"
-#include "content/public/browser/web_contents.h"
-#include "services/service_manager/public/cpp/connector.h"
-#include "ui/aura/mus/window_tree_client.h"
-#include "ui/aura/mus/window_tree_host_mus.h"
-#include "ui/views/controls/webview/webview.h"
-#include "ui/views/widget/widget.h"
-#include "url/gurl.h"
-
-namespace navigation {
-namespace {
-
-class InterstitialPageDelegate : public content::InterstitialPageDelegate {
- public:
- explicit InterstitialPageDelegate(const std::string& html) : html_(html) {}
- ~InterstitialPageDelegate() override {}
- InterstitialPageDelegate(const InterstitialPageDelegate&) = delete;
- void operator=(const InterstitialPageDelegate&) = delete;
-
- private:
-
- // content::InterstitialPageDelegate:
- std::string GetHTMLContents() override {
- return html_;
- }
-
- const std::string html_;
-};
-
-// TODO(beng): Explicitly not writing a TypeConverter for this, and not doing a
-// typemap just yet since I'm still figuring out what these
-// interfaces should take as parameters.
-mojom::NavigationEntryPtr EntryPtrFromNavEntry(
- const content::NavigationEntry& entry) {
- mojom::NavigationEntryPtr entry_ptr(mojom::NavigationEntry::New());
- entry_ptr->id = entry.GetUniqueID();
- entry_ptr->url = entry.GetURL();
- entry_ptr->title = base::UTF16ToUTF8(entry.GetTitle());
- entry_ptr->redirect_chain = entry.GetRedirectChain();
- return entry_ptr;
-}
-
-} // namespace
-
-ViewImpl::ViewImpl(std::unique_ptr<service_manager::Connector> connector,
- const std::string& client_user_id,
- mojom::ViewClientPtr client,
- std::unique_ptr<service_manager::ServiceContextRef> ref)
- : connector_(std::move(connector)),
- client_(std::move(client)),
- ref_(std::move(ref)),
- web_view_(new views::WebView(
- content::BrowserContext::GetBrowserContextForServiceUserId(
- client_user_id))) {
- web_view_->GetWebContents()->SetDelegate(this);
- const content::NavigationController* controller =
- &web_view_->GetWebContents()->GetController();
- registrar_.Add(this, content::NOTIFICATION_NAV_ENTRY_PENDING,
- content::Source<content::NavigationController>(controller));
- registrar_.Add(this, content::NOTIFICATION_NAV_ENTRY_COMMITTED,
- content::Source<content::NavigationController>(controller));
- registrar_.Add(this, content::NOTIFICATION_NAV_LIST_PRUNED,
- content::Source<content::NavigationController>(controller));
- registrar_.Add(this, content::NOTIFICATION_NAV_ENTRY_CHANGED,
- content::Source<content::NavigationController>(controller));
-}
-
-ViewImpl::~ViewImpl() {
- DeleteTreeAndWidget();
-}
-
-void ViewImpl::DeleteTreeAndWidget() {
- widget_.reset();
- window_tree_host_.reset();
- window_tree_client_.reset();
-}
-
-void ViewImpl::NavigateTo(const GURL& url) {
- web_view_->GetWebContents()->GetController().LoadURL(
- url, content::Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
-}
-
-void ViewImpl::GoBack() {
- web_view_->GetWebContents()->GetController().GoBack();
-}
-
-void ViewImpl::GoForward() {
- web_view_->GetWebContents()->GetController().GoForward();
-}
-
-void ViewImpl::NavigateToOffset(int offset) {
- web_view_->GetWebContents()->GetController().GoToOffset(offset);
-}
-
-void ViewImpl::Reload(bool bypass_cache) {
- web_view_->GetWebContents()->GetController().Reload(
- bypass_cache ? content::ReloadType::BYPASSING_CACHE
- : content::ReloadType::NORMAL,
- true);
-}
-
-void ViewImpl::Stop() {
- web_view_->GetWebContents()->Stop();
-}
-
-void ViewImpl::GetWindowTreeClient(ui::mojom::WindowTreeClientRequest request) {
- window_tree_client_ = base::MakeUnique<aura::WindowTreeClient>(
- connector_.get(), this, nullptr, std::move(request));
-}
-
-void ViewImpl::ShowInterstitial(const std::string& html) {
- content::InterstitialPage* interstitial =
- content::InterstitialPage::Create(web_view_->GetWebContents(),
- false,
- GURL(),
- new InterstitialPageDelegate(html));
- interstitial->Show();
-}
-
-void ViewImpl::HideInterstitial() {
- // TODO(beng): this is not quite right.
- if (web_view_->GetWebContents()->ShowingInterstitialPage())
- web_view_->GetWebContents()->GetInterstitialPage()->Proceed();
-}
-
-void ViewImpl::AddNewContents(content::WebContents* source,
- content::WebContents* new_contents,
- WindowOpenDisposition disposition,
- const gfx::Rect& initial_rect,
- bool user_gesture,
- bool* was_blocked) {
- mojom::ViewClientPtr client;
- mojom::ViewPtr view;
- auto view_request = mojo::MakeRequest(&view);
- client_->ViewCreated(std::move(view), MakeRequest(&client),
- disposition == WindowOpenDisposition::NEW_POPUP,
- initial_rect, user_gesture);
-
- const std::string new_user_id =
- content::BrowserContext::GetServiceUserIdFor(
- new_contents->GetBrowserContext());
- auto impl = base::MakeUnique<ViewImpl>(connector_->Clone(), new_user_id,
- std::move(client), ref_->Clone());
-
- // TODO(beng): This is a bit crappy. should be able to create the ViewImpl
- // with |new_contents| instead.
- impl->web_view_->SetWebContents(new_contents);
- impl->web_view_->GetWebContents()->SetDelegate(impl.get());
-
- // TODO(beng): this reply is currently synchronous, figure out a fix.
- if (was_blocked)
- *was_blocked = false;
-
- mojo::MakeStrongBinding(std::move(impl), std::move(view_request));
-}
-
-void ViewImpl::CloseContents(content::WebContents* source) {
- client_->Close();
-}
-
-content::WebContents* ViewImpl::OpenURLFromTab(
- content::WebContents* source,
- const content::OpenURLParams& params) {
- mojom::OpenURLParamsPtr params_ptr = mojom::OpenURLParams::New();
- params_ptr->url = params.url;
- params_ptr->disposition =
- static_cast<mojom::WindowOpenDisposition>(params.disposition);
- client_->OpenURL(std::move(params_ptr));
- // TODO(beng): Obviously this is the wrong thing to return for dispositions
- // that would lead to the creation of a new View, i.e. NEW_TAB, NEW_POPUP etc.
- // However it seems the callers of this function that we've seen so far
- // disregard the return value. Rather than returning |source| I'm returning
- // nullptr to locate (via crash) any sites that depend on a valid result.
- // If we actually had to do this then we'd have to create the new WebContents
- // here, store it with a cookie, and pass the cookie through to the client to
- // pass back with their call to CreateView(), so it would get bound to the
- // WebContents.
- return nullptr;
-}
-
-void ViewImpl::LoadingStateChanged(content::WebContents* source,
- bool to_different_document) {
- client_->LoadingStateChanged(source->IsLoading());
-}
-
-void ViewImpl::NavigationStateChanged(content::WebContents* source,
- content::InvalidateTypes changed_flags) {
- client_->NavigationStateChanged(source->GetVisibleURL(),
- base::UTF16ToUTF8(source->GetTitle()),
- source->GetController().CanGoBack(),
- source->GetController().CanGoForward());
-}
-
-void ViewImpl::LoadProgressChanged(content::WebContents* source,
- double progress) {
- client_->LoadProgressChanged(progress);
-}
-
-void ViewImpl::UpdateTargetURL(content::WebContents* source, const GURL& url) {
- client_->UpdateHoverURL(url);
-}
-
-void ViewImpl::Observe(int type,
- const content::NotificationSource& source,
- const content::NotificationDetails& details) {
- if (content::Source<content::NavigationController>(source).ptr() !=
- &web_view_->GetWebContents()->GetController()) {
- return;
- }
-
- switch (type) {
- case content::NOTIFICATION_NAV_ENTRY_PENDING: {
- const content::NavigationEntry* entry =
- content::Details<content::NavigationEntry>(details).ptr();
- client_->NavigationPending(EntryPtrFromNavEntry(*entry));
- break;
- }
- case content::NOTIFICATION_NAV_ENTRY_COMMITTED: {
- const content::LoadCommittedDetails* lcd =
- content::Details<content::LoadCommittedDetails>(details).ptr();
- mojom::NavigationCommittedDetailsPtr details_ptr(
- mojom::NavigationCommittedDetails::New());
- details_ptr->entry = lcd->entry->GetUniqueID();
- details_ptr->type = static_cast<mojom::NavigationType>(lcd->type);
- details_ptr->previous_entry_index = lcd->previous_entry_index;
- details_ptr->previous_url = lcd->previous_url;
- details_ptr->is_in_page = lcd->is_same_document;
- details_ptr->is_main_frame = lcd->is_main_frame;
- details_ptr->http_status_code = lcd->http_status_code;
- client_->NavigationCommitted(
- std::move(details_ptr),
- web_view_->GetWebContents()->GetController().GetCurrentEntryIndex());
- break;
- }
- case content::NOTIFICATION_NAV_ENTRY_CHANGED: {
- const content::EntryChangedDetails* ecd =
- content::Details<content::EntryChangedDetails>(details).ptr();
- client_->NavigationEntryChanged(EntryPtrFromNavEntry(*ecd->changed_entry),
- ecd->index);
- break;
- }
- case content::NOTIFICATION_NAV_LIST_PRUNED: {
- const content::PrunedDetails* pd =
- content::Details<content::PrunedDetails>(details).ptr();
- client_->NavigationListPruned(pd->from_front, pd->count);
- break;
- }
- default:
- NOTREACHED();
- break;
- }
-}
-
-void ViewImpl::OnEmbed(
- std::unique_ptr<aura::WindowTreeHostMus> window_tree_host) {
- // TODO: Supplying a WindowTreeHostMus isn't particularly ideal in this case.
- // In particular it would be nice if the WindowTreeClientDelegate could create
- // its own WindowTreeHostMus, that way this code could directly create a
- // DesktopWindowTreeTreeHostMus.
- window_tree_host_ = std::move(window_tree_host);
- DCHECK(!widget_.get());
- // TODO: fix this. The following won't work if multiple WindowTreeClients
- // are used at the same time. The best fix is to have the ability to specify
- // a WindowTreeClient when DesktopNativeWidgetAura is created so that it can
- // create WindowPortMus with the correct client.
- widget_.reset(new views::Widget);
- views::Widget::InitParams params(
- views::Widget::InitParams::TYPE_WINDOW_FRAMELESS);
- params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
- params.delegate = this;
- widget_->Init(params);
- widget_->Show();
-}
-
-void ViewImpl::OnEmbedRootDestroyed(aura::WindowTreeHostMus* window_tree_host) {
- DCHECK_EQ(window_tree_host, window_tree_host_.get());
- DeleteTreeAndWidget();
-}
-
-void ViewImpl::OnLostConnection(aura::WindowTreeClient* client) {
- DeleteTreeAndWidget();
-}
-
-void ViewImpl::OnPointerEventObserved(const ui::PointerEvent& event,
- aura::Window* target) {}
-
-aura::PropertyConverter* ViewImpl::GetPropertyConverter() {
- // TODO: wire this up.
- return nullptr;
-}
-
-views::View* ViewImpl::GetContentsView() {
- return web_view_;
-}
-
-views::Widget* ViewImpl::GetWidget() {
- return web_view_->GetWidget();
-}
-
-const views::Widget* ViewImpl::GetWidget() const {
- return web_view_->GetWidget();
-}
-
-} // navigation
« no previous file with comments | « services/navigation/view_impl.h ('k') | testing/buildbot/chromium.linux.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698