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