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

Side by Side Diff: components/devtools_http_handler/devtools_http_handler.cc

Issue 2289773002: Revert of DevTools: merge devtools target with devtools host, part 1 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 3 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 7
8 #include <algorithm> 8 #include <algorithm>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 317
318 private: 318 private:
319 base::MessageLoop* const message_loop_; 319 base::MessageLoop* const message_loop_;
320 ServerWrapper* const server_wrapper_; 320 ServerWrapper* const server_wrapper_;
321 const int connection_id_; 321 const int connection_id_;
322 scoped_refptr<DevToolsAgentHost> agent_host_; 322 scoped_refptr<DevToolsAgentHost> agent_host_;
323 }; 323 };
324 324
325 static bool TimeComparator(const DevToolsTargetDescriptor* desc1, 325 static bool TimeComparator(const DevToolsTargetDescriptor* desc1,
326 const DevToolsTargetDescriptor* desc2) { 326 const DevToolsTargetDescriptor* desc2) {
327 return desc1->GetAgentHost()->GetLastActivityTime() > 327 return desc1->GetLastActivityTime() > desc2->GetLastActivityTime();
328 desc2->GetAgentHost()->GetLastActivityTime();
329 } 328 }
330 329
331 // DevToolsHttpHandler::ServerSocketFactory ---------------------------------- 330 // DevToolsHttpHandler::ServerSocketFactory ----------------------------------
332 331
333 std::unique_ptr<net::ServerSocket> 332 std::unique_ptr<net::ServerSocket>
334 DevToolsHttpHandler::ServerSocketFactory::CreateForHttpServer() { 333 DevToolsHttpHandler::ServerSocketFactory::CreateForHttpServer() {
335 return nullptr; 334 return nullptr;
336 } 335 }
337 336
338 std::unique_ptr<net::ServerSocket> 337 std::unique_ptr<net::ServerSocket>
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
579 578
580 if (command == "list") { 579 if (command == "list") {
581 std::string host = info.headers["host"]; 580 std::string host = info.headers["host"];
582 DevToolsTargetDescriptor::List descriptors = 581 DevToolsTargetDescriptor::List descriptors =
583 devtools_discovery::DevToolsDiscoveryManager::GetInstance()-> 582 devtools_discovery::DevToolsDiscoveryManager::GetInstance()->
584 GetDescriptors(); 583 GetDescriptors();
585 std::sort(descriptors.begin(), descriptors.end(), TimeComparator); 584 std::sort(descriptors.begin(), descriptors.end(), TimeComparator);
586 base::STLDeleteValues(&descriptor_map_); 585 base::STLDeleteValues(&descriptor_map_);
587 base::ListValue list_value; 586 base::ListValue list_value;
588 for (DevToolsTargetDescriptor* descriptor : descriptors) { 587 for (DevToolsTargetDescriptor* descriptor : descriptors) {
589 descriptor_map_[descriptor->GetAgentHost()->GetId()] = descriptor; 588 descriptor_map_[descriptor->GetId()] = descriptor;
590 list_value.Append(SerializeDescriptor(*descriptor, host)); 589 list_value.Append(SerializeDescriptor(*descriptor, host));
591 } 590 }
592 SendJson(connection_id, net::HTTP_OK, &list_value, std::string()); 591 SendJson(connection_id, net::HTTP_OK, &list_value, std::string());
593 return; 592 return;
594 } 593 }
595 594
596 if (command == "new") { 595 if (command == "new") {
597 GURL url(net::UnescapeURLComponent( 596 GURL url(net::UnescapeURLComponent(
598 query, net::UnescapeRule::URL_SPECIAL_CHARS_EXCEPT_PATH_SEPARATORS | 597 query, net::UnescapeRule::URL_SPECIAL_CHARS_EXCEPT_PATH_SEPARATORS |
599 net::UnescapeRule::PATH_SEPARATORS)); 598 net::UnescapeRule::PATH_SEPARATORS));
600 if (!url.is_valid()) 599 if (!url.is_valid())
601 url = GURL(url::kAboutBlankURL); 600 url = GURL(url::kAboutBlankURL);
602 std::unique_ptr<DevToolsTargetDescriptor> descriptor = 601 std::unique_ptr<DevToolsTargetDescriptor> descriptor =
603 devtools_discovery::DevToolsDiscoveryManager::GetInstance()->CreateNew( 602 devtools_discovery::DevToolsDiscoveryManager::GetInstance()->CreateNew(
604 url); 603 url);
605 if (!descriptor) { 604 if (!descriptor) {
606 SendJson(connection_id, 605 SendJson(connection_id,
607 net::HTTP_INTERNAL_SERVER_ERROR, 606 net::HTTP_INTERNAL_SERVER_ERROR,
608 NULL, 607 NULL,
609 "Could not create new page"); 608 "Could not create new page");
610 return; 609 return;
611 } 610 }
612 std::string host = info.headers["host"]; 611 std::string host = info.headers["host"];
613 std::unique_ptr<base::DictionaryValue> dictionary( 612 std::unique_ptr<base::DictionaryValue> dictionary(
614 SerializeDescriptor(*descriptor.get(), host)); 613 SerializeDescriptor(*descriptor.get(), host));
615 SendJson(connection_id, net::HTTP_OK, dictionary.get(), std::string()); 614 SendJson(connection_id, net::HTTP_OK, dictionary.get(), std::string());
616 const std::string target_id = descriptor->GetAgentHost()->GetId(); 615 const std::string target_id = descriptor->GetId();
617 descriptor_map_[target_id] = descriptor.release(); 616 descriptor_map_[target_id] = descriptor.release();
618 return; 617 return;
619 } 618 }
620 619
621 if (command == "activate" || command == "close") { 620 if (command == "activate" || command == "close") {
622 DevToolsTargetDescriptor* descriptor = GetDescriptor(target_id); 621 DevToolsTargetDescriptor* descriptor = GetDescriptor(target_id);
623 if (!descriptor) { 622 if (!descriptor) {
624 SendJson(connection_id, 623 SendJson(connection_id,
625 net::HTTP_NOT_FOUND, 624 net::HTTP_NOT_FOUND,
626 NULL, 625 NULL,
627 "No such target id: " + target_id); 626 "No such target id: " + target_id);
628 return; 627 return;
629 } 628 }
630 629
631 if (command == "activate") { 630 if (command == "activate") {
632 if (descriptor->GetAgentHost()->Activate()) { 631 if (descriptor->Activate()) {
633 SendJson(connection_id, net::HTTP_OK, NULL, "Target activated"); 632 SendJson(connection_id, net::HTTP_OK, NULL, "Target activated");
634 } else { 633 } else {
635 SendJson(connection_id, 634 SendJson(connection_id,
636 net::HTTP_INTERNAL_SERVER_ERROR, 635 net::HTTP_INTERNAL_SERVER_ERROR,
637 NULL, 636 NULL,
638 "Could not activate target id: " + target_id); 637 "Could not activate target id: " + target_id);
639 } 638 }
640 return; 639 return;
641 } 640 }
642 641
643 if (command == "close") { 642 if (command == "close") {
644 if (descriptor->GetAgentHost()->Close()) { 643 if (descriptor->Close()) {
645 SendJson(connection_id, net::HTTP_OK, NULL, "Target is closing"); 644 SendJson(connection_id, net::HTTP_OK, NULL, "Target is closing");
646 } else { 645 } else {
647 SendJson(connection_id, 646 SendJson(connection_id,
648 net::HTTP_INTERNAL_SERVER_ERROR, 647 net::HTTP_INTERNAL_SERVER_ERROR,
649 NULL, 648 NULL,
650 "Could not close target id: " + target_id); 649 "Could not close target id: " + target_id);
651 } 650 }
652 return; 651 return;
653 } 652 }
654 } 653 }
(...skipping 10 matching lines...) Expand all
665 if (it == descriptor_map_.end()) 664 if (it == descriptor_map_.end())
666 return nullptr; 665 return nullptr;
667 return it->second; 666 return it->second;
668 } 667 }
669 668
670 void DevToolsHttpHandler::OnThumbnailRequest( 669 void DevToolsHttpHandler::OnThumbnailRequest(
671 int connection_id, const std::string& target_id) { 670 int connection_id, const std::string& target_id) {
672 DevToolsTargetDescriptor* descriptor = GetDescriptor(target_id); 671 DevToolsTargetDescriptor* descriptor = GetDescriptor(target_id);
673 GURL page_url; 672 GURL page_url;
674 if (descriptor) 673 if (descriptor)
675 page_url = descriptor->GetAgentHost()->GetURL(); 674 page_url = descriptor->GetURL();
676 std::string data = delegate_->GetPageThumbnailData(page_url); 675 std::string data = delegate_->GetPageThumbnailData(page_url);
677 if (!data.empty()) 676 if (!data.empty())
678 Send200(connection_id, data, "image/png"); 677 Send200(connection_id, data, "image/png");
679 else 678 else
680 Send404(connection_id); 679 Send404(connection_id);
681 } 680 }
682 681
683 void DevToolsHttpHandler::OnDiscoveryPageRequest(int connection_id) { 682 void DevToolsHttpHandler::OnDiscoveryPageRequest(int connection_id) {
684 std::string response = delegate_->GetDiscoveryPageHTML(); 683 std::string response = delegate_->GetDiscoveryPageHTML();
685 Send200(connection_id, response, "text/html; charset=UTF-8"); 684 Send200(connection_id, response, "text/html; charset=UTF-8");
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
893 thread_->task_runner()->PostTask( 892 thread_->task_runner()->PostTask(
894 FROM_HERE, 893 FROM_HERE,
895 base::Bind(&ServerWrapper::AcceptWebSocket, 894 base::Bind(&ServerWrapper::AcceptWebSocket,
896 base::Unretained(server_wrapper_), connection_id, request)); 895 base::Unretained(server_wrapper_), connection_id, request));
897 } 896 }
898 897
899 base::DictionaryValue* DevToolsHttpHandler::SerializeDescriptor( 898 base::DictionaryValue* DevToolsHttpHandler::SerializeDescriptor(
900 const DevToolsTargetDescriptor& descriptor, 899 const DevToolsTargetDescriptor& descriptor,
901 const std::string& host) { 900 const std::string& host) {
902 base::DictionaryValue* dictionary = new base::DictionaryValue; 901 base::DictionaryValue* dictionary = new base::DictionaryValue;
903 scoped_refptr<content::DevToolsAgentHost> agent_host = 902
904 descriptor.GetAgentHost(); 903 std::string id = descriptor.GetId();
905 std::string id = agent_host->GetId();
906 dictionary->SetString(kTargetIdField, id); 904 dictionary->SetString(kTargetIdField, id);
907 std::string parent_id = agent_host->GetParentId(); 905 std::string parent_id = descriptor.GetParentId();
908 if (!parent_id.empty()) 906 if (!parent_id.empty())
909 dictionary->SetString(kTargetParentIdField, parent_id); 907 dictionary->SetString(kTargetParentIdField, parent_id);
910 dictionary->SetString(kTargetTypeField, agent_host->GetType()); 908 dictionary->SetString(kTargetTypeField, descriptor.GetType());
911 dictionary->SetString(kTargetTitleField, 909 dictionary->SetString(kTargetTitleField,
912 net::EscapeForHTML(agent_host->GetTitle())); 910 net::EscapeForHTML(descriptor.GetTitle()));
913 dictionary->SetString(kTargetDescriptionField, agent_host->GetDescription()); 911 dictionary->SetString(kTargetDescriptionField, descriptor.GetDescription());
914 912
915 GURL url = agent_host->GetURL(); 913 GURL url = descriptor.GetURL();
916 dictionary->SetString(kTargetUrlField, url.spec()); 914 dictionary->SetString(kTargetUrlField, url.spec());
917 915
918 GURL favicon_url = agent_host->GetFaviconURL(); 916 GURL favicon_url = descriptor.GetFaviconURL();
919 if (favicon_url.is_valid()) 917 if (favicon_url.is_valid())
920 dictionary->SetString(kTargetFaviconUrlField, favicon_url.spec()); 918 dictionary->SetString(kTargetFaviconUrlField, favicon_url.spec());
921 919
922 if (!delegate_->GetPageThumbnailData(url).empty()) { 920 if (!delegate_->GetPageThumbnailData(url).empty()) {
923 dictionary->SetString(kTargetThumbnailUrlField, 921 dictionary->SetString(kTargetThumbnailUrlField,
924 std::string(kThumbUrlPrefix) + id); 922 std::string(kThumbUrlPrefix) + id);
925 } 923 }
926 924
927 if (!agent_host->IsAttached()) { 925 if (!descriptor.IsAttached()) {
928 dictionary->SetString(kTargetWebSocketDebuggerUrlField, 926 dictionary->SetString(kTargetWebSocketDebuggerUrlField,
929 base::StringPrintf("ws://%s%s%s", 927 base::StringPrintf("ws://%s%s%s",
930 host.c_str(), 928 host.c_str(),
931 kPageUrlPrefix, 929 kPageUrlPrefix,
932 id.c_str())); 930 id.c_str()));
933 std::string devtools_frontend_url = GetFrontendURLInternal( 931 std::string devtools_frontend_url = GetFrontendURLInternal(
934 id.c_str(), 932 id.c_str(),
935 host); 933 host);
936 dictionary->SetString( 934 dictionary->SetString(
937 kTargetDevtoolsFrontendUrlField, devtools_frontend_url); 935 kTargetDevtoolsFrontendUrlField, devtools_frontend_url);
938 } 936 }
939 937
940 return dictionary; 938 return dictionary;
941 } 939 }
942 940
943 } // namespace devtools_http_handler 941 } // namespace devtools_http_handler
OLDNEW
« no previous file with comments | « components/devtools_discovery/devtools_target_descriptor.h ('k') | content/browser/devtools/browser_devtools_agent_host.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698