| Index: blimp/engine/session/tab.cc
|
| diff --git a/blimp/engine/session/tab.cc b/blimp/engine/session/tab.cc
|
| deleted file mode 100644
|
| index 4373994fed2db92ab5c093004069ceeb539b9818..0000000000000000000000000000000000000000
|
| --- a/blimp/engine/session/tab.cc
|
| +++ /dev/null
|
| @@ -1,218 +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 "blimp/engine/session/tab.h"
|
| -
|
| -#include "base/strings/utf_string_conversions.h"
|
| -#include "base/trace_event/trace_event.h"
|
| -#include "blimp/common/create_blimp_message.h"
|
| -#include "blimp/common/proto/blimp_message.pb.h"
|
| -#include "blimp/common/proto/render_widget.pb.h"
|
| -#include "blimp/common/proto/tab_control.pb.h"
|
| -#include "blimp/engine/common/blimp_user_agent.h"
|
| -#include "blimp/engine/feature/engine_render_widget_feature.h"
|
| -#include "blimp/net/blimp_message_processor.h"
|
| -#include "content/public/browser/navigation_controller.h"
|
| -#include "content/public/browser/navigation_entry.h"
|
| -#include "content/public/browser/render_view_host.h"
|
| -#include "content/public/browser/render_widget_host.h"
|
| -#include "content/public/browser/render_widget_host_view.h"
|
| -#include "content/public/browser/web_contents.h"
|
| -#include "content/public/common/form_field_data.h"
|
| -#include "content/public/common/renderer_preferences.h"
|
| -#include "ui/aura/window.h"
|
| -#include "ui/gfx/geometry/size.h"
|
| -
|
| -namespace blimp {
|
| -namespace engine {
|
| -
|
| -Tab::Tab(std::unique_ptr<content::WebContents> web_contents,
|
| - const int tab_id,
|
| - EngineRenderWidgetFeature* render_widget_feature,
|
| - BlimpMessageProcessor* navigation_message_sender)
|
| - : web_contents_(std::move(web_contents)),
|
| - tab_id_(tab_id),
|
| - render_widget_feature_(render_widget_feature),
|
| - navigation_message_sender_(navigation_message_sender),
|
| - page_load_tracker_(web_contents_.get(), this),
|
| - current_form_request_id_(0),
|
| - weak_factory_(this) {
|
| - DCHECK(render_widget_feature_);
|
| - DCHECK(navigation_message_sender_);
|
| -
|
| - // A Tab is created upon client's request, thus an updated
|
| - // user agent info (containing client OS info) is available, and we will use
|
| - // that to override user agent string from BlimpContentRendererClient.
|
| - web_contents_->SetUserAgentOverride(GetBlimpEngineUserAgent());
|
| -
|
| - render_widget_feature_->SetDelegate(tab_id_, this);
|
| -
|
| - Observe(web_contents_.get());
|
| -}
|
| -
|
| -Tab::~Tab() {
|
| - render_widget_feature_->RemoveDelegate(tab_id_);
|
| -}
|
| -
|
| -void Tab::Resize(float device_pixel_ratio, const gfx::Size& size_in_dips) {
|
| - DVLOG(1) << "Resize to " << size_in_dips.ToString() << ", "
|
| - << device_pixel_ratio;
|
| - web_contents_->GetNativeView()->SetBounds(gfx::Rect(size_in_dips));
|
| -
|
| - if (web_contents_->GetRenderViewHost() &&
|
| - web_contents_->GetRenderViewHost()->GetWidget()) {
|
| - web_contents_->GetRenderViewHost()->GetWidget()->WasResized();
|
| - }
|
| -}
|
| -
|
| -void Tab::LoadUrl(const GURL& url) {
|
| - TRACE_EVENT1("blimp", "Tab::LoadUrl", "URL", url.spec());
|
| - DVLOG(1) << "Load URL " << url << " in tab " << tab_id_;
|
| - if (!url.is_valid()) {
|
| - VLOG(1) << "Dropping invalid URL " << url;
|
| - return;
|
| - }
|
| -
|
| - content::NavigationController::LoadURLParams params(url);
|
| - params.transition_type = ui::PageTransitionFromInt(
|
| - ui::PAGE_TRANSITION_TYPED | ui::PAGE_TRANSITION_FROM_ADDRESS_BAR);
|
| - params.override_user_agent = content::NavigationController::UA_OVERRIDE_TRUE;
|
| - web_contents_->GetController().LoadURLWithParams(params);
|
| - web_contents_->Focus();
|
| -}
|
| -
|
| -void Tab::GoBack() {
|
| - if (!web_contents_->GetController().CanGoBack()) {
|
| - DLOG(ERROR) << "Ignoring back in tab " << tab_id_;
|
| - return;
|
| - }
|
| - DVLOG(1) << "Back in tab " << tab_id_;
|
| - web_contents_->GetController().GoBack();
|
| -}
|
| -
|
| -void Tab::GoForward() {
|
| - if (!web_contents_->GetController().CanGoForward()) {
|
| - DLOG(ERROR) << "Ignoring forward in tab " << tab_id_;
|
| - return;
|
| - }
|
| - DVLOG(1) << "Forward in tab " << tab_id_;
|
| - web_contents_->GetController().GoForward();
|
| -}
|
| -
|
| -void Tab::Reload() {
|
| - DVLOG(1) << "Reload in tab " << tab_id_;
|
| - web_contents_->GetController().Reload(content::ReloadType::NORMAL, true);
|
| -}
|
| -
|
| -void Tab::RenderViewCreated(content::RenderViewHost* render_view_host) {
|
| - DCHECK(render_view_host);
|
| - web_contents_->GetMutableRendererPrefs()->caret_blink_interval = 0;
|
| - render_view_host->SyncRendererPrefs();
|
| -
|
| - render_widget_feature_->OnRenderWidgetCreated(tab_id_,
|
| - render_view_host->GetWidget());
|
| -}
|
| -
|
| -void Tab::RenderViewHostChanged(content::RenderViewHost* old_host,
|
| - content::RenderViewHost* new_host) {
|
| - render_widget_feature_->OnRenderWidgetInitialized(tab_id_,
|
| - new_host->GetWidget());
|
| -}
|
| -
|
| -void Tab::RenderViewDeleted(content::RenderViewHost* render_view_host) {
|
| - render_widget_feature_->OnRenderWidgetDeleted(tab_id_,
|
| - render_view_host->GetWidget());
|
| -}
|
| -
|
| -void Tab::NavigationStateChanged(content::InvalidateTypes changed_flags) {
|
| - DCHECK(changed_flags);
|
| -
|
| - NavigationMessage* navigation_message;
|
| - std::unique_ptr<BlimpMessage> message =
|
| - CreateBlimpMessage(&navigation_message, tab_id_);
|
| - navigation_message->set_type(NavigationMessage::NAVIGATION_STATE_CHANGED);
|
| - NavigationStateChangeMessage* details =
|
| - navigation_message->mutable_navigation_state_changed();
|
| -
|
| - if (changed_flags & content::InvalidateTypes::INVALIDATE_TYPE_URL)
|
| - details->set_url(web_contents_->GetURL().spec());
|
| -
|
| - if (changed_flags & content::InvalidateTypes::INVALIDATE_TYPE_TAB) {
|
| - // TODO(dtrainor): Serialize the favicon? crbug.com/597094.
|
| - DVLOG(3) << "Tab favicon changed";
|
| - }
|
| -
|
| - if (changed_flags & content::InvalidateTypes::INVALIDATE_TYPE_TITLE)
|
| - details->set_title(base::UTF16ToUTF8(web_contents_->GetTitle()));
|
| -
|
| - if (changed_flags & content::InvalidateTypes::INVALIDATE_TYPE_LOAD)
|
| - details->set_loading(web_contents_->IsLoading());
|
| -
|
| - navigation_message_sender_->ProcessMessage(std::move(message),
|
| - net::CompletionCallback());
|
| -}
|
| -
|
| -void Tab::SendPageLoadStatusUpdate(PageLoadStatus load_status) {
|
| - NavigationMessage* navigation_message = nullptr;
|
| - std::unique_ptr<BlimpMessage> message =
|
| - CreateBlimpMessage(&navigation_message, tab_id_);
|
| - navigation_message->set_type(NavigationMessage::NAVIGATION_STATE_CHANGED);
|
| - navigation_message->mutable_navigation_state_changed()
|
| - ->set_page_load_completed(load_status == PageLoadStatus::LOADED);
|
| -
|
| - navigation_message_sender_->ProcessMessage(std::move(message),
|
| - net::CompletionCallback());
|
| -}
|
| -
|
| -void Tab::OnWebGestureEvent(content::RenderWidgetHost* render_widget_host,
|
| - std::unique_ptr<blink::WebGestureEvent> event) {
|
| - TRACE_EVENT1("blimp", "Tab::OnWebGestureEvent", "type", event->type());
|
| - render_widget_host->ForwardGestureEvent(*event);
|
| -}
|
| -
|
| -void Tab::ShowTextInputUI() {
|
| - current_form_request_id_++;
|
| - content::FormFieldDataCallback callback =
|
| - base::Bind(&Tab::ProcessTextInputInfo, weak_factory_.GetWeakPtr(),
|
| - current_form_request_id_);
|
| -
|
| - content::RenderFrameHost* focused_frame = web_contents()->GetFocusedFrame();
|
| - if (focused_frame) {
|
| - focused_frame->RequestFocusedFormFieldData(callback);
|
| - }
|
| -}
|
| -
|
| -void Tab::HideTextInputUI() {
|
| - current_form_request_id_++;
|
| - render_widget_feature_->SendHideImeRequest(
|
| - tab_id(),
|
| - web_contents()->GetRenderWidgetHostView()->GetRenderWidgetHost());
|
| -}
|
| -
|
| -void Tab::ProcessTextInputInfo(int request_id,
|
| - const content::FormFieldData& field) {
|
| - if (field.text_input_type == ui::TEXT_INPUT_TYPE_NONE)
|
| - return;
|
| -
|
| - // Discard the results for old requests.
|
| - if (request_id < current_form_request_id_) {
|
| - return;
|
| - }
|
| -
|
| - // TODO(shaktisahu): Remove adding RenderWidgetHost info to the proto.
|
| - render_widget_feature_->SendShowImeRequest(
|
| - tab_id(),
|
| - web_contents()->GetRenderWidgetHostView()->GetRenderWidgetHost(), field);
|
| -}
|
| -
|
| -void Tab::OnCompositorMessageReceived(
|
| - content::RenderWidgetHost* render_widget_host,
|
| - const std::vector<uint8_t>& message) {
|
| - TRACE_EVENT0("blimp", "Tab::OnCompositorMessageReceived");
|
| -
|
| - render_widget_host->HandleCompositorProto(message);
|
| -}
|
| -
|
| -} // namespace engine
|
| -} // namespace blimp
|
|
|