| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "content/browser/devtools/protocol/system_info_handler.h" | 5 #include "content/browser/devtools/protocol/system_info_handler.h" |
| 6 | 6 |
| 7 #include "content/browser/gpu/compositor_util.h" | |
| 8 #include "content/browser/gpu/gpu_data_manager_impl.h" | |
| 9 #include "gpu/config/gpu_info.h" | |
| 10 | |
| 11 namespace content { | 7 namespace content { |
| 12 namespace devtools { | 8 namespace devtools { |
| 13 namespace system_info { | 9 namespace system_info { |
| 14 | 10 |
| 15 namespace { | |
| 16 | |
| 17 class AuxGPUInfoEnumerator : public gpu::GPUInfo::Enumerator { | |
| 18 public: | |
| 19 AuxGPUInfoEnumerator(base::DictionaryValue* dictionary) | |
| 20 : dictionary_(dictionary), | |
| 21 in_aux_attributes_(false) { } | |
| 22 | |
| 23 void AddInt64(const char* name, int64 value) override { | |
| 24 if (in_aux_attributes_) | |
| 25 dictionary_->SetDouble(name, value); | |
| 26 } | |
| 27 | |
| 28 void AddInt(const char* name, int value) override { | |
| 29 if (in_aux_attributes_) | |
| 30 dictionary_->SetInteger(name, value); | |
| 31 } | |
| 32 | |
| 33 void AddString(const char* name, const std::string& value) override { | |
| 34 if (in_aux_attributes_) | |
| 35 dictionary_->SetString(name, value); | |
| 36 } | |
| 37 | |
| 38 void AddBool(const char* name, bool value) override { | |
| 39 if (in_aux_attributes_) | |
| 40 dictionary_->SetBoolean(name, value); | |
| 41 } | |
| 42 | |
| 43 void AddTimeDeltaInSecondsF(const char* name, | |
| 44 const base::TimeDelta& value) override { | |
| 45 if (in_aux_attributes_) | |
| 46 dictionary_->SetDouble(name, value.InSecondsF()); | |
| 47 } | |
| 48 | |
| 49 void BeginGPUDevice() override {} | |
| 50 | |
| 51 void EndGPUDevice() override {} | |
| 52 | |
| 53 void BeginVideoEncodeAcceleratorSupportedProfile() override {} | |
| 54 | |
| 55 void EndVideoEncodeAcceleratorSupportedProfile() override {} | |
| 56 | |
| 57 void BeginAuxAttributes() override { | |
| 58 in_aux_attributes_ = true; | |
| 59 } | |
| 60 | |
| 61 void EndAuxAttributes() override { | |
| 62 in_aux_attributes_ = false; | |
| 63 } | |
| 64 | |
| 65 private: | |
| 66 base::DictionaryValue* dictionary_; | |
| 67 bool in_aux_attributes_; | |
| 68 }; | |
| 69 | |
| 70 scoped_refptr<GPUDevice> GPUDeviceToProtocol( | |
| 71 const gpu::GPUInfo::GPUDevice& device) { | |
| 72 return GPUDevice::Create()->set_vendor_id(device.vendor_id) | |
| 73 ->set_device_id(device.device_id) | |
| 74 ->set_vendor_string(device.vendor_string) | |
| 75 ->set_device_string(device.device_string); | |
| 76 } | |
| 77 | |
| 78 } // namespace | |
| 79 | |
| 80 typedef DevToolsProtocolClient::Response Response; | 11 typedef DevToolsProtocolClient::Response Response; |
| 81 | 12 |
| 82 SystemInfoHandler::SystemInfoHandler() { | 13 SystemInfoHandler::SystemInfoHandler() { |
| 83 } | 14 } |
| 84 | 15 |
| 85 SystemInfoHandler::~SystemInfoHandler() { | 16 SystemInfoHandler::~SystemInfoHandler() { |
| 86 } | 17 } |
| 87 | 18 |
| 88 Response SystemInfoHandler::GetInfo( | 19 Response SystemInfoHandler::GetInfo(scoped_refptr<SystemInfo>* info) { |
| 89 scoped_refptr<devtools::system_info::GPUInfo>* gpu, | 20 return Response::FallThrough(); |
| 90 std::string* model_name, | |
| 91 std::string* model_version) { | |
| 92 gpu::GPUInfo gpu_info = GpuDataManagerImpl::GetInstance()->GetGPUInfo(); | |
| 93 | |
| 94 std::vector<scoped_refptr<GPUDevice>> devices; | |
| 95 devices.push_back(GPUDeviceToProtocol(gpu_info.gpu)); | |
| 96 for (const auto& device : gpu_info.secondary_gpus) | |
| 97 devices.push_back(GPUDeviceToProtocol(device)); | |
| 98 | |
| 99 scoped_ptr<base::DictionaryValue> aux_attributes(new base::DictionaryValue); | |
| 100 AuxGPUInfoEnumerator enumerator(aux_attributes.get()); | |
| 101 gpu_info.EnumerateFields(&enumerator); | |
| 102 | |
| 103 *model_name = gpu_info.machine_model_name; | |
| 104 *model_version = gpu_info.machine_model_version; | |
| 105 *gpu = GPUInfo::Create() | |
| 106 ->set_devices(devices) | |
| 107 ->set_aux_attributes(aux_attributes.Pass()) | |
| 108 ->set_feature_status(make_scoped_ptr(GetFeatureStatus())) | |
| 109 ->set_driver_bug_workarounds(GetDriverBugWorkarounds()); | |
| 110 return Response::OK(); | |
| 111 } | 21 } |
| 112 | 22 |
| 113 } // namespace system_info | 23 } // namespace system_info |
| 114 } // namespace devtools | 24 } // namespace devtools |
| 115 } // namespace content | 25 } // namespace content |
| OLD | NEW |