| OLD | NEW |
| 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 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 149 | 149 |
| 150 // LocalTargetsUIHandler --------------------------------------------- | 150 // LocalTargetsUIHandler --------------------------------------------- |
| 151 | 151 |
| 152 class LocalTargetsUIHandler | 152 class LocalTargetsUIHandler |
| 153 : public DevToolsTargetsUIHandler, | 153 : public DevToolsTargetsUIHandler, |
| 154 public content::NotificationObserver { | 154 public content::NotificationObserver { |
| 155 public: | 155 public: |
| 156 explicit LocalTargetsUIHandler(const Callback& callback); | 156 explicit LocalTargetsUIHandler(const Callback& callback); |
| 157 virtual ~LocalTargetsUIHandler(); | 157 virtual ~LocalTargetsUIHandler(); |
| 158 | 158 |
| 159 // DevToolsTargetsUIHandler overrides. |
| 160 virtual void ForceUpdate() OVERRIDE; |
| 161 |
| 159 private: | 162 private: |
| 160 // content::NotificationObserver overrides. | 163 // content::NotificationObserver overrides. |
| 161 virtual void Observe(int type, | 164 virtual void Observe(int type, |
| 162 const content::NotificationSource& source, | 165 const content::NotificationSource& source, |
| 163 const content::NotificationDetails& details) OVERRIDE; | 166 const content::NotificationDetails& details) OVERRIDE; |
| 164 | 167 |
| 165 void ScheduleUpdate(); | 168 void ScheduleUpdate(); |
| 166 void UpdateTargets(); | 169 void UpdateTargets(); |
| 167 void SendTargets(const DevToolsTargetImpl::List& targets); | 170 void SendTargets(const DevToolsTargetImpl::List& targets); |
| 168 | 171 |
| (...skipping 27 matching lines...) Expand all Loading... |
| 196 observer_->Stop(); | 199 observer_->Stop(); |
| 197 } | 200 } |
| 198 | 201 |
| 199 void LocalTargetsUIHandler::Observe( | 202 void LocalTargetsUIHandler::Observe( |
| 200 int type, | 203 int type, |
| 201 const content::NotificationSource& source, | 204 const content::NotificationSource& source, |
| 202 const content::NotificationDetails& details) { | 205 const content::NotificationDetails& details) { |
| 203 ScheduleUpdate(); | 206 ScheduleUpdate(); |
| 204 } | 207 } |
| 205 | 208 |
| 209 void LocalTargetsUIHandler::ForceUpdate() { |
| 210 ScheduleUpdate(); |
| 211 } |
| 212 |
| 206 void LocalTargetsUIHandler::ScheduleUpdate() { | 213 void LocalTargetsUIHandler::ScheduleUpdate() { |
| 207 const int kUpdateDelay = 100; | 214 const int kUpdateDelay = 100; |
| 208 timer_.reset( | 215 timer_.reset( |
| 209 new CancelableTimer( | 216 new CancelableTimer( |
| 210 base::Bind(&LocalTargetsUIHandler::UpdateTargets, | 217 base::Bind(&LocalTargetsUIHandler::UpdateTargets, |
| 211 base::Unretained(this)), | 218 base::Unretained(this)), |
| 212 base::TimeDelta::FromMilliseconds(kUpdateDelay))); | 219 base::TimeDelta::FromMilliseconds(kUpdateDelay))); |
| 213 } | 220 } |
| 214 | 221 |
| 215 void LocalTargetsUIHandler::UpdateTargets() { | 222 void LocalTargetsUIHandler::UpdateTargets() { |
| 216 DevToolsTargetImpl::EnumerateAllTargets(base::Bind( | 223 DevToolsTargetImpl::EnumerateAllTargets(base::Bind( |
| 217 &LocalTargetsUIHandler::SendTargets, | 224 &LocalTargetsUIHandler::SendTargets, |
| 218 weak_factory_.GetWeakPtr())); | 225 weak_factory_.GetWeakPtr())); |
| 219 } | 226 } |
| 220 | 227 |
| 221 void LocalTargetsUIHandler::SendTargets( | 228 void LocalTargetsUIHandler::SendTargets( |
| 222 const DevToolsTargetImpl::List& targets) { | 229 const DevToolsTargetImpl::List& targets) { |
| 223 base::ListValue list_value; | 230 base::ListValue list_value; |
| 224 std::map<std::string, base::DictionaryValue*> id_to_descriptor; | 231 std::map<std::string, base::DictionaryValue*> id_to_descriptor; |
| 225 | 232 |
| 226 STLDeleteValues(&targets_); | 233 STLDeleteValues(&targets_); |
| 227 for (DevToolsTargetImpl::List::const_iterator it = targets.begin(); | 234 for (DevToolsTargetImpl::List::const_iterator it = targets.begin(); |
| 228 it != targets.end(); ++it) { | 235 it != targets.end(); ++it) { |
| 229 DevToolsTargetImpl* target = *it; | 236 DevToolsTargetImpl* target = *it; |
| 230 if (target->GetType() == DevToolsTargetImpl::kTargetTypeServiceWorker) | |
| 231 continue; | |
| 232 targets_[target->GetId()] = target; | 237 targets_[target->GetId()] = target; |
| 233 id_to_descriptor[target->GetId()] = Serialize(*target); | 238 id_to_descriptor[target->GetId()] = Serialize(*target); |
| 234 } | 239 } |
| 235 | 240 |
| 236 for (TargetMap::iterator it(targets_.begin()); it != targets_.end(); ++it) { | 241 for (TargetMap::iterator it(targets_.begin()); it != targets_.end(); ++it) { |
| 237 DevToolsTargetImpl* target = it->second; | 242 DevToolsTargetImpl* target = it->second; |
| 238 if (target->GetType() == DevToolsTargetImpl::kTargetTypeServiceWorker) | |
| 239 continue; | |
| 240 base::DictionaryValue* descriptor = id_to_descriptor[target->GetId()]; | 243 base::DictionaryValue* descriptor = id_to_descriptor[target->GetId()]; |
| 241 | |
| 242 std::string parent_id = target->GetParentId(); | 244 std::string parent_id = target->GetParentId(); |
| 243 if (parent_id.empty() || id_to_descriptor.count(parent_id) == 0) { | 245 if (parent_id.empty() || id_to_descriptor.count(parent_id) == 0) { |
| 244 list_value.Append(descriptor); | 246 list_value.Append(descriptor); |
| 245 } else { | 247 } else { |
| 246 base::DictionaryValue* parent = id_to_descriptor[parent_id]; | 248 base::DictionaryValue* parent = id_to_descriptor[parent_id]; |
| 247 base::ListValue* guests = NULL; | 249 base::ListValue* guests = NULL; |
| 248 if (!parent->GetList(kGuestList, &guests)) { | 250 if (!parent->GetList(kGuestList, &guests)) { |
| 249 guests = new base::ListValue(); | 251 guests = new base::ListValue(); |
| 250 parent->Set(kGuestList, guests); | 252 parent->Set(kGuestList, guests); |
| 251 } | 253 } |
| (...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 468 target_data->SetString(kFaviconUrlField, target.GetFaviconURL().spec()); | 470 target_data->SetString(kFaviconUrlField, target.GetFaviconURL().spec()); |
| 469 target_data->SetString(kDescriptionField, target.GetDescription()); | 471 target_data->SetString(kDescriptionField, target.GetDescription()); |
| 470 return target_data; | 472 return target_data; |
| 471 } | 473 } |
| 472 | 474 |
| 473 void DevToolsTargetsUIHandler::SendSerializedTargets( | 475 void DevToolsTargetsUIHandler::SendSerializedTargets( |
| 474 const base::ListValue& list) { | 476 const base::ListValue& list) { |
| 475 callback_.Run(source_id_, list); | 477 callback_.Run(source_id_, list); |
| 476 } | 478 } |
| 477 | 479 |
| 480 void DevToolsTargetsUIHandler::ForceUpdate() { |
| 481 } |
| 482 |
| 478 // PortForwardingStatusSerializer --------------------------------------------- | 483 // PortForwardingStatusSerializer --------------------------------------------- |
| 479 | 484 |
| 480 PortForwardingStatusSerializer::PortForwardingStatusSerializer( | 485 PortForwardingStatusSerializer::PortForwardingStatusSerializer( |
| 481 const Callback& callback, Profile* profile) | 486 const Callback& callback, Profile* profile) |
| 482 : callback_(callback), | 487 : callback_(callback), |
| 483 profile_(profile) { | 488 profile_(profile) { |
| 484 DevToolsAndroidBridge* android_bridge = | 489 DevToolsAndroidBridge* android_bridge = |
| 485 DevToolsAndroidBridge::Factory::GetForProfile(profile_); | 490 DevToolsAndroidBridge::Factory::GetForProfile(profile_); |
| 486 if (android_bridge) | 491 if (android_bridge) |
| 487 android_bridge->AddPortForwardingListener(this); | 492 android_bridge->AddPortForwardingListener(this); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 507 base::StringPrintf("%d", it->first), it->second); | 512 base::StringPrintf("%d", it->first), it->second); |
| 508 } | 513 } |
| 509 | 514 |
| 510 std::string device_id = base::StringPrintf( | 515 std::string device_id = base::StringPrintf( |
| 511 kAdbDeviceIdFormat, | 516 kAdbDeviceIdFormat, |
| 512 sit->first.c_str()); | 517 sit->first.c_str()); |
| 513 result.Set(device_id, device_status_dict); | 518 result.Set(device_id, device_status_dict); |
| 514 } | 519 } |
| 515 callback_.Run(result); | 520 callback_.Run(result); |
| 516 } | 521 } |
| OLD | NEW |