| 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 "blimp/engine/browser/blimp_engine_session.h" | 5 #include "blimp/engine/browser/blimp_engine_session.h" |
| 6 | 6 |
| 7 #include "base/strings/utf_string_conversions.h" | 7 #include "base/strings/utf_string_conversions.h" |
| 8 #include "blimp/common/create_blimp_message.h" | 8 #include "blimp/common/create_blimp_message.h" |
| 9 #include "blimp/common/proto/tab_control.pb.h" | 9 #include "blimp/common/proto/tab_control.pb.h" |
| 10 #include "blimp/engine/browser/blimp_browser_context.h" | 10 #include "blimp/engine/browser/blimp_browser_context.h" |
| 11 #include "blimp/engine/ui/blimp_layout_manager.h" | 11 #include "blimp/engine/ui/blimp_layout_manager.h" |
| 12 #include "blimp/engine/ui/blimp_screen.h" | 12 #include "blimp/engine/ui/blimp_screen.h" |
| 13 #include "blimp/engine/ui/blimp_ui_context_factory.h" | 13 #include "blimp/engine/ui/blimp_ui_context_factory.h" |
| 14 #include "blimp/net/blimp_connection.h" | 14 #include "blimp/net/blimp_connection.h" |
| 15 #include "blimp/net/blimp_message_multiplexer.h" | 15 #include "blimp/net/blimp_message_multiplexer.h" |
| 16 #include "blimp/net/browser_connection_handler.h" | 16 #include "blimp/net/browser_connection_handler.h" |
| 17 #include "blimp/net/common.h" |
| 17 #include "blimp/net/engine_authentication_handler.h" | 18 #include "blimp/net/engine_authentication_handler.h" |
| 18 #include "blimp/net/engine_connection_manager.h" | 19 #include "blimp/net/engine_connection_manager.h" |
| 19 #include "blimp/net/null_blimp_message_processor.h" | 20 #include "blimp/net/null_blimp_message_processor.h" |
| 20 #include "blimp/net/tcp_engine_transport.h" | 21 #include "blimp/net/tcp_engine_transport.h" |
| 21 #include "content/public/browser/browser_context.h" | 22 #include "content/public/browser/browser_context.h" |
| 22 #include "content/public/browser/browser_thread.h" | 23 #include "content/public/browser/browser_thread.h" |
| 23 #include "content/public/browser/navigation_controller.h" | 24 #include "content/public/browser/navigation_controller.h" |
| 24 #include "content/public/browser/navigation_entry.h" | 25 #include "content/public/browser/navigation_entry.h" |
| 25 #include "content/public/browser/render_view_host.h" | 26 #include "content/public/browser/render_view_host.h" |
| 26 #include "content/public/browser/render_widget_host.h" | 27 #include "content/public/browser/render_widget_host.h" |
| (...skipping 13 matching lines...) Expand all Loading... |
| 40 #endif | 41 #endif |
| 41 | 42 |
| 42 namespace blimp { | 43 namespace blimp { |
| 43 namespace engine { | 44 namespace engine { |
| 44 namespace { | 45 namespace { |
| 45 | 46 |
| 46 const int kDummyTabId = 0; | 47 const int kDummyTabId = 0; |
| 47 const float kDefaultScaleFactor = 1.f; | 48 const float kDefaultScaleFactor = 1.f; |
| 48 const int kDefaultDisplayWidth = 800; | 49 const int kDefaultDisplayWidth = 800; |
| 49 const int kDefaultDisplayHeight = 600; | 50 const int kDefaultDisplayHeight = 600; |
| 50 const uint16_t kDefaultPortNumber = 25467; | 51 const uint16_t kDefaultPort = 25467; |
| 51 | 52 |
| 52 // Focus rules that support activating an child window. | 53 // Focus rules that support activating an child window. |
| 53 class FocusRulesImpl : public wm::BaseFocusRules { | 54 class FocusRulesImpl : public wm::BaseFocusRules { |
| 54 public: | 55 public: |
| 55 FocusRulesImpl() {} | 56 FocusRulesImpl() {} |
| 56 ~FocusRulesImpl() override {} | 57 ~FocusRulesImpl() override {} |
| 57 | 58 |
| 58 bool SupportsChildActivation(aura::Window* window) const override { | 59 bool SupportsChildActivation(aura::Window* window) const override { |
| 59 return true; | 60 return true; |
| 60 } | 61 } |
| 61 | 62 |
| 62 private: | 63 private: |
| 63 DISALLOW_COPY_AND_ASSIGN(FocusRulesImpl); | 64 DISALLOW_COPY_AND_ASSIGN(FocusRulesImpl); |
| 64 }; | 65 }; |
| 65 | 66 |
| 67 net::IPAddressNumber GetIPv4AnyAddress() { |
| 68 net::IPAddressNumber output; |
| 69 output.push_back(0); |
| 70 output.push_back(0); |
| 71 output.push_back(0); |
| 72 output.push_back(0); |
| 73 return output; |
| 74 } |
| 75 |
| 66 } // namespace | 76 } // namespace |
| 67 | 77 |
| 68 // This class's functions and destruction are all invoked on the IO thread by | 78 // This class's functions and destruction are all invoked on the IO thread by |
| 69 // the BlimpEngineSession. | 79 // the BlimpEngineSession. |
| 70 class BlimpNetworkComponents { | 80 class EngineNetworkComponents { |
| 71 public: | 81 public: |
| 72 explicit BlimpNetworkComponents(net::NetLog* net_log); | 82 explicit EngineNetworkComponents(net::NetLog* net_log); |
| 73 ~BlimpNetworkComponents(); | 83 ~EngineNetworkComponents(); |
| 74 | 84 |
| 75 void Initialize(); | 85 void Initialize(); |
| 76 | 86 |
| 77 private: | 87 private: |
| 78 net::NetLog* net_log_; | 88 net::NetLog* net_log_; |
| 79 scoped_ptr<BrowserConnectionHandler> connection_handler_; | 89 scoped_ptr<BrowserConnectionHandler> connection_handler_; |
| 80 scoped_ptr<EngineAuthenticationHandler> authentication_handler_; | 90 scoped_ptr<EngineAuthenticationHandler> authentication_handler_; |
| 81 scoped_ptr<EngineConnectionManager> connection_manager_; | 91 scoped_ptr<EngineConnectionManager> connection_manager_; |
| 82 | 92 |
| 83 DISALLOW_COPY_AND_ASSIGN(BlimpNetworkComponents); | 93 DISALLOW_COPY_AND_ASSIGN(EngineNetworkComponents); |
| 84 }; | 94 }; |
| 85 | 95 |
| 86 BlimpNetworkComponents::BlimpNetworkComponents(net::NetLog* net_log) | 96 EngineNetworkComponents::EngineNetworkComponents(net::NetLog* net_log) |
| 87 : net_log_(net_log) {} | 97 : net_log_(net_log) {} |
| 88 | 98 |
| 89 BlimpNetworkComponents::~BlimpNetworkComponents() { | 99 EngineNetworkComponents::~EngineNetworkComponents() { |
| 90 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); | 100 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); |
| 91 } | 101 } |
| 92 | 102 |
| 93 void BlimpNetworkComponents::Initialize() { | 103 void EngineNetworkComponents::Initialize() { |
| 94 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); | 104 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); |
| 95 DCHECK(!connection_handler_); | 105 DCHECK(!connection_handler_); |
| 96 | 106 |
| 97 // Creates and connects net components. | 107 // Creates and connects net components. |
| 98 // A BlimpConnection flows from | 108 // A BlimpConnection flows from |
| 99 // connection_manager_ --> authentication_handler_ --> connection_handler_ | 109 // connection_manager_ --> authentication_handler_ --> connection_handler_ |
| 100 connection_handler_.reset(new BrowserConnectionHandler); | 110 connection_handler_.reset(new BrowserConnectionHandler); |
| 101 authentication_handler_.reset( | 111 authentication_handler_.reset( |
| 102 new EngineAuthenticationHandler(connection_handler_.get())); | 112 new EngineAuthenticationHandler(connection_handler_.get())); |
| 103 connection_manager_.reset( | 113 connection_manager_.reset( |
| 104 new EngineConnectionManager(authentication_handler_.get())); | 114 new EngineConnectionManager(authentication_handler_.get())); |
| 105 | 115 |
| 106 // Adds BlimpTransports to connection_manager_. | 116 // Adds BlimpTransports to connection_manager_. |
| 107 net::IPAddressNumber local_ip_any; | 117 net::IPEndPoint address(GetIPv4AnyAddress(), kDefaultPort); |
| 108 bool success = net::ParseIPLiteralToNumber("0.0.0.0", &local_ip_any); | |
| 109 DCHECK(success); | |
| 110 net::IPEndPoint address(local_ip_any, kDefaultPortNumber); | |
| 111 connection_manager_->AddTransport( | 118 connection_manager_->AddTransport( |
| 112 make_scoped_ptr(new TCPEngineTransport(address, net_log_))); | 119 make_scoped_ptr(new TCPEngineTransport(address, net_log_))); |
| 113 } | 120 } |
| 114 | 121 |
| 115 BlimpEngineSession::BlimpEngineSession( | 122 BlimpEngineSession::BlimpEngineSession( |
| 116 scoped_ptr<BlimpBrowserContext> browser_context, | 123 scoped_ptr<BlimpBrowserContext> browser_context, |
| 117 net::NetLog* net_log) | 124 net::NetLog* net_log) |
| 118 : browser_context_(std::move(browser_context)), | 125 : browser_context_(std::move(browser_context)), |
| 119 screen_(new BlimpScreen), | 126 screen_(new BlimpScreen), |
| 120 net_components_(new BlimpNetworkComponents(net_log)) { | 127 net_components_(new EngineNetworkComponents(net_log)) { |
| 121 screen_->UpdateDisplayScaleAndSize(kDefaultScaleFactor, | 128 screen_->UpdateDisplayScaleAndSize(kDefaultScaleFactor, |
| 122 gfx::Size(kDefaultDisplayWidth, | 129 gfx::Size(kDefaultDisplayWidth, |
| 123 kDefaultDisplayHeight)); | 130 kDefaultDisplayHeight)); |
| 124 render_widget_feature_.SetDelegate(kDummyTabId, this); | 131 render_widget_feature_.SetDelegate(kDummyTabId, this); |
| 125 } | 132 } |
| 126 | 133 |
| 127 BlimpEngineSession::~BlimpEngineSession() { | 134 BlimpEngineSession::~BlimpEngineSession() { |
| 128 render_widget_feature_.RemoveDelegate(kDummyTabId); | 135 render_widget_feature_.RemoveDelegate(kDummyTabId); |
| 129 | 136 |
| 130 // Safely delete network components on the IO thread. | 137 // Safely delete network components on the IO thread. |
| (...skipping 26 matching lines...) Expand all Loading... |
| 157 new aura::client::DefaultCaptureClient(window_tree_host_->window())); | 164 new aura::client::DefaultCaptureClient(window_tree_host_->window())); |
| 158 | 165 |
| 159 #if defined(USE_X11) | 166 #if defined(USE_X11) |
| 160 window_tree_host_->Show(); | 167 window_tree_host_->Show(); |
| 161 #endif | 168 #endif |
| 162 | 169 |
| 163 window_tree_host_->SetBounds(gfx::Rect(screen_->GetPrimaryDisplay().size())); | 170 window_tree_host_->SetBounds(gfx::Rect(screen_->GetPrimaryDisplay().size())); |
| 164 | 171 |
| 165 content::BrowserThread::PostTask( | 172 content::BrowserThread::PostTask( |
| 166 content::BrowserThread::IO, FROM_HERE, | 173 content::BrowserThread::IO, FROM_HERE, |
| 167 base::Bind(&BlimpNetworkComponents::Initialize, | 174 base::Bind(&EngineNetworkComponents::Initialize, |
| 168 base::Unretained(net_components_.get()))); | 175 base::Unretained(net_components_.get()))); |
| 169 | 176 |
| 170 // Registers features. | 177 // Register features' message senders and receivers. |
| 171 // TODO(kmarshall) Refactor this using | |
| 172 // 1. Get outgoing message processors for blimp message types of a feature. | |
| 173 // 2. Create a feature with these outgoing message processors. | |
| 174 // 3. Register the feature as the incoming message processor for these | |
| 175 // blimp message types. | |
| 176 tab_control_message_sender_ = | 178 tab_control_message_sender_ = |
| 177 RegisterFeature(BlimpMessage::TAB_CONTROL, this); | 179 RegisterFeature(BlimpMessage::TAB_CONTROL, this); |
| 178 navigation_message_sender_ = RegisterFeature(BlimpMessage::NAVIGATION, this); | 180 navigation_message_sender_ = RegisterFeature(BlimpMessage::NAVIGATION, this); |
| 179 | |
| 180 render_widget_feature_.set_render_widget_message_sender( | 181 render_widget_feature_.set_render_widget_message_sender( |
| 181 RegisterFeature(BlimpMessage::RENDER_WIDGET, &render_widget_feature_)); | 182 RegisterFeature(BlimpMessage::RENDER_WIDGET, &render_widget_feature_)); |
| 182 render_widget_feature_.set_input_message_sender( | 183 render_widget_feature_.set_input_message_sender( |
| 183 RegisterFeature(BlimpMessage::INPUT, &render_widget_feature_)); | 184 RegisterFeature(BlimpMessage::INPUT, &render_widget_feature_)); |
| 184 render_widget_feature_.set_compositor_message_sender( | 185 render_widget_feature_.set_compositor_message_sender( |
| 185 RegisterFeature(BlimpMessage::COMPOSITOR, &render_widget_feature_)); | 186 RegisterFeature(BlimpMessage::COMPOSITOR, &render_widget_feature_)); |
| 186 } | 187 } |
| 187 | 188 |
| 188 scoped_ptr<BlimpMessageProcessor> BlimpEngineSession::RegisterFeature( | 189 scoped_ptr<BlimpMessageProcessor> BlimpEngineSession::RegisterFeature( |
| 189 BlimpMessage::Type type, | 190 BlimpMessage::Type type, |
| (...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 431 | 432 |
| 432 aura::Window* parent = window_tree_host_->window(); | 433 aura::Window* parent = window_tree_host_->window(); |
| 433 aura::Window* content = web_contents_->GetNativeView(); | 434 aura::Window* content = web_contents_->GetNativeView(); |
| 434 if (!parent->Contains(content)) | 435 if (!parent->Contains(content)) |
| 435 parent->AddChild(content); | 436 parent->AddChild(content); |
| 436 content->Show(); | 437 content->Show(); |
| 437 } | 438 } |
| 438 | 439 |
| 439 } // namespace engine | 440 } // namespace engine |
| 440 } // namespace blimp | 441 } // namespace blimp |
| OLD | NEW |