| 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 "mandoline/tab/frame.h" | 5 #include "mandoline/tab/frame.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/auto_reset.h" | 9 #include "base/auto_reset.h" |
| 10 #include "base/stl_util.h" | 10 #include "base/stl_util.h" |
| (...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 164 } | 164 } |
| 165 | 165 |
| 166 void Frame::SetView(mojo::View* view) { | 166 void Frame::SetView(mojo::View* view) { |
| 167 DCHECK(!view_); | 167 DCHECK(!view_); |
| 168 DCHECK_EQ(id_, view->id()); | 168 DCHECK_EQ(id_, view->id()); |
| 169 view_ = view; | 169 view_ = view; |
| 170 view_->SetLocalProperty(kFrame, this); | 170 view_->SetLocalProperty(kFrame, this); |
| 171 view_->AddObserver(this); | 171 view_->AddObserver(this); |
| 172 } | 172 } |
| 173 | 173 |
| 174 Frame* Frame::GetAncestorWithFrameTreeClient() { |
| 175 Frame* frame = this; |
| 176 while (frame && !frame->frame_tree_client_) |
| 177 frame = frame->parent_; |
| 178 return frame; |
| 179 } |
| 180 |
| 174 void Frame::BuildFrameTree(std::vector<const Frame*>* frames) const { | 181 void Frame::BuildFrameTree(std::vector<const Frame*>* frames) const { |
| 175 frames->push_back(this); | 182 frames->push_back(this); |
| 176 for (const Frame* frame : children_) | 183 for (const Frame* frame : children_) |
| 177 frame->BuildFrameTree(frames); | 184 frame->BuildFrameTree(frames); |
| 178 } | 185 } |
| 179 | 186 |
| 180 void Frame::Add(Frame* node) { | 187 void Frame::Add(Frame* node) { |
| 181 DCHECK(!node->parent_); | 188 DCHECK(!node->parent_); |
| 182 | 189 |
| 183 node->parent_ = this; | 190 node->parent_ = this; |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 300 // TODO(sky): Change browser to create a child for each FrameTree. | 307 // TODO(sky): Change browser to create a child for each FrameTree. |
| 301 if (tree_->root() == this) { | 308 if (tree_->root() == this) { |
| 302 view_->RemoveObserver(this); | 309 view_->RemoveObserver(this); |
| 303 view_ = nullptr; | 310 view_ = nullptr; |
| 304 return; | 311 return; |
| 305 } | 312 } |
| 306 | 313 |
| 307 delete this; | 314 delete this; |
| 308 } | 315 } |
| 309 | 316 |
| 310 void Frame::PostMessageEventToFrame(uint32_t frame_id, MessageEventPtr event) { | 317 void Frame::PostMessageEventToFrame(uint32_t source_frame_id, |
| 311 Frame* target = tree_->root()->FindFrame(frame_id); | 318 uint32_t target_frame_id, |
| 312 if (!target || | 319 HTMLMessageEventPtr event) { |
| 313 !tree_->delegate_->CanPostMessageEventToFrame(this, target, event.get())) | 320 Frame* source = tree_->root()->FindFrame(source_frame_id); |
| 321 Frame* target = tree_->root()->FindFrame(target_frame_id); |
| 322 if (!target || !source || source == target || !tree_->delegate_ || |
| 323 !tree_->delegate_->CanPostMessageEventToFrame(source, target, |
| 324 event.get())) |
| 314 return; | 325 return; |
| 315 | 326 |
| 316 NOTIMPLEMENTED(); | 327 DCHECK(target->GetAncestorWithFrameTreeClient()); |
| 328 target->GetAncestorWithFrameTreeClient()->frame_tree_client_->PostMessage( |
| 329 source_frame_id, target_frame_id, event.Pass()); |
| 317 } | 330 } |
| 318 | 331 |
| 319 void Frame::LoadingStarted(uint32_t frame_id) { | 332 void Frame::LoadingStarted(uint32_t frame_id) { |
| 320 Frame* target_frame = FindTargetFrame(frame_id); | 333 Frame* target_frame = FindTargetFrame(frame_id); |
| 321 if (target_frame) | 334 if (target_frame) |
| 322 target_frame->LoadingStartedImpl(); | 335 target_frame->LoadingStartedImpl(); |
| 323 } | 336 } |
| 324 | 337 |
| 325 void Frame::LoadingStopped(uint32_t frame_id) { | 338 void Frame::LoadingStopped(uint32_t frame_id) { |
| 326 Frame* target_frame = FindTargetFrame(frame_id); | 339 Frame* target_frame = FindTargetFrame(frame_id); |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 379 tree_->delegate_->RequestNavigate(this, target_type, target_frame, | 392 tree_->delegate_->RequestNavigate(this, target_type, target_frame, |
| 380 request.Pass()); | 393 request.Pass()); |
| 381 } | 394 } |
| 382 } | 395 } |
| 383 | 396 |
| 384 void Frame::DidNavigateLocally(uint32_t frame_id, const mojo::String& url) { | 397 void Frame::DidNavigateLocally(uint32_t frame_id, const mojo::String& url) { |
| 385 NOTIMPLEMENTED(); | 398 NOTIMPLEMENTED(); |
| 386 } | 399 } |
| 387 | 400 |
| 388 } // namespace mandoline | 401 } // namespace mandoline |
| OLD | NEW |