Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(415)

Side by Side Diff: chrome/browser/devtools/devtools_targets_ui.cc

Issue 596253003: DevTools: RemoteDevice and RemoteBrowser are now value types (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@pfc3
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/devtools/devtools_targets_ui.h" 5 #include "chrome/browser/devtools/devtools_targets_ui.h"
6 6
7 #include "base/memory/weak_ptr.h" 7 #include "base/memory/weak_ptr.h"
8 #include "base/stl_util.h" 8 #include "base/stl_util.h"
9 #include "base/strings/stringprintf.h" 9 #include "base/strings/stringprintf.h"
10 #include "base/values.h" 10 #include "base/values.h"
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 const DevToolsTargetsUIHandler::TargetCallback&) OVERRIDE; 285 const DevToolsTargetsUIHandler::TargetCallback&) OVERRIDE;
286 286
287 virtual scoped_refptr<content::DevToolsAgentHost> GetBrowserAgentHost( 287 virtual scoped_refptr<content::DevToolsAgentHost> GetBrowserAgentHost(
288 const std::string& browser_id) OVERRIDE; 288 const std::string& browser_id) OVERRIDE;
289 289
290 private: 290 private:
291 // DevToolsAndroidBridge::Listener overrides. 291 // DevToolsAndroidBridge::Listener overrides.
292 virtual void DeviceListChanged( 292 virtual void DeviceListChanged(
293 const DevToolsAndroidBridge::RemoteDevices& devices) OVERRIDE; 293 const DevToolsAndroidBridge::RemoteDevices& devices) OVERRIDE;
294 294
295 DevToolsAndroidBridge* GetAndroidBridge();
296
295 Profile* profile_; 297 Profile* profile_;
296 298
297 typedef std::map<std::string, 299 typedef std::map<std::string,
298 scoped_refptr<DevToolsAndroidBridge::RemoteBrowser> > RemoteBrowsers; 300 scoped_refptr<DevToolsAndroidBridge::RemoteBrowser> > RemoteBrowsers;
299 RemoteBrowsers remote_browsers_; 301 RemoteBrowsers remote_browsers_;
300 }; 302 };
301 303
302 AdbTargetsUIHandler::AdbTargetsUIHandler(const Callback& callback, 304 AdbTargetsUIHandler::AdbTargetsUIHandler(const Callback& callback,
303 Profile* profile) 305 Profile* profile)
304 : DevToolsTargetsUIHandler(kTargetSourceRemote, callback), 306 : DevToolsTargetsUIHandler(kTargetSourceRemote, callback),
305 profile_(profile) { 307 profile_(profile) {
306 DevToolsAndroidBridge* android_bridge = 308 DevToolsAndroidBridge* android_bridge = GetAndroidBridge();
307 DevToolsAndroidBridge::Factory::GetForProfile(profile_);
308 if (android_bridge) 309 if (android_bridge)
309 android_bridge->AddDeviceListListener(this); 310 android_bridge->AddDeviceListListener(this);
310 } 311 }
311 312
312 AdbTargetsUIHandler::~AdbTargetsUIHandler() { 313 AdbTargetsUIHandler::~AdbTargetsUIHandler() {
313 DevToolsAndroidBridge* android_bridge = 314 DevToolsAndroidBridge* android_bridge = GetAndroidBridge();
314 DevToolsAndroidBridge::Factory::GetForProfile(profile_);
315 if (android_bridge) 315 if (android_bridge)
316 android_bridge->RemoveDeviceListListener(this); 316 android_bridge->RemoveDeviceListListener(this);
317 } 317 }
318 318
319 static void CallOnTarget( 319 static void CallOnTarget(
320 const DevToolsTargetsUIHandler::TargetCallback& callback, 320 const DevToolsTargetsUIHandler::TargetCallback& callback,
321 DevToolsAndroidBridge::RemotePage* page) { 321 DevToolsAndroidBridge::RemotePage* page) {
322 scoped_ptr<DevToolsAndroidBridge::RemotePage> my_page(page); 322 scoped_ptr<DevToolsAndroidBridge::RemotePage> my_page(page);
323 callback.Run(my_page ? my_page->GetTarget() : NULL); 323 callback.Run(my_page ? my_page->GetTarget() : NULL);
324 } 324 }
325 325
326 void AdbTargetsUIHandler::Open( 326 void AdbTargetsUIHandler::Open(
327 const std::string& browser_id, 327 const std::string& browser_id,
328 const std::string& url, 328 const std::string& url,
329 const DevToolsTargetsUIHandler::TargetCallback& callback) { 329 const DevToolsTargetsUIHandler::TargetCallback& callback) {
330 RemoteBrowsers::iterator it = remote_browsers_.find(browser_id); 330 RemoteBrowsers::iterator it = remote_browsers_.find(browser_id);
331 if (it != remote_browsers_.end()) 331 if (it == remote_browsers_.end())
332 it->second->Open(url, base::Bind(&CallOnTarget, callback)); 332 return;
333
334 DevToolsAndroidBridge* android_bridge = GetAndroidBridge();
335 if (android_bridge)
336 android_bridge->Open(it->second, url, base::Bind(&CallOnTarget, callback));
333 } 337 }
334 338
335 scoped_refptr<content::DevToolsAgentHost> 339 scoped_refptr<content::DevToolsAgentHost>
336 AdbTargetsUIHandler::GetBrowserAgentHost( 340 AdbTargetsUIHandler::GetBrowserAgentHost(
337 const std::string& browser_id) { 341 const std::string& browser_id) {
338 RemoteBrowsers::iterator it = remote_browsers_.find(browser_id); 342 RemoteBrowsers::iterator it = remote_browsers_.find(browser_id);
339 return it != remote_browsers_.end() ? it->second->GetAgentHost() : NULL; 343 if (it == remote_browsers_.end())
344 return NULL;
345
346 DevToolsAndroidBridge* android_bridge = GetAndroidBridge();
347 return android_bridge ? android_bridge->GetBrowserAgentHost(it->second)
348 : NULL;
340 } 349 }
341 350
342 void AdbTargetsUIHandler::DeviceListChanged( 351 void AdbTargetsUIHandler::DeviceListChanged(
343 const DevToolsAndroidBridge::RemoteDevices& devices) { 352 const DevToolsAndroidBridge::RemoteDevices& devices) {
344 remote_browsers_.clear(); 353 remote_browsers_.clear();
345 STLDeleteValues(&targets_); 354 STLDeleteValues(&targets_);
346 355
356 DevToolsAndroidBridge* android_bridge = GetAndroidBridge();
347 base::ListValue device_list; 357 base::ListValue device_list;
348 for (DevToolsAndroidBridge::RemoteDevices::const_iterator dit = 358 for (DevToolsAndroidBridge::RemoteDevices::const_iterator dit =
349 devices.begin(); dit != devices.end(); ++dit) { 359 devices.begin(); dit != devices.end(); ++dit) {
350 DevToolsAndroidBridge::RemoteDevice* device = dit->get(); 360 DevToolsAndroidBridge::RemoteDevice* device = dit->get();
351 base::DictionaryValue* device_data = new base::DictionaryValue(); 361 base::DictionaryValue* device_data = new base::DictionaryValue();
352 device_data->SetString(kAdbModelField, device->model()); 362 device_data->SetString(kAdbModelField, device->model());
353 device_data->SetString(kAdbSerialField, device->serial()); 363 device_data->SetString(kAdbSerialField, device->serial());
354 device_data->SetBoolean(kAdbConnectedField, device->is_connected()); 364 device_data->SetBoolean(kAdbConnectedField, device->is_connected());
355 std::string device_id = base::StringPrintf( 365 std::string device_id = base::StringPrintf(
356 kAdbDeviceIdFormat, 366 kAdbDeviceIdFormat,
(...skipping 25 matching lines...) Expand all
382 base::Version local_version(version_info.Version()); 392 base::Version local_version(version_info.Version());
383 393
384 browser_data->SetBoolean(kCompatibleVersion, 394 browser_data->SetBoolean(kCompatibleVersion,
385 (!remote_version.IsValid()) || (!local_version.IsValid()) || 395 (!remote_version.IsValid()) || (!local_version.IsValid()) ||
386 remote_version.components()[0] <= local_version.components()[0]); 396 remote_version.components()[0] <= local_version.components()[0]);
387 397
388 base::ListValue* page_list = new base::ListValue(); 398 base::ListValue* page_list = new base::ListValue();
389 remote_browsers_[browser_id] = browser; 399 remote_browsers_[browser_id] = browser;
390 browser_data->Set(kAdbPagesList, page_list); 400 browser_data->Set(kAdbPagesList, page_list);
391 std::vector<DevToolsAndroidBridge::RemotePage*> pages = 401 std::vector<DevToolsAndroidBridge::RemotePage*> pages =
392 browser->CreatePages(); 402 android_bridge->CreatePages(browser);
393 for (std::vector<DevToolsAndroidBridge::RemotePage*>::iterator it = 403 for (std::vector<DevToolsAndroidBridge::RemotePage*>::iterator it =
394 pages.begin(); it != pages.end(); ++it) { 404 pages.begin(); it != pages.end(); ++it) {
395 DevToolsAndroidBridge::RemotePage* page = *it; 405 DevToolsAndroidBridge::RemotePage* page = *it;
396 DevToolsTargetImpl* target = page->GetTarget(); 406 DevToolsTargetImpl* target = page->GetTarget();
397 base::DictionaryValue* target_data = Serialize(*target); 407 base::DictionaryValue* target_data = Serialize(*target);
398 target_data->SetBoolean( 408 target_data->SetBoolean(
399 kAdbAttachedForeignField, 409 kAdbAttachedForeignField,
400 target->IsAttached() && 410 target->IsAttached() &&
401 !DevToolsAndroidBridge::HasDevToolsWindow(target->GetId())); 411 !android_bridge->HasDevToolsWindow(target->GetId()));
402 // Pass the screen size in the target object to make sure that 412 // Pass the screen size in the target object to make sure that
403 // the caching logic does not prevent the target item from updating 413 // the caching logic does not prevent the target item from updating
404 // when the screen size changes. 414 // when the screen size changes.
405 gfx::Size screen_size = device->screen_size(); 415 gfx::Size screen_size = device->screen_size();
406 target_data->SetInteger(kAdbScreenWidthField, screen_size.width()); 416 target_data->SetInteger(kAdbScreenWidthField, screen_size.width());
407 target_data->SetInteger(kAdbScreenHeightField, screen_size.height()); 417 target_data->SetInteger(kAdbScreenHeightField, screen_size.height());
408 targets_[target->GetId()] = target; 418 targets_[target->GetId()] = target;
409 page_list->Append(target_data); 419 page_list->Append(target_data);
410 } 420 }
411 browser_list->Append(browser_data); 421 browser_list->Append(browser_data);
412 } 422 }
413 423
414 device_list.Append(device_data); 424 device_list.Append(device_data);
415 } 425 }
416 SendSerializedTargets(device_list); 426 SendSerializedTargets(device_list);
417 } 427 }
418 428
429 DevToolsAndroidBridge* AdbTargetsUIHandler::GetAndroidBridge() {
430 return DevToolsAndroidBridge::Factory::GetForProfile(profile_);
dgozman 2014/10/02 12:19:34 Why don't you just get it once and save to |androi
vkuzkokov 2014/10/02 13:07:46 Done.
431 }
432
419 } // namespace 433 } // namespace
420 434
421 // DevToolsTargetsUIHandler --------------------------------------------------- 435 // DevToolsTargetsUIHandler ---------------------------------------------------
422 436
423 DevToolsTargetsUIHandler::DevToolsTargetsUIHandler( 437 DevToolsTargetsUIHandler::DevToolsTargetsUIHandler(
424 const std::string& source_id, 438 const std::string& source_id,
425 const Callback& callback) 439 const Callback& callback)
426 : source_id_(source_id), 440 : source_id_(source_id),
427 callback_(callback) { 441 callback_(callback) {
428 } 442 }
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
525 device_status_dict->SetString(kPortForwardingBrowserId, 539 device_status_dict->SetString(kPortForwardingBrowserId,
526 SerializeBrowserId(sit->first)); 540 SerializeBrowserId(sit->first));
527 541
528 std::string device_id = base::StringPrintf( 542 std::string device_id = base::StringPrintf(
529 kAdbDeviceIdFormat, 543 kAdbDeviceIdFormat,
530 sit->first->serial().c_str()); 544 sit->first->serial().c_str());
531 result.Set(device_id, device_status_dict); 545 result.Set(device_id, device_status_dict);
532 } 546 }
533 callback_.Run(result); 547 callback_.Run(result);
534 } 548 }
OLDNEW
« no previous file with comments | « chrome/browser/devtools/device/port_forwarding_controller.cc ('k') | chrome/browser/ui/webui/devtools_ui.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698