| 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 |