| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "chrome/browser/ui/webui/devtools_ui.h" | 5 #include "chrome/browser/ui/webui/devtools_ui.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/memory/ref_counted_memory.h" | 10 #include "base/memory/ref_counted_memory.h" |
| (...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 262 Profile* profile, | 262 Profile* profile, |
| 263 const std::string url, | 263 const std::string url, |
| 264 const DevToolsAndroidBridge::RemotePageCallback& callback); | 264 const DevToolsAndroidBridge::RemotePageCallback& callback); |
| 265 virtual ~OpenRemotePageRequest() {} | 265 virtual ~OpenRemotePageRequest() {} |
| 266 | 266 |
| 267 private: | 267 private: |
| 268 // DevToolsAndroidBridge::Listener overrides. | 268 // DevToolsAndroidBridge::Listener overrides. |
| 269 virtual void DeviceListChanged( | 269 virtual void DeviceListChanged( |
| 270 const DevToolsAndroidBridge::RemoteDevices& devices) override; | 270 const DevToolsAndroidBridge::RemoteDevices& devices) override; |
| 271 | 271 |
| 272 bool OpenInBrowser(DevToolsAndroidBridge::RemoteBrowser* browser); | 272 bool OpenInBrowser( |
| 273 void RemotePageOpened(DevToolsAndroidBridge::RemotePage* page); | 273 scoped_refptr<DevToolsAndroidBridge::RemoteBrowser> browser); |
| 274 void RemotePageOpened(scoped_refptr<DevToolsAndroidBridge::RemotePage> page); |
| 274 | 275 |
| 275 std::string url_; | 276 std::string url_; |
| 276 DevToolsAndroidBridge::RemotePageCallback callback_; | 277 DevToolsAndroidBridge::RemotePageCallback callback_; |
| 277 bool opening_; | 278 bool opening_; |
| 278 scoped_refptr<DevToolsAndroidBridge> android_bridge_; | 279 scoped_refptr<DevToolsAndroidBridge> android_bridge_; |
| 279 | 280 |
| 280 DISALLOW_COPY_AND_ASSIGN(OpenRemotePageRequest); | 281 DISALLOW_COPY_AND_ASSIGN(OpenRemotePageRequest); |
| 281 }; | 282 }; |
| 282 | 283 |
| 283 OpenRemotePageRequest::OpenRemotePageRequest( | 284 OpenRemotePageRequest::OpenRemotePageRequest( |
| (...skipping 24 matching lines...) Expand all Loading... |
| 308 browsers.begin(); bit != browsers.end(); ++bit) { | 309 browsers.begin(); bit != browsers.end(); ++bit) { |
| 309 if (OpenInBrowser(bit->get())) { | 310 if (OpenInBrowser(bit->get())) { |
| 310 opening_ = true; | 311 opening_ = true; |
| 311 return; | 312 return; |
| 312 } | 313 } |
| 313 } | 314 } |
| 314 } | 315 } |
| 315 } | 316 } |
| 316 | 317 |
| 317 bool OpenRemotePageRequest::OpenInBrowser( | 318 bool OpenRemotePageRequest::OpenInBrowser( |
| 318 DevToolsAndroidBridge::RemoteBrowser* browser) { | 319 scoped_refptr<DevToolsAndroidBridge::RemoteBrowser> browser) { |
| 319 if (!browser->IsChrome()) | 320 if (!browser->IsChrome()) |
| 320 return false; | 321 return false; |
| 321 #if defined(DEBUG_DEVTOOLS) | 322 #if defined(DEBUG_DEVTOOLS) |
| 322 if (browser->serial() == kLocalSerial) | 323 if (browser->serial() == kLocalSerial) |
| 323 return false; | 324 return false; |
| 324 #endif // defined(DEBUG_DEVTOOLS) | 325 #endif // defined(DEBUG_DEVTOOLS) |
| 325 android_bridge_->OpenRemotePage( | 326 android_bridge_->OpenRemotePage( |
| 326 browser, | 327 browser, |
| 327 url_, | 328 url_, |
| 328 base::Bind(&OpenRemotePageRequest::RemotePageOpened, | 329 base::Bind(&OpenRemotePageRequest::RemotePageOpened, |
| 329 base::Unretained(this))); | 330 base::Unretained(this))); |
| 330 return true; | 331 return true; |
| 331 } | 332 } |
| 332 | 333 |
| 333 void OpenRemotePageRequest::RemotePageOpened( | 334 void OpenRemotePageRequest::RemotePageOpened( |
| 334 DevToolsAndroidBridge::RemotePage* page) { | 335 scoped_refptr<DevToolsAndroidBridge::RemotePage> page) { |
| 335 callback_.Run(page); | 336 callback_.Run(page); |
| 336 android_bridge_->RemoveDeviceListListener(this); | 337 android_bridge_->RemoveDeviceListListener(this); |
| 337 delete this; | 338 delete this; |
| 338 } | 339 } |
| 339 | 340 |
| 340 } // namespace | 341 } // namespace |
| 341 | 342 |
| 342 // DevToolsUI ----------------------------------------------------------------- | 343 // DevToolsUI ----------------------------------------------------------------- |
| 343 | 344 |
| 344 // static | 345 // static |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 388 bindings_.Detach(); | 389 bindings_.Detach(); |
| 389 remote_page_opening_url_ = entry->GetVirtualURL(); | 390 remote_page_opening_url_ = entry->GetVirtualURL(); |
| 390 new OpenRemotePageRequest(Profile::FromWebUI(web_ui()), | 391 new OpenRemotePageRequest(Profile::FromWebUI(web_ui()), |
| 391 entry->GetVirtualURL().query(), | 392 entry->GetVirtualURL().query(), |
| 392 base::Bind(&DevToolsUI::RemotePageOpened, | 393 base::Bind(&DevToolsUI::RemotePageOpened, |
| 393 weak_factory_.GetWeakPtr(), | 394 weak_factory_.GetWeakPtr(), |
| 394 entry->GetVirtualURL())); | 395 entry->GetVirtualURL())); |
| 395 } | 396 } |
| 396 | 397 |
| 397 void DevToolsUI::RemotePageOpened( | 398 void DevToolsUI::RemotePageOpened( |
| 398 const GURL& virtual_url, DevToolsAndroidBridge::RemotePage* page) { | 399 const GURL& virtual_url, |
| 400 scoped_refptr<DevToolsAndroidBridge::RemotePage> page) { |
| 399 // Already navigated away while connecting to remote device. | 401 // Already navigated away while connecting to remote device. |
| 400 if (remote_page_opening_url_ != virtual_url) | 402 if (remote_page_opening_url_ != virtual_url) |
| 401 return; | 403 return; |
| 402 | 404 |
| 403 scoped_ptr<DevToolsAndroidBridge::RemotePage> my_page(page); | |
| 404 remote_page_opening_url_ = GURL(); | 405 remote_page_opening_url_ = GURL(); |
| 405 | 406 |
| 406 Profile* profile = Profile::FromWebUI(web_ui()); | 407 Profile* profile = Profile::FromWebUI(web_ui()); |
| 407 GURL url = DevToolsUIBindings::ApplyThemeToURL(profile, | 408 GURL url = DevToolsUIBindings::ApplyThemeToURL(profile, |
| 408 DevToolsUI::GetProxyURL(page->GetFrontendURL())); | 409 DevToolsUI::GetProxyURL(page->frontend_url())); |
| 409 | 410 |
| 410 content::NavigationController& navigation_controller = | 411 content::NavigationController& navigation_controller = |
| 411 web_ui()->GetWebContents()->GetController(); | 412 web_ui()->GetWebContents()->GetController(); |
| 412 content::NavigationController::LoadURLParams params(url); | 413 content::NavigationController::LoadURLParams params(url); |
| 413 params.should_replace_current_entry = true; | 414 params.should_replace_current_entry = true; |
| 414 remote_frontend_loading_url_ = virtual_url; | 415 remote_frontend_loading_url_ = virtual_url; |
| 415 navigation_controller.LoadURLWithParams(params); | 416 navigation_controller.LoadURLWithParams(params); |
| 416 navigation_controller.GetPendingEntry()->SetVirtualURL(virtual_url); | 417 navigation_controller.GetPendingEntry()->SetVirtualURL(virtual_url); |
| 417 | 418 |
| 418 bindings_.AttachTo(page->GetTarget()->GetAgentHost()); | 419 DevToolsAndroidBridge* bridge = |
| 420 DevToolsAndroidBridge::Factory::GetForProfile(profile); |
| 421 scoped_ptr<DevToolsTargetImpl> target(bridge->CreatePageTarget(page)); |
| 422 bindings_.AttachTo(target->GetAgentHost()); |
| 419 } | 423 } |
| OLD | NEW |