OLD | NEW |
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 "content/browser/devtools/devtools_http_handler_impl.h" | 5 #include "content/browser/devtools/devtools_http_handler_impl.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
185 } | 185 } |
186 | 186 |
187 DevToolsHttpHandlerImpl::~DevToolsHttpHandlerImpl() { | 187 DevToolsHttpHandlerImpl::~DevToolsHttpHandlerImpl() { |
188 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 188 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
189 // Stop() must be called prior to destruction. | 189 // Stop() must be called prior to destruction. |
190 DCHECK(server_.get() == NULL); | 190 DCHECK(server_.get() == NULL); |
191 DCHECK(thread_.get() == NULL); | 191 DCHECK(thread_.get() == NULL); |
192 } | 192 } |
193 | 193 |
194 void DevToolsHttpHandlerImpl::Start() { | 194 void DevToolsHttpHandlerImpl::Start() { |
195 if (thread_.get()) | 195 if (thread_) |
196 return; | 196 return; |
197 thread_.reset(new base::Thread(kDevToolsHandlerThreadName)); | 197 thread_.reset(new base::Thread(kDevToolsHandlerThreadName)); |
198 BrowserThread::PostTask( | 198 BrowserThread::PostTask( |
199 BrowserThread::FILE, FROM_HERE, | 199 BrowserThread::FILE, FROM_HERE, |
200 base::Bind(&DevToolsHttpHandlerImpl::StartHandlerThread, this)); | 200 base::Bind(&DevToolsHttpHandlerImpl::StartHandlerThread, this)); |
201 } | 201 } |
202 | 202 |
203 // Runs on FILE thread. | 203 // Runs on FILE thread. |
204 void DevToolsHttpHandlerImpl::StartHandlerThread() { | 204 void DevToolsHttpHandlerImpl::StartHandlerThread() { |
205 base::Thread::Options options; | 205 base::Thread::Options options; |
(...skipping 13 matching lines...) Expand all Loading... |
219 void DevToolsHttpHandlerImpl::ResetHandlerThread() { | 219 void DevToolsHttpHandlerImpl::ResetHandlerThread() { |
220 thread_.reset(); | 220 thread_.reset(); |
221 } | 221 } |
222 | 222 |
223 void DevToolsHttpHandlerImpl::ResetHandlerThreadAndRelease() { | 223 void DevToolsHttpHandlerImpl::ResetHandlerThreadAndRelease() { |
224 ResetHandlerThread(); | 224 ResetHandlerThread(); |
225 Release(); | 225 Release(); |
226 } | 226 } |
227 | 227 |
228 void DevToolsHttpHandlerImpl::Stop() { | 228 void DevToolsHttpHandlerImpl::Stop() { |
229 if (!thread_.get()) | 229 if (!thread_) |
230 return; | 230 return; |
231 BrowserThread::PostTaskAndReply( | 231 BrowserThread::PostTaskAndReply( |
232 BrowserThread::FILE, FROM_HERE, | 232 BrowserThread::FILE, FROM_HERE, |
233 base::Bind(&DevToolsHttpHandlerImpl::StopHandlerThread, this), | 233 base::Bind(&DevToolsHttpHandlerImpl::StopHandlerThread, this), |
234 base::Bind(&DevToolsHttpHandlerImpl::ResetHandlerThreadAndRelease, this)); | 234 base::Bind(&DevToolsHttpHandlerImpl::ResetHandlerThreadAndRelease, this)); |
235 } | 235 } |
236 | 236 |
237 void DevToolsHttpHandlerImpl::SetDevToolsAgentHostBinding( | 237 void DevToolsHttpHandlerImpl::SetDevToolsAgentHostBinding( |
238 DevToolsAgentHostBinding* binding) { | 238 DevToolsAgentHostBinding* binding) { |
239 if (binding) | 239 if (binding) |
(...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
599 } | 599 } |
600 | 600 |
601 void DevToolsHttpHandlerImpl::OnDiscoveryPageRequestUI(int connection_id) { | 601 void DevToolsHttpHandlerImpl::OnDiscoveryPageRequestUI(int connection_id) { |
602 std::string response = delegate_->GetDiscoveryPageHTML(); | 602 std::string response = delegate_->GetDiscoveryPageHTML(); |
603 Send200(connection_id, response, "text/html; charset=UTF-8"); | 603 Send200(connection_id, response, "text/html; charset=UTF-8"); |
604 } | 604 } |
605 | 605 |
606 void DevToolsHttpHandlerImpl::OnWebSocketRequestUI( | 606 void DevToolsHttpHandlerImpl::OnWebSocketRequestUI( |
607 int connection_id, | 607 int connection_id, |
608 const net::HttpServerRequestInfo& request) { | 608 const net::HttpServerRequestInfo& request) { |
609 if (!thread_.get()) | 609 if (!thread_) |
610 return; | 610 return; |
611 std::string browser_prefix = "/devtools/browser"; | 611 std::string browser_prefix = "/devtools/browser"; |
612 size_t browser_pos = request.path.find(browser_prefix); | 612 size_t browser_pos = request.path.find(browser_prefix); |
613 if (browser_pos == 0) { | 613 if (browser_pos == 0) { |
614 if (browser_target_) { | 614 if (browser_target_) { |
615 Send500(connection_id, "Another client already attached"); | 615 Send500(connection_id, "Another client already attached"); |
616 return; | 616 return; |
617 } | 617 } |
618 browser_target_.reset(new DevToolsBrowserTarget( | 618 browser_target_.reset(new DevToolsBrowserTarget( |
619 thread_->message_loop_proxy().get(), server_.get(), connection_id)); | 619 thread_->message_loop_proxy().get(), server_.get(), connection_id)); |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
732 FROM_HERE, | 732 FROM_HERE, |
733 base::Bind(&DevToolsHttpHandlerImpl::Teardown, this)); | 733 base::Bind(&DevToolsHttpHandlerImpl::Teardown, this)); |
734 // Thread::Stop joins the thread. | 734 // Thread::Stop joins the thread. |
735 thread_->Stop(); | 735 thread_->Stop(); |
736 } | 736 } |
737 | 737 |
738 void DevToolsHttpHandlerImpl::SendJson(int connection_id, | 738 void DevToolsHttpHandlerImpl::SendJson(int connection_id, |
739 net::HttpStatusCode status_code, | 739 net::HttpStatusCode status_code, |
740 base::Value* value, | 740 base::Value* value, |
741 const std::string& message) { | 741 const std::string& message) { |
742 if (!thread_.get()) | 742 if (!thread_) |
743 return; | 743 return; |
744 | 744 |
745 // Serialize value and message. | 745 // Serialize value and message. |
746 std::string json_value; | 746 std::string json_value; |
747 if (value) { | 747 if (value) { |
748 base::JSONWriter::WriteWithOptions(value, | 748 base::JSONWriter::WriteWithOptions(value, |
749 base::JSONWriter::OPTIONS_PRETTY_PRINT, | 749 base::JSONWriter::OPTIONS_PRETTY_PRINT, |
750 &json_value); | 750 &json_value); |
751 } | 751 } |
752 std::string json_message; | 752 std::string json_message; |
(...skipping 11 matching lines...) Expand all Loading... |
764 server_.get(), | 764 server_.get(), |
765 connection_id, | 765 connection_id, |
766 status_code, | 766 status_code, |
767 response, | 767 response, |
768 mime_type)); | 768 mime_type)); |
769 } | 769 } |
770 | 770 |
771 void DevToolsHttpHandlerImpl::Send200(int connection_id, | 771 void DevToolsHttpHandlerImpl::Send200(int connection_id, |
772 const std::string& data, | 772 const std::string& data, |
773 const std::string& mime_type) { | 773 const std::string& mime_type) { |
774 if (!thread_.get()) | 774 if (!thread_) |
775 return; | 775 return; |
776 thread_->message_loop()->PostTask( | 776 thread_->message_loop()->PostTask( |
777 FROM_HERE, | 777 FROM_HERE, |
778 base::Bind(&net::HttpServer::Send200, | 778 base::Bind(&net::HttpServer::Send200, |
779 server_.get(), | 779 server_.get(), |
780 connection_id, | 780 connection_id, |
781 data, | 781 data, |
782 mime_type)); | 782 mime_type)); |
783 } | 783 } |
784 | 784 |
785 void DevToolsHttpHandlerImpl::Send404(int connection_id) { | 785 void DevToolsHttpHandlerImpl::Send404(int connection_id) { |
786 if (!thread_.get()) | 786 if (!thread_) |
787 return; | 787 return; |
788 thread_->message_loop()->PostTask( | 788 thread_->message_loop()->PostTask( |
789 FROM_HERE, | 789 FROM_HERE, |
790 base::Bind(&net::HttpServer::Send404, server_.get(), connection_id)); | 790 base::Bind(&net::HttpServer::Send404, server_.get(), connection_id)); |
791 } | 791 } |
792 | 792 |
793 void DevToolsHttpHandlerImpl::Send500(int connection_id, | 793 void DevToolsHttpHandlerImpl::Send500(int connection_id, |
794 const std::string& message) { | 794 const std::string& message) { |
795 if (!thread_.get()) | 795 if (!thread_) |
796 return; | 796 return; |
797 thread_->message_loop()->PostTask( | 797 thread_->message_loop()->PostTask( |
798 FROM_HERE, | 798 FROM_HERE, |
799 base::Bind(&net::HttpServer::Send500, server_.get(), connection_id, | 799 base::Bind(&net::HttpServer::Send500, server_.get(), connection_id, |
800 message)); | 800 message)); |
801 } | 801 } |
802 | 802 |
803 void DevToolsHttpHandlerImpl::AcceptWebSocket( | 803 void DevToolsHttpHandlerImpl::AcceptWebSocket( |
804 int connection_id, | 804 int connection_id, |
805 const net::HttpServerRequestInfo& request) { | 805 const net::HttpServerRequestInfo& request) { |
806 if (!thread_.get()) | 806 if (!thread_) |
807 return; | 807 return; |
808 thread_->message_loop()->PostTask( | 808 thread_->message_loop()->PostTask( |
809 FROM_HERE, | 809 FROM_HERE, |
810 base::Bind(&net::HttpServer::AcceptWebSocket, server_.get(), | 810 base::Bind(&net::HttpServer::AcceptWebSocket, server_.get(), |
811 connection_id, request)); | 811 connection_id, request)); |
812 } | 812 } |
813 | 813 |
814 base::DictionaryValue* DevToolsHttpHandlerImpl::SerializePageInfo( | 814 base::DictionaryValue* DevToolsHttpHandlerImpl::SerializePageInfo( |
815 RenderViewHost* rvh, | 815 RenderViewHost* rvh, |
816 const std::string& host) { | 816 const std::string& host) { |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
885 host.c_str(), | 885 host.c_str(), |
886 kPageUrlPrefix, | 886 kPageUrlPrefix, |
887 id.c_str())); | 887 id.c_str())); |
888 std::string devtools_frontend_url = GetFrontendURLInternal( | 888 std::string devtools_frontend_url = GetFrontendURLInternal( |
889 id.c_str(), | 889 id.c_str(), |
890 host); | 890 host); |
891 dictionary->SetString(kTargetDevtoolsFrontendUrlField, devtools_frontend_url); | 891 dictionary->SetString(kTargetDevtoolsFrontendUrlField, devtools_frontend_url); |
892 } | 892 } |
893 | 893 |
894 } // namespace content | 894 } // namespace content |
OLD | NEW |