Chromium Code Reviews| 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 <stddef.h> | 7 #include <stddef.h> |
| 8 #include <algorithm> | 8 #include <algorithm> |
| 9 #include <limits> | 9 #include <limits> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 126 weak_factory_(this) { | 126 weak_factory_(this) { |
| 127 TRACE_EVENT0("html_viewer", "HTMLFrame::HTMLFrame"); | 127 TRACE_EVENT0("html_viewer", "HTMLFrame::HTMLFrame"); |
| 128 if (parent_) | 128 if (parent_) |
| 129 parent_->children_.push_back(this); | 129 parent_->children_.push_back(this); |
| 130 | 130 |
| 131 if (params->window && params->window->id() == id_) | 131 if (params->window && params->window->id() == id_) |
| 132 SetWindow(params->window); | 132 SetWindow(params->window); |
| 133 | 133 |
| 134 SetReplicatedFrameStateFromClientProperties(params->properties, &state_); | 134 SetReplicatedFrameStateFromClientProperties(params->properties, &state_); |
| 135 | 135 |
| 136 // TODO(lukasza): Add |frame_unique_name| to ReplicatedFrameState? | |
| 137 blink::WebString unique_name; // Empty string = will recalculate in Blink. | |
| 138 | |
| 136 if (!parent_) { | 139 if (!parent_) { |
| 137 CreateRootWebWidget(); | 140 CreateRootWebWidget(); |
| 138 | 141 |
| 139 // This is the root of the tree (aka the main frame). | 142 // This is the root of the tree (aka the main frame). |
| 140 // Expected order for creating webframes is: | 143 // Expected order for creating webframes is: |
| 141 // . Create local webframe (first webframe must always be local). | 144 // . Create local webframe (first webframe must always be local). |
| 142 // . Set as main frame on WebView. | 145 // . Set as main frame on WebView. |
| 143 // . Swap to remote (if not local). | 146 // . Swap to remote (if not local). |
| 144 blink::WebLocalFrame* local_web_frame = | 147 blink::WebLocalFrame* local_web_frame = |
| 145 blink::WebLocalFrame::create(state_.tree_scope, this); | 148 blink::WebLocalFrame::create(state_.tree_scope, this); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 180 StatsCollectionController::Install(web_frame_, GetApp()); | 183 StatsCollectionController::Install(web_frame_, GetApp()); |
| 181 } | 184 } |
| 182 } else if (!params->is_local_create_child && params->window && | 185 } else if (!params->is_local_create_child && params->window && |
| 183 id_ == params->window->id()) { | 186 id_ == params->window->id()) { |
| 184 // Frame represents the local frame, and it isn't the root of the tree. | 187 // Frame represents the local frame, and it isn't the root of the tree. |
| 185 HTMLFrame* previous_sibling = GetPreviousSibling(this); | 188 HTMLFrame* previous_sibling = GetPreviousSibling(this); |
| 186 blink::WebFrame* previous_web_frame = | 189 blink::WebFrame* previous_web_frame = |
| 187 previous_sibling ? previous_sibling->web_frame() : nullptr; | 190 previous_sibling ? previous_sibling->web_frame() : nullptr; |
| 188 CHECK(!parent_->IsLocal()); | 191 CHECK(!parent_->IsLocal()); |
| 189 web_frame_ = parent_->web_frame()->toWebRemoteFrame()->createLocalChild( | 192 web_frame_ = parent_->web_frame()->toWebRemoteFrame()->createLocalChild( |
| 190 state_.tree_scope, state_.name, state_.sandbox_flags, this, | 193 state_.tree_scope, state_.name, unique_name, state_.sandbox_flags, this, |
| 191 previous_web_frame, | 194 previous_web_frame, |
| 192 // TODO(lazyboy): Replicate WebFrameOwnerProperties where needed. | 195 // TODO(lazyboy): Replicate WebFrameOwnerProperties where needed. |
| 193 blink::WebFrameOwnerProperties()); | 196 blink::WebFrameOwnerProperties()); |
| 194 CreateLocalRootWebWidget(web_frame_->toWebLocalFrame()); | 197 CreateLocalRootWebWidget(web_frame_->toWebLocalFrame()); |
| 195 } else if (!parent_->IsLocal()) { | 198 } else if (!parent_->IsLocal()) { |
| 196 web_frame_ = parent_->web_frame()->toWebRemoteFrame()->createRemoteChild( | 199 web_frame_ = parent_->web_frame()->toWebRemoteFrame()->createRemoteChild( |
| 197 state_.tree_scope, state_.name, state_.sandbox_flags, this); | 200 state_.tree_scope, state_.name, unique_name, state_.sandbox_flags, |
| 201 this); | |
| 198 } else { | 202 } else { |
| 199 CHECK(params->is_local_create_child); | 203 CHECK(params->is_local_create_child); |
| 200 | 204 |
| 201 blink::WebLocalFrame* child_web_frame = | 205 blink::WebLocalFrame* child_web_frame = |
| 202 blink::WebLocalFrame::create(state_.tree_scope, this); | 206 blink::WebLocalFrame::create(state_.tree_scope, this); |
| 203 web_frame_ = child_web_frame; | 207 web_frame_ = child_web_frame; |
| 204 parent_->web_frame_->appendChild(child_web_frame); | 208 parent_->web_frame_->appendChild(child_web_frame); |
| 205 } | 209 } |
| 206 | 210 |
| 207 DVLOG(2) << "HTMLFrame init this=" << this << " id=" << id_ | 211 DVLOG(2) << "HTMLFrame init this=" << this << " id=" << id_ |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 319 const blink::WebString& sink_id, | 323 const blink::WebString& sink_id, |
| 320 blink::WebMediaSession* media_session) { | 324 blink::WebMediaSession* media_session) { |
| 321 return global_state()->media_factory()->CreateMediaPlayer( | 325 return global_state()->media_factory()->CreateMediaPlayer( |
| 322 frame, url, client, encrypted_client, initial_cdm, GetApp()->shell()); | 326 frame, url, client, encrypted_client, initial_cdm, GetApp()->shell()); |
| 323 } | 327 } |
| 324 | 328 |
| 325 blink::WebFrame* HTMLFrame::createChildFrame( | 329 blink::WebFrame* HTMLFrame::createChildFrame( |
| 326 blink::WebLocalFrame* parent, | 330 blink::WebLocalFrame* parent, |
| 327 blink::WebTreeScopeType scope, | 331 blink::WebTreeScopeType scope, |
| 328 const blink::WebString& frame_name, | 332 const blink::WebString& frame_name, |
| 333 const blink::WebString& /* frame_unique_name */, | |
| 329 blink::WebSandboxFlags sandbox_flags, | 334 blink::WebSandboxFlags sandbox_flags, |
| 330 const blink::WebFrameOwnerProperties& frame_owner_properties) { | 335 const blink::WebFrameOwnerProperties& /* frame_owner_properties */) { |
| 331 DCHECK(IsLocal()); // Can't create children of remote frames. | 336 DCHECK(IsLocal()); // Can't create children of remote frames. |
| 332 DCHECK_EQ(parent, web_frame_); | 337 DCHECK_EQ(parent, web_frame_); |
| 333 DCHECK(window_); // If we're local we have to have a window. | 338 DCHECK(window_); // If we're local we have to have a window. |
| 334 // Create the window that will house the frame now. We embed once we know the | 339 // Create the window that will house the frame now. We embed once we know the |
| 335 // url (see decidePolicyForNavigation()). | 340 // url (see decidePolicyForNavigation()). |
| 336 mus::Window* child_window = window_->connection()->NewWindow(); | 341 mus::Window* child_window = window_->connection()->NewWindow(); |
| 342 // TODO(lukasza): Add |frame_unique_name| to ReplicatedFrameState? | |
| 337 ReplicatedFrameState child_state; | 343 ReplicatedFrameState child_state; |
| 338 child_state.name = frame_name; | 344 child_state.name = frame_name; |
| 339 child_state.tree_scope = scope; | 345 child_state.tree_scope = scope; |
| 340 child_state.sandbox_flags = sandbox_flags; | 346 child_state.sandbox_flags = sandbox_flags; |
| 341 mojo::Map<mojo::String, mojo::Array<uint8_t>> client_properties; | 347 mojo::Map<mojo::String, mojo::Array<uint8_t>> client_properties; |
| 342 client_properties.mark_non_null(); | 348 client_properties.mark_non_null(); |
| 343 ClientPropertiesFromReplicatedFrameState(child_state, &client_properties); | 349 ClientPropertiesFromReplicatedFrameState(child_state, &client_properties); |
| 344 | 350 |
| 345 child_window->SetVisible(true); | 351 child_window->SetVisible(true); |
| 346 window_->AddChild(child_window); | 352 window_->AddChild(child_window); |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 473 server_->LoadingStateChanged(true, load_progress); | 479 server_->LoadingStateChanged(true, load_progress); |
| 474 } | 480 } |
| 475 | 481 |
| 476 void HTMLFrame::dispatchLoad() { | 482 void HTMLFrame::dispatchLoad() { |
| 477 // According to comments of WebFrameClient::dispatchLoad(), this should only | 483 // According to comments of WebFrameClient::dispatchLoad(), this should only |
| 478 // be called when the parent frame is remote. | 484 // be called when the parent frame is remote. |
| 479 DCHECK(parent_ && !parent_->IsLocal()); | 485 DCHECK(parent_ && !parent_->IsLocal()); |
| 480 server_->DispatchLoadEventToParent(); | 486 server_->DispatchLoadEventToParent(); |
| 481 } | 487 } |
| 482 | 488 |
| 483 void HTMLFrame::didChangeName(blink::WebLocalFrame* frame, | 489 void HTMLFrame::didChangeName(blink::WebLocalFrame* /* frame */, |
|
alexmos
2016/02/10 00:46:46
Is this style ok? I haven't really seen this (lea
Łukasz Anforowicz
2016/02/10 22:10:50
I don't remember where I first saw this style, but
Charlie Reis
2016/02/11 22:02:14
It's moot in this case, since this file is gone no
Łukasz Anforowicz
2016/02/11 23:23:55
Right, but 1) we are not "omitting" the parameter
| |
| 484 const blink::WebString& name) { | 490 const blink::WebString& name, |
| 491 const blink::WebString& /* unique_name */) { | |
| 492 // TODO(lukasza): Add |frame_unique_name| to ReplicatedFrameState? | |
| 485 state_.name = name; | 493 state_.name = name; |
| 486 server_->SetClientProperty(kPropertyFrameName, | 494 server_->SetClientProperty(kPropertyFrameName, |
| 487 FrameNameToClientProperty(name)); | 495 FrameNameToClientProperty(name)); |
| 488 } | 496 } |
| 489 | 497 |
| 490 void HTMLFrame::didCommitProvisionalLoad( | 498 void HTMLFrame::didCommitProvisionalLoad( |
| 491 blink::WebLocalFrame* frame, | 499 blink::WebLocalFrame* frame, |
| 492 const blink::WebHistoryItem& item, | 500 const blink::WebHistoryItem& item, |
| 493 blink::WebHistoryCommitType commit_type) { | 501 blink::WebHistoryCommitType commit_type) { |
| 494 state_.origin = FrameOrigin(frame); | 502 state_.origin = FrameOrigin(frame); |
| (...skipping 546 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1041 | 1049 |
| 1042 if (!surface_layer_) | 1050 if (!surface_layer_) |
| 1043 return; | 1051 return; |
| 1044 | 1052 |
| 1045 surface_layer_->SetSurfaceId(cc::SurfaceId(owned_window_->window()->id()), | 1053 surface_layer_->SetSurfaceId(cc::SurfaceId(owned_window_->window()->id()), |
| 1046 global_state()->device_pixel_ratio(), | 1054 global_state()->device_pixel_ratio(), |
| 1047 owned_window_->window()->bounds().size()); | 1055 owned_window_->window()->bounds().size()); |
| 1048 } | 1056 } |
| 1049 | 1057 |
| 1050 } // namespace mojo | 1058 } // namespace mojo |
| OLD | NEW |