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

Unified Diff: mandoline/tab/frame.cc

Issue 1270313006: Connects PostMessage() for OOPIFs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix windows Created 5 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « mandoline/tab/frame.h ('k') | mandoline/tab/frame_apptest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mandoline/tab/frame.cc
diff --git a/mandoline/tab/frame.cc b/mandoline/tab/frame.cc
index b120c933e736788cfc79f22abad2e72ac3bb799d..6e1613da576d487f87ea6eb041af82c710e2d25e 100644
--- a/mandoline/tab/frame.cc
+++ b/mandoline/tab/frame.cc
@@ -171,6 +171,13 @@ void Frame::SetView(mojo::View* view) {
view_->AddObserver(this);
}
+Frame* Frame::GetAncestorWithFrameTreeClient() {
+ Frame* frame = this;
+ while (frame && !frame->frame_tree_client_)
+ frame = frame->parent_;
+ return frame;
+}
+
void Frame::BuildFrameTree(std::vector<const Frame*>* frames) const {
frames->push_back(this);
for (const Frame* frame : children_)
@@ -307,13 +314,19 @@ void Frame::OnViewDestroying(mojo::View* view) {
delete this;
}
-void Frame::PostMessageEventToFrame(uint32_t frame_id, MessageEventPtr event) {
- Frame* target = tree_->root()->FindFrame(frame_id);
- if (!target ||
- !tree_->delegate_->CanPostMessageEventToFrame(this, target, event.get()))
+void Frame::PostMessageEventToFrame(uint32_t source_frame_id,
+ uint32_t target_frame_id,
+ HTMLMessageEventPtr event) {
+ Frame* source = tree_->root()->FindFrame(source_frame_id);
+ Frame* target = tree_->root()->FindFrame(target_frame_id);
+ if (!target || !source || source == target || !tree_->delegate_ ||
+ !tree_->delegate_->CanPostMessageEventToFrame(source, target,
+ event.get()))
return;
- NOTIMPLEMENTED();
+ DCHECK(target->GetAncestorWithFrameTreeClient());
+ target->GetAncestorWithFrameTreeClient()->frame_tree_client_->PostMessage(
+ source_frame_id, target_frame_id, event.Pass());
}
void Frame::LoadingStarted(uint32_t frame_id) {
« no previous file with comments | « mandoline/tab/frame.h ('k') | mandoline/tab/frame_apptest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698