| 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 "chrome/browser/devtools/devtools_ui_bindings.h" | 5 #include "chrome/browser/devtools/devtools_ui_bindings.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 282 int ResponseWriter::Write(net::IOBuffer* buffer, | 282 int ResponseWriter::Write(net::IOBuffer* buffer, |
| 283 int num_bytes, | 283 int num_bytes, |
| 284 const net::CompletionCallback& callback) { | 284 const net::CompletionCallback& callback) { |
| 285 std::string chunk = std::string(buffer->data(), num_bytes); | 285 std::string chunk = std::string(buffer->data(), num_bytes); |
| 286 bool encoded = false; | 286 bool encoded = false; |
| 287 if (!base::IsStringUTF8(chunk)) { | 287 if (!base::IsStringUTF8(chunk)) { |
| 288 encoded = true; | 288 encoded = true; |
| 289 base::Base64Encode(chunk, &chunk); | 289 base::Base64Encode(chunk, &chunk); |
| 290 } | 290 } |
| 291 | 291 |
| 292 base::FundamentalValue* id = new base::FundamentalValue(stream_id_); | 292 base::Value* id = new base::Value(stream_id_); |
| 293 base::StringValue* chunkValue = new base::StringValue(chunk); | 293 base::StringValue* chunkValue = new base::StringValue(chunk); |
| 294 base::FundamentalValue* encodedValue = new base::FundamentalValue(encoded); | 294 base::Value* encodedValue = new base::Value(encoded); |
| 295 | 295 |
| 296 content::BrowserThread::PostTask( | 296 content::BrowserThread::PostTask( |
| 297 content::BrowserThread::UI, FROM_HERE, | 297 content::BrowserThread::UI, FROM_HERE, |
| 298 base::Bind(&DevToolsUIBindings::CallClientFunction, bindings_, | 298 base::Bind(&DevToolsUIBindings::CallClientFunction, bindings_, |
| 299 "DevToolsAPI.streamWrite", base::Owned(id), | 299 "DevToolsAPI.streamWrite", base::Owned(id), |
| 300 base::Owned(chunkValue), base::Owned(encodedValue))); | 300 base::Owned(chunkValue), base::Owned(encodedValue))); |
| 301 return num_bytes; | 301 return num_bytes; |
| 302 } | 302 } |
| 303 | 303 |
| 304 int ResponseWriter::Finish(int net_error, | 304 int ResponseWriter::Finish(int net_error, |
| (...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 624 | 624 |
| 625 if (message.length() < kMaxMessageChunkSize) { | 625 if (message.length() < kMaxMessageChunkSize) { |
| 626 std::string param; | 626 std::string param; |
| 627 base::EscapeJSONString(message, true, ¶m); | 627 base::EscapeJSONString(message, true, ¶m); |
| 628 base::string16 javascript = | 628 base::string16 javascript = |
| 629 base::UTF8ToUTF16("DevToolsAPI.dispatchMessage(" + param + ");"); | 629 base::UTF8ToUTF16("DevToolsAPI.dispatchMessage(" + param + ");"); |
| 630 web_contents_->GetMainFrame()->ExecuteJavaScript(javascript); | 630 web_contents_->GetMainFrame()->ExecuteJavaScript(javascript); |
| 631 return; | 631 return; |
| 632 } | 632 } |
| 633 | 633 |
| 634 base::FundamentalValue total_size(static_cast<int>(message.length())); | 634 base::Value total_size(static_cast<int>(message.length())); |
| 635 for (size_t pos = 0; pos < message.length(); pos += kMaxMessageChunkSize) { | 635 for (size_t pos = 0; pos < message.length(); pos += kMaxMessageChunkSize) { |
| 636 base::StringValue message_value(message.substr(pos, kMaxMessageChunkSize)); | 636 base::StringValue message_value(message.substr(pos, kMaxMessageChunkSize)); |
| 637 CallClientFunction("DevToolsAPI.dispatchMessageChunk", | 637 CallClientFunction("DevToolsAPI.dispatchMessageChunk", |
| 638 &message_value, pos ? NULL : &total_size, NULL); | 638 &message_value, pos ? NULL : &total_size, NULL); |
| 639 } | 639 } |
| 640 } | 640 } |
| 641 | 641 |
| 642 void DevToolsUIBindings::AgentHostClosed( | 642 void DevToolsUIBindings::AgentHostClosed( |
| 643 content::DevToolsAgentHost* agent_host, | 643 content::DevToolsAgentHost* agent_host, |
| 644 bool replaced_with_another_client) { | 644 bool replaced_with_another_client) { |
| 645 DCHECK(agent_host == agent_host_.get()); | 645 DCHECK(agent_host == agent_host_.get()); |
| 646 agent_host_ = NULL; | 646 agent_host_ = NULL; |
| 647 delegate_->InspectedContentsClosing(); | 647 delegate_->InspectedContentsClosing(); |
| 648 } | 648 } |
| 649 | 649 |
| 650 void DevToolsUIBindings::SendMessageAck(int request_id, | 650 void DevToolsUIBindings::SendMessageAck(int request_id, |
| 651 const base::Value* arg) { | 651 const base::Value* arg) { |
| 652 base::FundamentalValue id_value(request_id); | 652 base::Value id_value(request_id); |
| 653 CallClientFunction("DevToolsAPI.embedderMessageAck", | 653 CallClientFunction("DevToolsAPI.embedderMessageAck", |
| 654 &id_value, arg, nullptr); | 654 &id_value, arg, nullptr); |
| 655 } | 655 } |
| 656 | 656 |
| 657 // DevToolsEmbedderMessageDispatcher::Delegate implementation ----------------- | 657 // DevToolsEmbedderMessageDispatcher::Delegate implementation ----------------- |
| 658 | 658 |
| 659 void DevToolsUIBindings::ActivateWindow() { | 659 void DevToolsUIBindings::ActivateWindow() { |
| 660 delegate_->ActivateWindow(); | 660 delegate_->ActivateWindow(); |
| 661 } | 661 } |
| 662 | 662 |
| (...skipping 447 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1110 std::string value; | 1110 std::string value; |
| 1111 while (rh && rh->EnumerateHeaderLines(&iterator, &name, &value)) | 1111 while (rh && rh->EnumerateHeaderLines(&iterator, &name, &value)) |
| 1112 headers->SetString(name, value); | 1112 headers->SetString(name, value); |
| 1113 | 1113 |
| 1114 it->second.Run(&response); | 1114 it->second.Run(&response); |
| 1115 pending_requests_.erase(it); | 1115 pending_requests_.erase(it); |
| 1116 delete source; | 1116 delete source; |
| 1117 } | 1117 } |
| 1118 | 1118 |
| 1119 void DevToolsUIBindings::DeviceCountChanged(int count) { | 1119 void DevToolsUIBindings::DeviceCountChanged(int count) { |
| 1120 base::FundamentalValue value(count); | 1120 base::Value value(count); |
| 1121 CallClientFunction("DevToolsAPI.deviceCountUpdated", &value, NULL, | 1121 CallClientFunction("DevToolsAPI.deviceCountUpdated", &value, NULL, |
| 1122 NULL); | 1122 NULL); |
| 1123 } | 1123 } |
| 1124 | 1124 |
| 1125 void DevToolsUIBindings::DevicesUpdated( | 1125 void DevToolsUIBindings::DevicesUpdated( |
| 1126 const std::string& source, | 1126 const std::string& source, |
| 1127 const base::ListValue& targets) { | 1127 const base::ListValue& targets) { |
| 1128 CallClientFunction("DevToolsAPI.devicesUpdated", &targets, NULL, | 1128 CallClientFunction("DevToolsAPI.devicesUpdated", &targets, NULL, |
| 1129 NULL); | 1129 NULL); |
| 1130 } | 1130 } |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1172 | 1172 |
| 1173 CallClientFunction("DevToolsAPI.fileSystemFilesChangedAddedRemoved", &changed, | 1173 CallClientFunction("DevToolsAPI.fileSystemFilesChangedAddedRemoved", &changed, |
| 1174 &added, &removed); | 1174 &added, &removed); |
| 1175 } | 1175 } |
| 1176 | 1176 |
| 1177 void DevToolsUIBindings::IndexingTotalWorkCalculated( | 1177 void DevToolsUIBindings::IndexingTotalWorkCalculated( |
| 1178 int request_id, | 1178 int request_id, |
| 1179 const std::string& file_system_path, | 1179 const std::string& file_system_path, |
| 1180 int total_work) { | 1180 int total_work) { |
| 1181 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 1181 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 1182 base::FundamentalValue request_id_value(request_id); | 1182 base::Value request_id_value(request_id); |
| 1183 base::StringValue file_system_path_value(file_system_path); | 1183 base::StringValue file_system_path_value(file_system_path); |
| 1184 base::FundamentalValue total_work_value(total_work); | 1184 base::Value total_work_value(total_work); |
| 1185 CallClientFunction("DevToolsAPI.indexingTotalWorkCalculated", | 1185 CallClientFunction("DevToolsAPI.indexingTotalWorkCalculated", |
| 1186 &request_id_value, &file_system_path_value, | 1186 &request_id_value, &file_system_path_value, |
| 1187 &total_work_value); | 1187 &total_work_value); |
| 1188 } | 1188 } |
| 1189 | 1189 |
| 1190 void DevToolsUIBindings::IndexingWorked(int request_id, | 1190 void DevToolsUIBindings::IndexingWorked(int request_id, |
| 1191 const std::string& file_system_path, | 1191 const std::string& file_system_path, |
| 1192 int worked) { | 1192 int worked) { |
| 1193 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 1193 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 1194 base::FundamentalValue request_id_value(request_id); | 1194 base::Value request_id_value(request_id); |
| 1195 base::StringValue file_system_path_value(file_system_path); | 1195 base::StringValue file_system_path_value(file_system_path); |
| 1196 base::FundamentalValue worked_value(worked); | 1196 base::Value worked_value(worked); |
| 1197 CallClientFunction("DevToolsAPI.indexingWorked", &request_id_value, | 1197 CallClientFunction("DevToolsAPI.indexingWorked", &request_id_value, |
| 1198 &file_system_path_value, &worked_value); | 1198 &file_system_path_value, &worked_value); |
| 1199 } | 1199 } |
| 1200 | 1200 |
| 1201 void DevToolsUIBindings::IndexingDone(int request_id, | 1201 void DevToolsUIBindings::IndexingDone(int request_id, |
| 1202 const std::string& file_system_path) { | 1202 const std::string& file_system_path) { |
| 1203 indexing_jobs_.erase(request_id); | 1203 indexing_jobs_.erase(request_id); |
| 1204 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 1204 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 1205 base::FundamentalValue request_id_value(request_id); | 1205 base::Value request_id_value(request_id); |
| 1206 base::StringValue file_system_path_value(file_system_path); | 1206 base::StringValue file_system_path_value(file_system_path); |
| 1207 CallClientFunction("DevToolsAPI.indexingDone", &request_id_value, | 1207 CallClientFunction("DevToolsAPI.indexingDone", &request_id_value, |
| 1208 &file_system_path_value, NULL); | 1208 &file_system_path_value, NULL); |
| 1209 } | 1209 } |
| 1210 | 1210 |
| 1211 void DevToolsUIBindings::SearchCompleted( | 1211 void DevToolsUIBindings::SearchCompleted( |
| 1212 int request_id, | 1212 int request_id, |
| 1213 const std::string& file_system_path, | 1213 const std::string& file_system_path, |
| 1214 const std::vector<std::string>& file_paths) { | 1214 const std::vector<std::string>& file_paths) { |
| 1215 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 1215 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 1216 base::ListValue file_paths_value; | 1216 base::ListValue file_paths_value; |
| 1217 for (std::vector<std::string>::const_iterator it(file_paths.begin()); | 1217 for (std::vector<std::string>::const_iterator it(file_paths.begin()); |
| 1218 it != file_paths.end(); ++it) { | 1218 it != file_paths.end(); ++it) { |
| 1219 file_paths_value.AppendString(*it); | 1219 file_paths_value.AppendString(*it); |
| 1220 } | 1220 } |
| 1221 base::FundamentalValue request_id_value(request_id); | 1221 base::Value request_id_value(request_id); |
| 1222 base::StringValue file_system_path_value(file_system_path); | 1222 base::StringValue file_system_path_value(file_system_path); |
| 1223 CallClientFunction("DevToolsAPI.searchCompleted", &request_id_value, | 1223 CallClientFunction("DevToolsAPI.searchCompleted", &request_id_value, |
| 1224 &file_system_path_value, &file_paths_value); | 1224 &file_system_path_value, &file_paths_value); |
| 1225 } | 1225 } |
| 1226 | 1226 |
| 1227 void DevToolsUIBindings::ShowDevToolsConfirmInfoBar( | 1227 void DevToolsUIBindings::ShowDevToolsConfirmInfoBar( |
| 1228 const base::string16& message, | 1228 const base::string16& message, |
| 1229 const InfoBarCallback& callback) { | 1229 const InfoBarCallback& callback) { |
| 1230 if (!delegate_->GetInfoBarService()) { | 1230 if (!delegate_->GetInfoBarService()) { |
| 1231 callback.Run(false); | 1231 callback.Run(false); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1270 web_contents_->GetMainFrame()->GetProcess()->GetID(), | 1270 web_contents_->GetMainFrame()->GetProcess()->GetID(), |
| 1271 url::Origin(extension->url())); | 1271 url::Origin(extension->url())); |
| 1272 | 1272 |
| 1273 std::unique_ptr<base::DictionaryValue> extension_info( | 1273 std::unique_ptr<base::DictionaryValue> extension_info( |
| 1274 new base::DictionaryValue()); | 1274 new base::DictionaryValue()); |
| 1275 extension_info->Set( | 1275 extension_info->Set( |
| 1276 "startPage", | 1276 "startPage", |
| 1277 new base::StringValue(extensions::chrome_manifest_urls::GetDevToolsPage( | 1277 new base::StringValue(extensions::chrome_manifest_urls::GetDevToolsPage( |
| 1278 extension.get()).spec())); | 1278 extension.get()).spec())); |
| 1279 extension_info->Set("name", new base::StringValue(extension->name())); | 1279 extension_info->Set("name", new base::StringValue(extension->name())); |
| 1280 extension_info->Set("exposeExperimentalAPIs", | 1280 extension_info->Set( |
| 1281 new base::FundamentalValue( | 1281 "exposeExperimentalAPIs", |
| 1282 extension->permissions_data()->HasAPIPermission( | 1282 new base::Value(extension->permissions_data()->HasAPIPermission( |
| 1283 extensions::APIPermission::kExperimental))); | 1283 extensions::APIPermission::kExperimental))); |
| 1284 results.Append(std::move(extension_info)); | 1284 results.Append(std::move(extension_info)); |
| 1285 } | 1285 } |
| 1286 | 1286 |
| 1287 CallClientFunction("DevToolsAPI.addExtensions", | 1287 CallClientFunction("DevToolsAPI.addExtensions", |
| 1288 &results, NULL, NULL); | 1288 &results, NULL, NULL); |
| 1289 } | 1289 } |
| 1290 | 1290 |
| 1291 void DevToolsUIBindings::SetDelegate(Delegate* delegate) { | 1291 void DevToolsUIBindings::SetDelegate(Delegate* delegate) { |
| 1292 delegate_.reset(delegate); | 1292 delegate_.reset(delegate); |
| 1293 } | 1293 } |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1369 void DevToolsUIBindings::FrontendLoaded() { | 1369 void DevToolsUIBindings::FrontendLoaded() { |
| 1370 if (frontend_loaded_) | 1370 if (frontend_loaded_) |
| 1371 return; | 1371 return; |
| 1372 frontend_loaded_ = true; | 1372 frontend_loaded_ = true; |
| 1373 | 1373 |
| 1374 // Call delegate first - it seeds importants bit of information. | 1374 // Call delegate first - it seeds importants bit of information. |
| 1375 delegate_->OnLoadCompleted(); | 1375 delegate_->OnLoadCompleted(); |
| 1376 | 1376 |
| 1377 AddDevToolsExtensionsToClient(); | 1377 AddDevToolsExtensionsToClient(); |
| 1378 } | 1378 } |
| OLD | NEW |