OLD | NEW |
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 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
182 } | 182 } |
183 } else if (!params->is_local_create_child && params->view && | 183 } else if (!params->is_local_create_child && params->view && |
184 id_ == params->view->id()) { | 184 id_ == params->view->id()) { |
185 // Frame represents the local frame, and it isn't the root of the tree. | 185 // Frame represents the local frame, and it isn't the root of the tree. |
186 HTMLFrame* previous_sibling = GetPreviousSibling(this); | 186 HTMLFrame* previous_sibling = GetPreviousSibling(this); |
187 blink::WebFrame* previous_web_frame = | 187 blink::WebFrame* previous_web_frame = |
188 previous_sibling ? previous_sibling->web_frame() : nullptr; | 188 previous_sibling ? previous_sibling->web_frame() : nullptr; |
189 CHECK(!parent_->IsLocal()); | 189 CHECK(!parent_->IsLocal()); |
190 web_frame_ = parent_->web_frame()->toWebRemoteFrame()->createLocalChild( | 190 web_frame_ = parent_->web_frame()->toWebRemoteFrame()->createLocalChild( |
191 state_.tree_scope, state_.name, state_.sandbox_flags, this, | 191 state_.tree_scope, state_.name, state_.sandbox_flags, this, |
192 previous_web_frame); | 192 previous_web_frame, state_.owner_properties); |
193 CreateLocalRootWebWidget(web_frame_->toWebLocalFrame()); | 193 CreateLocalRootWebWidget(web_frame_->toWebLocalFrame()); |
194 } else if (!parent_->IsLocal()) { | 194 } else if (!parent_->IsLocal()) { |
195 web_frame_ = parent_->web_frame()->toWebRemoteFrame()->createRemoteChild( | 195 web_frame_ = parent_->web_frame()->toWebRemoteFrame()->createRemoteChild( |
196 state_.tree_scope, state_.name, state_.sandbox_flags, this); | 196 state_.tree_scope, state_.name, state_.sandbox_flags, this); |
197 } else { | 197 } else { |
198 CHECK(params->is_local_create_child); | 198 CHECK(params->is_local_create_child); |
199 | 199 |
200 blink::WebLocalFrame* child_web_frame = | 200 blink::WebLocalFrame* child_web_frame = |
201 blink::WebLocalFrame::create(state_.tree_scope, this); | 201 blink::WebLocalFrame::create(state_.tree_scope, this); |
202 web_frame_ = child_web_frame; | 202 web_frame_ = child_web_frame; |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
310 blink::WebMediaPlayerEncryptedMediaClient* encrypted_client, | 310 blink::WebMediaPlayerEncryptedMediaClient* encrypted_client, |
311 blink::WebContentDecryptionModule* initial_cdm) { | 311 blink::WebContentDecryptionModule* initial_cdm) { |
312 return global_state()->media_factory()->CreateMediaPlayer( | 312 return global_state()->media_factory()->CreateMediaPlayer( |
313 frame, url, client, encrypted_client, initial_cdm, GetApp()->shell()); | 313 frame, url, client, encrypted_client, initial_cdm, GetApp()->shell()); |
314 } | 314 } |
315 | 315 |
316 blink::WebFrame* HTMLFrame::createChildFrame( | 316 blink::WebFrame* HTMLFrame::createChildFrame( |
317 blink::WebLocalFrame* parent, | 317 blink::WebLocalFrame* parent, |
318 blink::WebTreeScopeType scope, | 318 blink::WebTreeScopeType scope, |
319 const blink::WebString& frame_name, | 319 const blink::WebString& frame_name, |
320 blink::WebSandboxFlags sandbox_flags) { | 320 blink::WebSandboxFlags sandbox_flags, |
| 321 const blink::WebFrameOwnerProperties& frame_owner_properties) { |
321 DCHECK(IsLocal()); // Can't create children of remote frames. | 322 DCHECK(IsLocal()); // Can't create children of remote frames. |
322 DCHECK_EQ(parent, web_frame_); | 323 DCHECK_EQ(parent, web_frame_); |
323 DCHECK(view_); // If we're local we have to have a view. | 324 DCHECK(view_); // If we're local we have to have a view. |
324 // Create the view that will house the frame now. We embed once we know the | 325 // Create the view that will house the frame now. We embed once we know the |
325 // url (see decidePolicyForNavigation()). | 326 // url (see decidePolicyForNavigation()). |
326 mus::View* child_view = view_->connection()->CreateView(); | 327 mus::View* child_view = view_->connection()->CreateView(); |
327 ReplicatedFrameState child_state; | 328 ReplicatedFrameState child_state; |
328 child_state.name = frame_name; | 329 child_state.name = frame_name; |
329 child_state.tree_scope = scope; | 330 child_state.tree_scope = scope; |
330 child_state.sandbox_flags = sandbox_flags; | 331 child_state.sandbox_flags = sandbox_flags; |
| 332 child_state.owner_properties = frame_owner_properties; |
331 mojo::Map<mojo::String, mojo::Array<uint8_t>> client_properties; | 333 mojo::Map<mojo::String, mojo::Array<uint8_t>> client_properties; |
332 client_properties.mark_non_null(); | 334 client_properties.mark_non_null(); |
333 ClientPropertiesFromReplicatedFrameState(child_state, &client_properties); | 335 ClientPropertiesFromReplicatedFrameState(child_state, &client_properties); |
334 | 336 |
335 child_view->SetVisible(true); | 337 child_view->SetVisible(true); |
336 view_->AddChild(child_view); | 338 view_->AddChild(child_view); |
337 | 339 |
338 HTMLFrame::CreateParams params(frame_tree_manager_, this, child_view->id(), | 340 HTMLFrame::CreateParams params(frame_tree_manager_, this, child_view->id(), |
339 child_view, client_properties, nullptr); | 341 child_view, client_properties, nullptr); |
340 params.is_local_create_child = true; | 342 params.is_local_create_child = true; |
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
641 DVLOG(2) << "HTMLFrame::SwapToLocal this=" << this << " id=" << id_; | 643 DVLOG(2) << "HTMLFrame::SwapToLocal this=" << this << " id=" << id_; |
642 CHECK(!IsLocal()); | 644 CHECK(!IsLocal()); |
643 // It doesn't make sense for the root to swap to local. | 645 // It doesn't make sense for the root to swap to local. |
644 CHECK(parent_); | 646 CHECK(parent_); |
645 delegate_ = delegate; | 647 delegate_ = delegate; |
646 SetView(view); | 648 SetView(view); |
647 SetReplicatedFrameStateFromClientProperties(properties, &state_); | 649 SetReplicatedFrameStateFromClientProperties(properties, &state_); |
648 blink::WebLocalFrame* local_web_frame = | 650 blink::WebLocalFrame* local_web_frame = |
649 blink::WebLocalFrame::create(state_.tree_scope, this); | 651 blink::WebLocalFrame::create(state_.tree_scope, this); |
650 local_web_frame->initializeToReplaceRemoteFrame( | 652 local_web_frame->initializeToReplaceRemoteFrame( |
651 web_frame_->toWebRemoteFrame(), state_.name, state_.sandbox_flags); | 653 web_frame_->toWebRemoteFrame(), state_.name, state_.sandbox_flags, |
| 654 state_.owner_properties); |
652 // The swap() ends up calling to frameDetached() and deleting the old. | 655 // The swap() ends up calling to frameDetached() and deleting the old. |
653 web_frame_->swap(local_web_frame); | 656 web_frame_->swap(local_web_frame); |
654 web_frame_ = local_web_frame; | 657 web_frame_ = local_web_frame; |
655 | 658 |
656 web_layer_.reset(); | 659 web_layer_.reset(); |
657 } | 660 } |
658 | 661 |
659 void HTMLFrame::SwapDelegate(HTMLFrameDelegate* delegate) { | 662 void HTMLFrame::SwapDelegate(HTMLFrameDelegate* delegate) { |
660 DCHECK(IsLocal()); | 663 DCHECK(IsLocal()); |
661 HTMLFrameDelegate* old_delegate = delegate_; | 664 HTMLFrameDelegate* old_delegate = delegate_; |
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
918 if (!surface_layer_) | 921 if (!surface_layer_) |
919 return; | 922 return; |
920 | 923 |
921 surface_layer_->SetSurfaceId( | 924 surface_layer_->SetSurfaceId( |
922 cc::SurfaceId(owned_view_->view()->id()), | 925 cc::SurfaceId(owned_view_->view()->id()), |
923 global_state()->device_pixel_ratio(), | 926 global_state()->device_pixel_ratio(), |
924 owned_view_->view()->bounds().To<gfx::Rect>().size()); | 927 owned_view_->view()->bounds().To<gfx::Rect>().size()); |
925 } | 928 } |
926 | 929 |
927 } // namespace mojo | 930 } // namespace mojo |
OLD | NEW |