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_tree_manager.h" | 5 #include "components/html_viewer/html_frame_tree_manager.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 scoped_ptr<DocumentResourceWaiter> resource_waiter, | 73 scoped_ptr<DocumentResourceWaiter> resource_waiter, |
74 HTMLFrameDelegate* delegate) { | 74 HTMLFrameDelegate* delegate) { |
75 if (!instances_) | 75 if (!instances_) |
76 instances_ = new TreeMap; | 76 instances_ = new TreeMap; |
77 | 77 |
78 mojo::InterfaceRequest<web_view::mojom::FrameClient> frame_client_request; | 78 mojo::InterfaceRequest<web_view::mojom::FrameClient> frame_client_request; |
79 web_view::mojom::FramePtr server_frame; | 79 web_view::mojom::FramePtr server_frame; |
80 mojo::Array<web_view::mojom::FrameDataPtr> frame_data; | 80 mojo::Array<web_view::mojom::FrameDataPtr> frame_data; |
81 uint32_t change_id; | 81 uint32_t change_id; |
82 uint32_t window_id; | 82 uint32_t window_id; |
83 web_view::mojom::ViewConnectType view_connect_type; | 83 web_view::mojom::WindowConnectType window_connect_type; |
84 web_view::mojom::FrameClient::OnConnectCallback on_connect_callback; | 84 web_view::mojom::FrameClient::OnConnectCallback on_connect_callback; |
85 resource_waiter->Release(&frame_client_request, &server_frame, &frame_data, | 85 resource_waiter->Release(&frame_client_request, &server_frame, &frame_data, |
86 &change_id, &window_id, &view_connect_type, | 86 &change_id, &window_id, &window_connect_type, |
87 &on_connect_callback); | 87 &on_connect_callback); |
88 resource_waiter.reset(); | 88 resource_waiter.reset(); |
89 | 89 |
90 on_connect_callback.Run(); | 90 on_connect_callback.Run(); |
91 | 91 |
92 HTMLFrameTreeManager* frame_tree = | 92 HTMLFrameTreeManager* frame_tree = |
93 FindFrameTreeWithRoot(frame_data[0]->frame_id); | 93 FindFrameTreeWithRoot(frame_data[0]->frame_id); |
94 | 94 |
95 DCHECK(!frame_tree || change_id <= frame_tree->change_id_); | 95 DCHECK(!frame_tree || change_id <= frame_tree->change_id_); |
96 | 96 |
97 DVLOG(2) << "HTMLFrameTreeManager::CreateFrameAndAttachToTree " | 97 DVLOG(2) << "HTMLFrameTreeManager::CreateFrameAndAttachToTree " |
98 << " frame_tree=" << frame_tree << " use_existing=" | 98 << " frame_tree=" << frame_tree << " use_existing=" |
99 << (view_connect_type == | 99 << (window_connect_type == |
100 web_view::mojom::VIEW_CONNECT_TYPE_USE_EXISTING) | 100 web_view::mojom::WINDOW_CONNECT_TYPE_USE_EXISTING) |
101 << " frame_id=" << window_id; | 101 << " frame_id=" << window_id; |
102 if (view_connect_type == web_view::mojom::VIEW_CONNECT_TYPE_USE_EXISTING && | 102 if (window_connect_type == |
| 103 web_view::mojom::WINDOW_CONNECT_TYPE_USE_EXISTING && |
103 !frame_tree) { | 104 !frame_tree) { |
104 DVLOG(1) << "was told to use existing window but do not have frame tree"; | 105 DVLOG(1) << "was told to use existing window but do not have frame tree"; |
105 return nullptr; | 106 return nullptr; |
106 } | 107 } |
107 | 108 |
108 if (!frame_tree) { | 109 if (!frame_tree) { |
109 frame_tree = new HTMLFrameTreeManager(global_state); | 110 frame_tree = new HTMLFrameTreeManager(global_state); |
110 frame_tree->Init(delegate, window, frame_data, change_id); | 111 frame_tree->Init(delegate, window, frame_data, change_id); |
111 (*instances_)[frame_data[0]->frame_id] = frame_tree; | 112 (*instances_)[frame_data[0]->frame_id] = frame_tree; |
112 } else if (view_connect_type == | 113 } else if (window_connect_type == |
113 web_view::mojom::VIEW_CONNECT_TYPE_USE_EXISTING) { | 114 web_view::mojom::WINDOW_CONNECT_TYPE_USE_EXISTING) { |
114 HTMLFrame* existing_frame = frame_tree->root_->FindFrame(window_id); | 115 HTMLFrame* existing_frame = frame_tree->root_->FindFrame(window_id); |
115 if (!existing_frame) { | 116 if (!existing_frame) { |
116 DVLOG(1) << "was told to use existing window but could not find window"; | 117 DVLOG(1) << "was told to use existing window but could not find window"; |
117 return nullptr; | 118 return nullptr; |
118 } | 119 } |
119 if (!existing_frame->IsLocal()) { | 120 if (!existing_frame->IsLocal()) { |
120 DVLOG(1) << "was told to use existing window, but frame is remote"; | 121 DVLOG(1) << "was told to use existing window, but frame is remote"; |
121 return nullptr; | 122 return nullptr; |
122 } | 123 } |
123 existing_frame->SwapDelegate(delegate); | 124 existing_frame->SwapDelegate(delegate); |
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
399 | 400 |
400 for (const auto& child : node->children()) | 401 for (const auto& child : node->children()) |
401 nodes.push(child); | 402 nodes.push(child); |
402 } | 403 } |
403 } | 404 } |
404 | 405 |
405 return new_local_frame; | 406 return new_local_frame; |
406 } | 407 } |
407 | 408 |
408 } // namespace mojo | 409 } // namespace mojo |
OLD | NEW |