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

Side by Side Diff: components/html_viewer/html_frame.cc

Issue 1347023003: Rename frame classes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: merge 2 trunk Created 5 years, 3 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 unified diff | Download patch
« no previous file with comments | « components/html_viewer/html_frame.h ('k') | components/html_viewer/html_frame_apptest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/html_viewer/html_frame.h" 5 #include "components/html_viewer/html_frame.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 #include "ui/gfx/geometry/size.h" 65 #include "ui/gfx/geometry/size.h"
66 #include "url/gurl.h" 66 #include "url/gurl.h"
67 #include "url/origin.h" 67 #include "url/origin.h"
68 #include "url/url_constants.h" 68 #include "url/url_constants.h"
69 69
70 using mojo::AxProvider; 70 using mojo::AxProvider;
71 using mojo::Rect; 71 using mojo::Rect;
72 using mojo::ServiceProviderPtr; 72 using mojo::ServiceProviderPtr;
73 using mojo::URLResponsePtr; 73 using mojo::URLResponsePtr;
74 using mus::View; 74 using mus::View;
75 using web_view::HTMLMessageEvent; 75 using web_view::mojom::HTMLMessageEvent;
76 using web_view::HTMLMessageEventPtr; 76 using web_view::mojom::HTMLMessageEventPtr;
77 77
78 namespace html_viewer { 78 namespace html_viewer {
79 namespace { 79 namespace {
80 80
81 const size_t kMaxTitleChars = 4 * 1024; 81 const size_t kMaxTitleChars = 4 * 1024;
82 82
83 web_view::NavigationTargetType WebNavigationPolicyToNavigationTarget( 83 web_view::mojom::NavigationTargetType WebNavigationPolicyToNavigationTarget(
84 blink::WebNavigationPolicy policy) { 84 blink::WebNavigationPolicy policy) {
85 switch (policy) { 85 switch (policy) {
86 case blink::WebNavigationPolicyCurrentTab: 86 case blink::WebNavigationPolicyCurrentTab:
87 return web_view::NAVIGATION_TARGET_TYPE_EXISTING_FRAME; 87 return web_view::mojom::NAVIGATION_TARGET_TYPE_EXISTING_FRAME;
88 case blink::WebNavigationPolicyNewBackgroundTab: 88 case blink::WebNavigationPolicyNewBackgroundTab:
89 case blink::WebNavigationPolicyNewForegroundTab: 89 case blink::WebNavigationPolicyNewForegroundTab:
90 case blink::WebNavigationPolicyNewWindow: 90 case blink::WebNavigationPolicyNewWindow:
91 case blink::WebNavigationPolicyNewPopup: 91 case blink::WebNavigationPolicyNewPopup:
92 return web_view::NAVIGATION_TARGET_TYPE_NEW_FRAME; 92 return web_view::mojom::NAVIGATION_TARGET_TYPE_NEW_FRAME;
93 default: 93 default:
94 return web_view::NAVIGATION_TARGET_TYPE_NO_PREFERENCE; 94 return web_view::mojom::NAVIGATION_TARGET_TYPE_NO_PREFERENCE;
95 } 95 }
96 } 96 }
97 97
98 HTMLFrame* GetPreviousSibling(HTMLFrame* frame) { 98 HTMLFrame* GetPreviousSibling(HTMLFrame* frame) {
99 DCHECK(frame->parent()); 99 DCHECK(frame->parent());
100 auto iter = std::find(frame->parent()->children().begin(), 100 auto iter = std::find(frame->parent()->children().begin(),
101 frame->parent()->children().end(), frame); 101 frame->parent()->children().end(), frame);
102 return (iter == frame->parent()->children().begin()) ? nullptr : *(--iter); 102 return (iter == frame->parent()->children().begin()) ? nullptr : *(--iter);
103 } 103 }
104 104
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
307 view_->AddChild(child_view); 307 view_->AddChild(child_view);
308 308
309 HTMLFrame::CreateParams params(frame_tree_manager_, this, child_view->id(), 309 HTMLFrame::CreateParams params(frame_tree_manager_, this, child_view->id(),
310 child_view, client_properties, nullptr); 310 child_view, client_properties, nullptr);
311 params.is_local_create_child = true; 311 params.is_local_create_child = true;
312 HTMLFrame* child_frame = GetFirstAncestorWithDelegate() 312 HTMLFrame* child_frame = GetFirstAncestorWithDelegate()
313 ->delegate_->GetHTMLFactory() 313 ->delegate_->GetHTMLFactory()
314 ->CreateHTMLFrame(&params); 314 ->CreateHTMLFrame(&params);
315 child_frame->owned_view_.reset(new mus::ScopedViewPtr(child_view)); 315 child_frame->owned_view_.reset(new mus::ScopedViewPtr(child_view));
316 316
317 web_view::FrameTreeClientPtr client_ptr; 317 web_view::mojom::FrameClientPtr client_ptr;
318 child_frame->frame_tree_client_binding_.reset( 318 child_frame->frame_client_binding_.reset(
319 new mojo::Binding<web_view::FrameTreeClient>( 319 new mojo::Binding<web_view::mojom::FrameClient>(
320 child_frame, mojo::GetProxy(&client_ptr))); 320 child_frame, mojo::GetProxy(&client_ptr)));
321 server_->OnCreatedFrame(GetProxy(&(child_frame->server_)), client_ptr.Pass(), 321 server_->OnCreatedFrame(GetProxy(&(child_frame->server_)), client_ptr.Pass(),
322 child_view->id(), client_properties.Pass()); 322 child_view->id(), client_properties.Pass());
323 return child_frame->web_frame_; 323 return child_frame->web_frame_;
324 } 324 }
325 325
326 void HTMLFrame::frameDetached(blink::WebFrame* web_frame, 326 void HTMLFrame::frameDetached(blink::WebFrame* web_frame,
327 blink::WebFrameClient::DetachType type) { 327 blink::WebFrameClient::DetachType type) {
328 if (type == blink::WebFrameClient::DetachType::Swap) { 328 if (type == blink::WebFrameClient::DetachType::Swap) {
329 web_frame->close(); 329 web_frame->close();
(...skipping 20 matching lines...) Expand all
350 return blink::WebNavigationPolicyCurrentTab; 350 return blink::WebNavigationPolicyCurrentTab;
351 } 351 }
352 352
353 // about:blank is treated as the same origin and is always allowed for 353 // about:blank is treated as the same origin and is always allowed for
354 // frames. 354 // frames.
355 if (parent_ && info.urlRequest.url() == GURL(url::kAboutBlankURL) && 355 if (parent_ && info.urlRequest.url() == GURL(url::kAboutBlankURL) &&
356 info.defaultPolicy == blink::WebNavigationPolicyCurrentTab) { 356 info.defaultPolicy == blink::WebNavigationPolicyCurrentTab) {
357 return blink::WebNavigationPolicyCurrentTab; 357 return blink::WebNavigationPolicyCurrentTab;
358 } 358 }
359 359
360 // Ask the FrameTreeServer to handle the navigation. By returning 360 // Ask the Frame to handle the navigation. By returning
361 // WebNavigationPolicyIgnore the load is suppressed. 361 // WebNavigationPolicyIgnore the load is suppressed.
362 mojo::URLRequestPtr url_request = mojo::URLRequest::From(info.urlRequest); 362 mojo::URLRequestPtr url_request = mojo::URLRequest::From(info.urlRequest);
363 server_->RequestNavigate( 363 server_->RequestNavigate(
364 WebNavigationPolicyToNavigationTarget(info.defaultPolicy), id_, 364 WebNavigationPolicyToNavigationTarget(info.defaultPolicy), id_,
365 url_request.Pass()); 365 url_request.Pass());
366 366
367 return blink::WebNavigationPolicyIgnore; 367 return blink::WebNavigationPolicyIgnore;
368 } 368 }
369 369
370 void HTMLFrame::didHandleOnloadEvents(blink::WebLocalFrame* frame) { 370 void HTMLFrame::didHandleOnloadEvents(blink::WebLocalFrame* frame) {
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
453 blink::WebTextDirection direction) { 453 blink::WebTextDirection direction) {
454 // TODO(beng): handle |direction|. 454 // TODO(beng): handle |direction|.
455 mojo::String formatted; 455 mojo::String formatted;
456 if (!title.isNull()) { 456 if (!title.isNull()) {
457 formatted = 457 formatted =
458 mojo::String::From(base::string16(title).substr(0, kMaxTitleChars)); 458 mojo::String::From(base::string16(title).substr(0, kMaxTitleChars));
459 } 459 }
460 server_->TitleChanged(formatted); 460 server_->TitleChanged(formatted);
461 } 461 }
462 462
463 void HTMLFrame::Bind(web_view::FrameTreeServerPtr frame_tree_server, 463 void HTMLFrame::Bind(
464 mojo::InterfaceRequest<web_view::FrameTreeClient> 464 web_view::mojom::FramePtr frame,
465 frame_tree_client_request) { 465 mojo::InterfaceRequest<web_view::mojom::FrameClient> frame_client_request) {
466 DCHECK(IsLocal()); 466 DCHECK(IsLocal());
467 server_ = frame_tree_server.Pass(); 467 server_ = frame.Pass();
468 server_.set_connection_error_handler( 468 server_.set_connection_error_handler(
469 base::Bind(&HTMLFrame::Close, base::Unretained(this))); 469 base::Bind(&HTMLFrame::Close, base::Unretained(this)));
470 frame_tree_client_binding_.reset(new mojo::Binding<web_view::FrameTreeClient>( 470 frame_client_binding_.reset(new mojo::Binding<web_view::mojom::FrameClient>(
471 this, frame_tree_client_request.Pass())); 471 this, frame_client_request.Pass()));
472 } 472 }
473 473
474 void HTMLFrame::SetValueFromClientProperty(const std::string& name, 474 void HTMLFrame::SetValueFromClientProperty(const std::string& name,
475 mojo::Array<uint8_t> new_data) { 475 mojo::Array<uint8_t> new_data) {
476 if (IsLocal()) 476 if (IsLocal())
477 return; 477 return;
478 478
479 // Only the name and origin dynamically change. 479 // Only the name and origin dynamically change.
480 if (name == kPropertyFrameOrigin) { 480 if (name == kPropertyFrameOrigin) {
481 state_.origin = FrameOriginFromClientProperty(new_data); 481 state_.origin = FrameOriginFromClientProperty(new_data);
482 web_frame_->toWebRemoteFrame()->setReplicatedOrigin(state_.origin); 482 web_frame_->toWebRemoteFrame()->setReplicatedOrigin(state_.origin);
483 } else if (name == kPropertyFrameName) { 483 } else if (name == kPropertyFrameName) {
484 state_.name = FrameNameFromClientProperty(new_data); 484 state_.name = FrameNameFromClientProperty(new_data);
485 web_frame_->toWebRemoteFrame()->setReplicatedName(state_.name); 485 web_frame_->toWebRemoteFrame()->setReplicatedName(state_.name);
486 } 486 }
487 } 487 }
488 488
489 HTMLFrame* HTMLFrame::GetFirstAncestorWithDelegate() { 489 HTMLFrame* HTMLFrame::GetFirstAncestorWithDelegate() {
490 HTMLFrame* frame = this; 490 HTMLFrame* frame = this;
491 while (frame && !frame->delegate_) 491 while (frame && !frame->delegate_)
492 frame = frame->parent_; 492 frame = frame->parent_;
493 return frame; 493 return frame;
494 } 494 }
495 495
496 mojo::ApplicationImpl* HTMLFrame::GetApp() { 496 mojo::ApplicationImpl* HTMLFrame::GetApp() {
497 return GetFirstAncestorWithDelegate()->delegate_->GetApp(); 497 return GetFirstAncestorWithDelegate()->delegate_->GetApp();
498 } 498 }
499 499
500 web_view::FrameTreeServer* HTMLFrame::GetFrameTreeServer() { 500 web_view::mojom::Frame* HTMLFrame::GetServerFrame() {
501 // Prefer an ancestor with a FrameTreeServer. 501 // Prefer an ancestor with a server Frame.
502 for (HTMLFrame* frame = this; frame; frame = frame->parent_) { 502 for (HTMLFrame* frame = this; frame; frame = frame->parent_) {
503 if (frame->server_.get()) 503 if (frame->server_.get())
504 return frame->server_.get(); 504 return frame->server_.get();
505 } 505 }
506 506
507 // No local root. This means we're a remote frame with no local frame 507 // No local root. This means we're a remote frame with no local frame
508 // ancestors. Use the local frame from the FrameTreeServer. 508 // ancestors. Use the server Frame from the local root of the
509 // HTMLFrameTreeManager.
509 return frame_tree_manager_->local_root_->server_.get(); 510 return frame_tree_manager_->local_root_->server_.get();
510 } 511 }
511 512
512 void HTMLFrame::SetView(mus::View* view) { 513 void HTMLFrame::SetView(mus::View* view) {
513 if (view_) 514 if (view_)
514 view_->RemoveObserver(this); 515 view_->RemoveObserver(this);
515 view_ = view; 516 view_ = view;
516 if (view_) 517 if (view_)
517 view_->AddObserver(this); 518 view_->AddObserver(this);
518 } 519 }
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
567 remote_frame->setRemoteWebLayer(web_layer_.get()); 568 remote_frame->setRemoteWebLayer(web_layer_.get());
568 remote_frame->setReplicatedName(state_.name); 569 remote_frame->setReplicatedName(state_.name);
569 remote_frame->setReplicatedOrigin(state_.origin); 570 remote_frame->setReplicatedOrigin(state_.origin);
570 remote_frame->setReplicatedSandboxFlags(state_.sandbox_flags); 571 remote_frame->setReplicatedSandboxFlags(state_.sandbox_flags);
571 // Tell the frame that it is actually loading. This prevents its parent 572 // Tell the frame that it is actually loading. This prevents its parent
572 // from prematurely dispatching load event. 573 // from prematurely dispatching load event.
573 remote_frame->didStartLoading(); 574 remote_frame->didStartLoading();
574 web_frame_ = remote_frame; 575 web_frame_ = remote_frame;
575 SetView(nullptr); 576 SetView(nullptr);
576 server_.reset(); 577 server_.reset();
577 frame_tree_client_binding_.reset(); 578 frame_client_binding_.reset();
578 if (delegate) 579 if (delegate)
579 delegate->OnFrameSwappedToRemote(); 580 delegate->OnFrameSwappedToRemote();
580 } 581 }
581 582
582 void HTMLFrame::SwapToLocal( 583 void HTMLFrame::SwapToLocal(
583 HTMLFrameDelegate* delegate, 584 HTMLFrameDelegate* delegate,
584 mus::View* view, 585 mus::View* view,
585 const mojo::Map<mojo::String, mojo::Array<uint8_t>>& properties) { 586 const mojo::Map<mojo::String, mojo::Array<uint8_t>>& properties) {
586 CHECK(!IsLocal()); 587 CHECK(!IsLocal());
587 // It doesn't make sense for the root to swap to local. 588 // It doesn't make sense for the root to swap to local.
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
680 event.To<scoped_ptr<blink::WebInputEvent>>(); 681 event.To<scoped_ptr<blink::WebInputEvent>>();
681 if (web_event) 682 if (web_event)
682 web_widget->handleInputEvent(*web_event); 683 web_widget->handleInputEvent(*web_event);
683 } 684 }
684 685
685 void HTMLFrame::OnViewFocusChanged(mus::View* gained_focus, 686 void HTMLFrame::OnViewFocusChanged(mus::View* gained_focus,
686 mus::View* lost_focus) { 687 mus::View* lost_focus) {
687 UpdateFocus(); 688 UpdateFocus();
688 } 689 }
689 690
690 void HTMLFrame::OnConnect(web_view::FrameTreeServerPtr server, 691 void HTMLFrame::OnConnect(web_view::mojom::FramePtr frame,
691 uint32_t change_id, 692 uint32_t change_id,
692 uint32_t view_id, 693 uint32_t view_id,
693 web_view::ViewConnectType view_connect_type, 694 web_view::mojom::ViewConnectType view_connect_type,
694 mojo::Array<web_view::FrameDataPtr> frame_data, 695 mojo::Array<web_view::mojom::FrameDataPtr> frame_data,
695 const OnConnectCallback& callback) { 696 const OnConnectCallback& callback) {
696 // This is called if this frame is created by way of OnCreatedFrame(). 697 // This is called if this frame is created by way of OnCreatedFrame().
697 callback.Run(); 698 callback.Run();
698 } 699 }
699 700
700 void HTMLFrame::OnFrameAdded(uint32_t change_id, 701 void HTMLFrame::OnFrameAdded(uint32_t change_id,
701 web_view::FrameDataPtr frame_data) { 702 web_view::mojom::FrameDataPtr frame_data) {
702 frame_tree_manager_->ProcessOnFrameAdded(this, change_id, frame_data.Pass()); 703 frame_tree_manager_->ProcessOnFrameAdded(this, change_id, frame_data.Pass());
703 } 704 }
704 705
705 void HTMLFrame::OnFrameRemoved(uint32_t change_id, uint32_t frame_id) { 706 void HTMLFrame::OnFrameRemoved(uint32_t change_id, uint32_t frame_id) {
706 frame_tree_manager_->ProcessOnFrameRemoved(this, change_id, frame_id); 707 frame_tree_manager_->ProcessOnFrameRemoved(this, change_id, frame_id);
707 } 708 }
708 709
709 void HTMLFrame::OnFrameClientPropertyChanged(uint32_t frame_id, 710 void HTMLFrame::OnFrameClientPropertyChanged(uint32_t frame_id,
710 const mojo::String& name, 711 const mojo::String& name,
711 mojo::Array<uint8_t> new_value) { 712 mojo::Array<uint8_t> new_value) {
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
827 global_state()->device_pixel_ratio(), rect_in_dip)); 828 global_state()->device_pixel_ratio(), rect_in_dip));
828 const mojo::RectPtr mojo_rect_in_pixels(mojo::Rect::From(rect_in_pixels)); 829 const mojo::RectPtr mojo_rect_in_pixels(mojo::Rect::From(rect_in_pixels));
829 view_->SetBounds(*mojo_rect_in_pixels); 830 view_->SetBounds(*mojo_rect_in_pixels);
830 } 831 }
831 832
832 void HTMLFrame::navigate(const blink::WebURLRequest& request, 833 void HTMLFrame::navigate(const blink::WebURLRequest& request,
833 bool should_replace_current_entry) { 834 bool should_replace_current_entry) {
834 // TODO: support |should_replace_current_entry|. 835 // TODO: support |should_replace_current_entry|.
835 NOTIMPLEMENTED(); // for |should_replace_current_entry 836 NOTIMPLEMENTED(); // for |should_replace_current_entry
836 mojo::URLRequestPtr url_request = mojo::URLRequest::From(request); 837 mojo::URLRequestPtr url_request = mojo::URLRequest::From(request);
837 GetFrameTreeServer()->RequestNavigate( 838 GetServerFrame()->RequestNavigate(
838 web_view::NAVIGATION_TARGET_TYPE_EXISTING_FRAME, id_, url_request.Pass()); 839 web_view::mojom::NAVIGATION_TARGET_TYPE_EXISTING_FRAME, id_,
840 url_request.Pass());
839 } 841 }
840 842
841 void HTMLFrame::reload(bool ignore_cache, bool is_client_redirect) { 843 void HTMLFrame::reload(bool ignore_cache, bool is_client_redirect) {
842 NOTIMPLEMENTED(); 844 NOTIMPLEMENTED();
843 } 845 }
844 846
845 void HTMLFrame::forwardInputEvent(const blink::WebInputEvent* event) { 847 void HTMLFrame::forwardInputEvent(const blink::WebInputEvent* event) {
846 NOTIMPLEMENTED(); 848 NOTIMPLEMENTED();
847 } 849 }
848 850
849 } // namespace mojo 851 } // namespace mojo
OLDNEW
« no previous file with comments | « components/html_viewer/html_frame.h ('k') | components/html_viewer/html_frame_apptest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698