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

Side by Side Diff: components/web_view/frame_tree.cc

Issue 1323233004: Adds better security checking to OnCreatedFrame() (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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/web_view/frame_tree.h ('k') | components/web_view/web_view_impl.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/web_view/frame_tree.h" 5 #include "components/web_view/frame_tree.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "components/web_view/frame_tree_delegate.h" 8 #include "components/web_view/frame_tree_delegate.h"
9 #include "components/web_view/frame_user_data.h" 9 #include "components/web_view/frame_user_data.h"
10 #include "components/web_view/web_view_switches.h" 10 #include "components/web_view/web_view_switches.h"
11 11
12 namespace web_view { 12 namespace web_view {
13 13
14 FrameTree::FrameTree(uint32_t root_app_id, 14 FrameTree::FrameTree(uint32_t root_app_id,
15 mojo::View* view, 15 mojo::View* view,
16 mojo::ViewTreeClientPtr view_tree_client,
16 FrameTreeDelegate* delegate, 17 FrameTreeDelegate* delegate,
17 FrameTreeClient* root_client, 18 FrameTreeClient* root_client,
18 scoped_ptr<FrameUserData> user_data, 19 scoped_ptr<FrameUserData> user_data,
19 const Frame::ClientPropertyMap& client_properties) 20 const Frame::ClientPropertyMap& client_properties)
20 : view_(view), 21 : view_(view),
21 delegate_(delegate), 22 delegate_(delegate),
22 root_(this, 23 root_(this,
23 view, 24 view,
24 view->id(), 25 view->id(),
25 root_app_id, 26 root_app_id,
26 ViewOwnership::DOESNT_OWN_VIEW, 27 ViewOwnership::DOESNT_OWN_VIEW,
27 root_client, 28 root_client,
28 user_data.Pass(), 29 user_data.Pass(),
29 client_properties), 30 client_properties),
30 progress_(0.f), 31 progress_(0.f),
31 change_id_(1u) { 32 change_id_(1u) {
32 root_.Init(nullptr); 33 root_.Init(nullptr, view_tree_client.Pass());
33 } 34 }
34 35
35 FrameTree::~FrameTree() { 36 FrameTree::~FrameTree() {
36 } 37 }
37 38
38 // static 39 // static
39 bool FrameTree::AlwaysCreateNewFrameTree() { 40 bool FrameTree::AlwaysCreateNewFrameTree() {
40 return base::CommandLine::ForCurrentProcess()->HasSwitch( 41 return base::CommandLine::ForCurrentProcess()->HasSwitch(
41 web_view::switches::kOOPIFAlwaysCreateNewFrameTree); 42 web_view::switches::kOOPIFAlwaysCreateNewFrameTree);
42 } 43 }
43 44
44 Frame* FrameTree::CreateAndAddFrame(mojo::View* view, 45 Frame* FrameTree::CreateAndAddFrame(mojo::View* view,
45 Frame* parent, 46 Frame* parent,
46 uint32_t app_id, 47 uint32_t app_id,
47 FrameTreeClient* client, 48 FrameTreeClient* client,
48 scoped_ptr<FrameUserData> user_data) { 49 scoped_ptr<FrameUserData> user_data) {
49 return CreateAndAddFrameImpl(view, view->id(), app_id, parent, client, 50 return CreateAndAddFrameImpl(view, view->id(), app_id, parent, client,
50 user_data.Pass(), Frame::ClientPropertyMap()); 51 user_data.Pass(), Frame::ClientPropertyMap());
51 } 52 }
52 53
53 void FrameTree::CreateSharedFrame( 54 Frame* FrameTree::CreateSharedFrame(
54 Frame* parent, 55 Frame* parent,
55 uint32_t frame_id, 56 uint32_t frame_id,
56 uint32_t app_id, 57 uint32_t app_id,
57 const Frame::ClientPropertyMap& client_properties) { 58 const Frame::ClientPropertyMap& client_properties) {
58 mojo::View* frame_view = root_.view()->GetChildById(frame_id); 59 mojo::View* frame_view = root_.view()->GetChildById(frame_id);
59 // |frame_view| may be null if the View hasn't been created yet. If this is 60 // |frame_view| may be null if the View hasn't been created yet. If this is
60 // the case the View will be connected to the Frame in Frame::OnTreeChanged. 61 // the case the View will be connected to the Frame in Frame::OnTreeChanged.
61 CreateAndAddFrameImpl(frame_view, frame_id, app_id, parent, nullptr, nullptr, 62 return CreateAndAddFrameImpl(frame_view, frame_id, app_id, parent, nullptr,
62 client_properties); 63 nullptr, client_properties);
63 } 64 }
64 65
65 uint32_t FrameTree::AdvanceChangeID() { 66 uint32_t FrameTree::AdvanceChangeID() {
66 return ++change_id_; 67 return ++change_id_;
67 } 68 }
68 69
69 Frame* FrameTree::CreateAndAddFrameImpl( 70 Frame* FrameTree::CreateAndAddFrameImpl(
70 mojo::View* view, 71 mojo::View* view,
71 uint32_t frame_id, 72 uint32_t frame_id,
72 uint32_t app_id, 73 uint32_t app_id,
73 Frame* parent, 74 Frame* parent,
74 FrameTreeClient* client, 75 FrameTreeClient* client,
75 scoped_ptr<FrameUserData> user_data, 76 scoped_ptr<FrameUserData> user_data,
76 const Frame::ClientPropertyMap& client_properties) { 77 const Frame::ClientPropertyMap& client_properties) {
77 Frame* frame = 78 Frame* frame =
78 new Frame(this, view, frame_id, app_id, ViewOwnership::OWNS_VIEW, client, 79 new Frame(this, view, frame_id, app_id, ViewOwnership::OWNS_VIEW, client,
79 user_data.Pass(), client_properties); 80 user_data.Pass(), client_properties);
80 frame->Init(parent); 81 frame->Init(parent, nullptr);
81 return frame; 82 return frame;
82 } 83 }
83 84
84 void FrameTree::LoadingStateChanged() { 85 void FrameTree::LoadingStateChanged() {
85 bool loading = root_.IsLoading(); 86 bool loading = root_.IsLoading();
86 if (delegate_) 87 if (delegate_)
87 delegate_->LoadingStateChanged(loading); 88 delegate_->LoadingStateChanged(loading);
88 } 89 }
89 90
90 void FrameTree::ProgressChanged() { 91 void FrameTree::ProgressChanged() {
(...skipping 11 matching lines...) Expand all
102 delegate_->TitleChanged(title); 103 delegate_->TitleChanged(title);
103 } 104 }
104 105
105 void FrameTree::ClientPropertyChanged(const Frame* source, 106 void FrameTree::ClientPropertyChanged(const Frame* source,
106 const mojo::String& name, 107 const mojo::String& name,
107 const mojo::Array<uint8_t>& value) { 108 const mojo::Array<uint8_t>& value) {
108 root_.NotifyClientPropertyChanged(source, name, value); 109 root_.NotifyClientPropertyChanged(source, name, value);
109 } 110 }
110 111
111 } // namespace web_view 112 } // namespace web_view
OLDNEW
« no previous file with comments | « components/web_view/frame_tree.h ('k') | components/web_view/web_view_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698