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 "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/json/json_reader.h" | 8 #include "base/json/json_reader.h" |
9 #include "base/json/json_writer.h" | 9 #include "base/json/json_writer.h" |
10 #include "base/metrics/histogram.h" | 10 #include "base/metrics/histogram.h" |
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
235 } | 235 } |
236 | 236 |
237 InfoBarService* DefaultBindingsDelegate::GetInfoBarService() { | 237 InfoBarService* DefaultBindingsDelegate::GetInfoBarService() { |
238 return InfoBarService::FromWebContents(web_contents_); | 238 return InfoBarService::FromWebContents(web_contents_); |
239 } | 239 } |
240 | 240 |
241 // ResponseWriter ------------------------------------------------------------- | 241 // ResponseWriter ------------------------------------------------------------- |
242 | 242 |
243 class ResponseWriter : public net::URLFetcherResponseWriter { | 243 class ResponseWriter : public net::URLFetcherResponseWriter { |
244 public: | 244 public: |
245 ResponseWriter(DevToolsUIBindings* bindings, int stream_id); | 245 ResponseWriter(base::WeakPtr<DevToolsUIBindings> bindings, int stream_id); |
246 ~ResponseWriter() override; | 246 ~ResponseWriter() override; |
247 | 247 |
248 // URLFetcherResponseWriter overrides: | 248 // URLFetcherResponseWriter overrides: |
249 int Initialize(const net::CompletionCallback& callback) override; | 249 int Initialize(const net::CompletionCallback& callback) override; |
250 int Write(net::IOBuffer* buffer, | 250 int Write(net::IOBuffer* buffer, |
251 int num_bytes, | 251 int num_bytes, |
252 const net::CompletionCallback& callback) override; | 252 const net::CompletionCallback& callback) override; |
253 int Finish(const net::CompletionCallback& callback) override; | 253 int Finish(const net::CompletionCallback& callback) override; |
254 | 254 |
255 private: | 255 private: |
256 DevToolsUIBindings* bindings_; | 256 base::WeakPtr<DevToolsUIBindings> bindings_; |
257 int stream_id_; | 257 int stream_id_; |
258 | 258 |
259 DISALLOW_COPY_AND_ASSIGN(ResponseWriter); | 259 DISALLOW_COPY_AND_ASSIGN(ResponseWriter); |
260 }; | 260 }; |
261 | 261 |
262 ResponseWriter::ResponseWriter(DevToolsUIBindings* bindings, | 262 ResponseWriter::ResponseWriter(base::WeakPtr<DevToolsUIBindings> bindings, |
263 int stream_id) | 263 int stream_id) |
264 : bindings_(bindings), | 264 : bindings_(bindings), |
265 stream_id_(stream_id) { | 265 stream_id_(stream_id) { |
266 } | 266 } |
267 | 267 |
268 ResponseWriter::~ResponseWriter() { | 268 ResponseWriter::~ResponseWriter() { |
269 } | 269 } |
270 | 270 |
271 int ResponseWriter::Initialize(const net::CompletionCallback& callback) { | 271 int ResponseWriter::Initialize(const net::CompletionCallback& callback) { |
272 return net::OK; | 272 return net::OK; |
273 } | 273 } |
274 | 274 |
275 int ResponseWriter::Write(net::IOBuffer* buffer, | 275 int ResponseWriter::Write(net::IOBuffer* buffer, |
276 int num_bytes, | 276 int num_bytes, |
277 const net::CompletionCallback& callback) { | 277 const net::CompletionCallback& callback) { |
278 base::FundamentalValue id(stream_id_); | 278 base::FundamentalValue* id = new base::FundamentalValue(stream_id_); |
279 base::StringValue chunk(std::string(buffer->data(), num_bytes)); | 279 base::StringValue* chunk = |
280 bindings_->CallClientFunction( | 280 new base::StringValue(std::string(buffer->data(), num_bytes)); |
281 "DevToolsAPI.streamWrite", &id, &chunk, nullptr); | 281 |
| 282 content::BrowserThread::PostTask( |
| 283 content::BrowserThread::UI, FROM_HERE, |
| 284 base::Bind(&DevToolsUIBindings::CallClientFunction, |
| 285 bindings_, "DevToolsAPI.streamWrite", |
| 286 base::Owned(id), base::Owned(chunk), nullptr)); |
282 return num_bytes; | 287 return num_bytes; |
283 } | 288 } |
284 | 289 |
285 int ResponseWriter::Finish(const net::CompletionCallback& callback) { | 290 int ResponseWriter::Finish(const net::CompletionCallback& callback) { |
286 base::FundamentalValue id(stream_id_); | |
287 bindings_->CallClientFunction( | |
288 "DevToolsAPI.streamFinish", &id, nullptr, nullptr); | |
289 return net::OK; | 291 return net::OK; |
290 } | 292 } |
291 | 293 |
292 } // namespace | 294 } // namespace |
293 | 295 |
294 // DevToolsUIBindings::FrontendWebContentsObserver ---------------------------- | 296 // DevToolsUIBindings::FrontendWebContentsObserver ---------------------------- |
295 | 297 |
296 class DevToolsUIBindings::FrontendWebContentsObserver | 298 class DevToolsUIBindings::FrontendWebContentsObserver |
297 : public content::WebContentsObserver { | 299 : public content::WebContentsObserver { |
298 public: | 300 public: |
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
580 SendMessageAck(request_id, &response); | 582 SendMessageAck(request_id, &response); |
581 return; | 583 return; |
582 } | 584 } |
583 | 585 |
584 net::URLFetcher* fetcher = | 586 net::URLFetcher* fetcher = |
585 net::URLFetcher::Create(gurl, net::URLFetcher::GET, this); | 587 net::URLFetcher::Create(gurl, net::URLFetcher::GET, this); |
586 pending_requests_[fetcher] = request_id; | 588 pending_requests_[fetcher] = request_id; |
587 fetcher->SetRequestContext(profile_->GetRequestContext()); | 589 fetcher->SetRequestContext(profile_->GetRequestContext()); |
588 fetcher->SetExtraRequestHeaders(headers); | 590 fetcher->SetExtraRequestHeaders(headers); |
589 fetcher->SaveResponseWithWriter(scoped_ptr<net::URLFetcherResponseWriter>( | 591 fetcher->SaveResponseWithWriter(scoped_ptr<net::URLFetcherResponseWriter>( |
590 new ResponseWriter(this, stream_id))); | 592 new ResponseWriter(weak_factory_.GetWeakPtr(), stream_id))); |
591 fetcher->Start(); | 593 fetcher->Start(); |
592 } | 594 } |
593 | 595 |
594 void DevToolsUIBindings::OpenInNewTab(int request_id, const std::string& url) { | 596 void DevToolsUIBindings::OpenInNewTab(int request_id, const std::string& url) { |
595 delegate_->OpenInNewTab(url); | 597 delegate_->OpenInNewTab(url); |
596 } | 598 } |
597 | 599 |
598 void DevToolsUIBindings::SaveToFile(int request_id, | 600 void DevToolsUIBindings::SaveToFile(int request_id, |
599 const std::string& url, | 601 const std::string& url, |
600 const std::string& content, | 602 const std::string& content, |
(...skipping 422 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1023 if (frontend_loaded_) | 1025 if (frontend_loaded_) |
1024 return; | 1026 return; |
1025 frontend_loaded_ = true; | 1027 frontend_loaded_ = true; |
1026 | 1028 |
1027 // Call delegate first - it seeds importants bit of information. | 1029 // Call delegate first - it seeds importants bit of information. |
1028 delegate_->OnLoadCompleted(); | 1030 delegate_->OnLoadCompleted(); |
1029 | 1031 |
1030 UpdateTheme(); | 1032 UpdateTheme(); |
1031 AddDevToolsExtensionsToClient(); | 1033 AddDevToolsExtensionsToClient(); |
1032 } | 1034 } |
OLD | NEW |