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

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_;
298 scoped_refptr<DevToolsAndroidBridge> android_bridge_;
296 299
297 typedef std::map<std::string, 300 typedef std::map<std::string,
298 scoped_refptr<DevToolsAndroidBridge::RemoteBrowser> > RemoteBrowsers; 301 scoped_refptr<DevToolsAndroidBridge::RemoteBrowser> > RemoteBrowsers;
299 RemoteBrowsers remote_browsers_; 302 RemoteBrowsers remote_browsers_;
300 }; 303 };
301 304
302 AdbTargetsUIHandler::AdbTargetsUIHandler(const Callback& callback, 305 AdbTargetsUIHandler::AdbTargetsUIHandler(const Callback& callback,
303 Profile* profile) 306 Profile* profile)
304 : DevToolsTargetsUIHandler(kTargetSourceRemote, callback), 307 : DevToolsTargetsUIHandler(kTargetSourceRemote, callback),
305 profile_(profile) { 308 profile_(profile),
306 DevToolsAndroidBridge* android_bridge = 309 android_bridge_(
307 DevToolsAndroidBridge::Factory::GetForProfile(profile_); 310 DevToolsAndroidBridge::Factory::GetForProfile(profile_)) {
308 if (android_bridge) 311 android_bridge_->AddDeviceListListener(this);
dgozman 2014/10/02 13:21:48 You still need all the |if (android_bridge_)| chec
vkuzkokov 2014/10/03 10:53:32 Added DCHECK instead.
309 android_bridge->AddDeviceListListener(this);
310 } 312 }
311 313
312 AdbTargetsUIHandler::~AdbTargetsUIHandler() { 314 AdbTargetsUIHandler::~AdbTargetsUIHandler() {
313 DevToolsAndroidBridge* android_bridge = 315 android_bridge_->RemoveDeviceListListener(this);
314 DevToolsAndroidBridge::Factory::GetForProfile(profile_);
315 if (android_bridge)
316 android_bridge->RemoveDeviceListListener(this);
317 } 316 }
318 317
319 static void CallOnTarget( 318 static void CallOnTarget(
320 const DevToolsTargetsUIHandler::TargetCallback& callback, 319 const DevToolsTargetsUIHandler::TargetCallback& callback,
321 DevToolsAndroidBridge::RemotePage* page) { 320 DevToolsAndroidBridge::RemotePage* page) {
322 scoped_ptr<DevToolsAndroidBridge::RemotePage> my_page(page); 321 scoped_ptr<DevToolsAndroidBridge::RemotePage> my_page(page);
323 callback.Run(my_page ? my_page->GetTarget() : NULL); 322 callback.Run(my_page ? my_page->GetTarget() : NULL);
324 } 323 }
325 324
326 void AdbTargetsUIHandler::Open( 325 void AdbTargetsUIHandler::Open(
327 const std::string& browser_id, 326 const std::string& browser_id,
328 const std::string& url, 327 const std::string& url,
329 const DevToolsTargetsUIHandler::TargetCallback& callback) { 328 const DevToolsTargetsUIHandler::TargetCallback& callback) {
330 RemoteBrowsers::iterator it = remote_browsers_.find(browser_id); 329 RemoteBrowsers::iterator it = remote_browsers_.find(browser_id);
331 if (it != remote_browsers_.end()) 330 if (it == remote_browsers_.end())
332 it->second->Open(url, base::Bind(&CallOnTarget, callback)); 331 return;
332
333 android_bridge_->OpenRemotePage(it->second, url,
334 base::Bind(&CallOnTarget, callback));
333 } 335 }
334 336
335 scoped_refptr<content::DevToolsAgentHost> 337 scoped_refptr<content::DevToolsAgentHost>
336 AdbTargetsUIHandler::GetBrowserAgentHost( 338 AdbTargetsUIHandler::GetBrowserAgentHost(
337 const std::string& browser_id) { 339 const std::string& browser_id) {
338 RemoteBrowsers::iterator it = remote_browsers_.find(browser_id); 340 RemoteBrowsers::iterator it = remote_browsers_.find(browser_id);
339 return it != remote_browsers_.end() ? it->second->GetAgentHost() : NULL; 341 if (it == remote_browsers_.end())
342 return NULL;
343
344 return android_bridge_->GetBrowserAgentHost(it->second);
340 } 345 }
341 346
342 void AdbTargetsUIHandler::DeviceListChanged( 347 void AdbTargetsUIHandler::DeviceListChanged(
343 const DevToolsAndroidBridge::RemoteDevices& devices) { 348 const DevToolsAndroidBridge::RemoteDevices& devices) {
344 remote_browsers_.clear(); 349 remote_browsers_.clear();
345 STLDeleteValues(&targets_); 350 STLDeleteValues(&targets_);
346 351
347 base::ListValue device_list; 352 base::ListValue device_list;
348 for (DevToolsAndroidBridge::RemoteDevices::const_iterator dit = 353 for (DevToolsAndroidBridge::RemoteDevices::const_iterator dit =
349 devices.begin(); dit != devices.end(); ++dit) { 354 devices.begin(); dit != devices.end(); ++dit) {
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
382 base::Version local_version(version_info.Version()); 387 base::Version local_version(version_info.Version());
383 388
384 browser_data->SetBoolean(kCompatibleVersion, 389 browser_data->SetBoolean(kCompatibleVersion,
385 (!remote_version.IsValid()) || (!local_version.IsValid()) || 390 (!remote_version.IsValid()) || (!local_version.IsValid()) ||
386 remote_version.components()[0] <= local_version.components()[0]); 391 remote_version.components()[0] <= local_version.components()[0]);
387 392
388 base::ListValue* page_list = new base::ListValue(); 393 base::ListValue* page_list = new base::ListValue();
389 remote_browsers_[browser_id] = browser; 394 remote_browsers_[browser_id] = browser;
390 browser_data->Set(kAdbPagesList, page_list); 395 browser_data->Set(kAdbPagesList, page_list);
391 std::vector<DevToolsAndroidBridge::RemotePage*> pages = 396 std::vector<DevToolsAndroidBridge::RemotePage*> pages =
392 browser->CreatePages(); 397 android_bridge_->CreatePages(browser);
393 for (std::vector<DevToolsAndroidBridge::RemotePage*>::iterator it = 398 for (std::vector<DevToolsAndroidBridge::RemotePage*>::iterator it =
394 pages.begin(); it != pages.end(); ++it) { 399 pages.begin(); it != pages.end(); ++it) {
395 DevToolsAndroidBridge::RemotePage* page = *it; 400 DevToolsAndroidBridge::RemotePage* page = *it;
396 DevToolsTargetImpl* target = page->GetTarget(); 401 DevToolsTargetImpl* target = page->GetTarget();
397 base::DictionaryValue* target_data = Serialize(*target); 402 base::DictionaryValue* target_data = Serialize(*target);
398 target_data->SetBoolean( 403 target_data->SetBoolean(
399 kAdbAttachedForeignField, 404 kAdbAttachedForeignField,
400 target->IsAttached() && 405 target->IsAttached() &&
401 !DevToolsAndroidBridge::HasDevToolsWindow(target->GetId())); 406 !android_bridge_->HasDevToolsWindow(target->GetId()));
402 // Pass the screen size in the target object to make sure that 407 // Pass the screen size in the target object to make sure that
403 // the caching logic does not prevent the target item from updating 408 // the caching logic does not prevent the target item from updating
404 // when the screen size changes. 409 // when the screen size changes.
405 gfx::Size screen_size = device->screen_size(); 410 gfx::Size screen_size = device->screen_size();
406 target_data->SetInteger(kAdbScreenWidthField, screen_size.width()); 411 target_data->SetInteger(kAdbScreenWidthField, screen_size.width());
407 target_data->SetInteger(kAdbScreenHeightField, screen_size.height()); 412 target_data->SetInteger(kAdbScreenHeightField, screen_size.height());
408 targets_[target->GetId()] = target; 413 targets_[target->GetId()] = target;
409 page_list->Append(target_data); 414 page_list->Append(target_data);
410 } 415 }
411 browser_list->Append(browser_data); 416 browser_list->Append(browser_data);
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
525 device_status_dict->SetString(kPortForwardingBrowserId, 530 device_status_dict->SetString(kPortForwardingBrowserId,
526 SerializeBrowserId(sit->first)); 531 SerializeBrowserId(sit->first));
527 532
528 std::string device_id = base::StringPrintf( 533 std::string device_id = base::StringPrintf(
529 kAdbDeviceIdFormat, 534 kAdbDeviceIdFormat,
530 sit->first->serial().c_str()); 535 sit->first->serial().c_str());
531 result.Set(device_id, device_status_dict); 536 result.Set(device_id, device_status_dict);
532 } 537 }
533 callback_.Run(result); 538 callback_.Run(result);
534 } 539 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698