| 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 "modules/cachestorage/InspectorCacheStorageAgent.h" | 5 #include "modules/cachestorage/InspectorCacheStorageAgent.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <memory> | 8 #include <memory> |
| 9 #include <utility> | 9 #include <utility> |
| 10 #include "platform/heap/Handle.h" | 10 #include "platform/heap/Handle.h" |
| 11 #include "platform/weborigin/KURL.h" | 11 #include "platform/weborigin/KURL.h" |
| 12 #include "platform/weborigin/SecurityOrigin.h" | 12 #include "platform/weborigin/SecurityOrigin.h" |
| 13 #include "platform/wtf/Noncopyable.h" | 13 #include "platform/wtf/Noncopyable.h" |
| 14 #include "platform/wtf/PassRefPtr.h" | 14 #include "platform/wtf/PassRefPtr.h" |
| 15 #include "platform/wtf/PtrUtil.h" | 15 #include "platform/wtf/PtrUtil.h" |
| 16 #include "platform/wtf/RefCounted.h" | 16 #include "platform/wtf/RefCounted.h" |
| 17 #include "platform/wtf/RefPtr.h" | 17 #include "platform/wtf/RefPtr.h" |
| 18 #include "platform/wtf/Time.h" |
| 18 #include "platform/wtf/Vector.h" | 19 #include "platform/wtf/Vector.h" |
| 19 #include "platform/wtf/text/StringBuilder.h" | 20 #include "platform/wtf/text/StringBuilder.h" |
| 20 #include "public/platform/Platform.h" | 21 #include "public/platform/Platform.h" |
| 21 #include "public/platform/WebSecurityOrigin.h" | 22 #include "public/platform/WebSecurityOrigin.h" |
| 22 #include "public/platform/WebString.h" | 23 #include "public/platform/WebString.h" |
| 23 #include "public/platform/WebURL.h" | 24 #include "public/platform/WebURL.h" |
| 24 #include "public/platform/WebVector.h" | 25 #include "public/platform/WebVector.h" |
| 25 #include "public/platform/modules/serviceworker/WebServiceWorkerCache.h" | 26 #include "public/platform/modules/serviceworker/WebServiceWorkerCache.h" |
| 26 #include "public/platform/modules/serviceworker/WebServiceWorkerCacheError.h" | 27 #include "public/platform/modules/serviceworker/WebServiceWorkerCacheError.h" |
| 27 #include "public/platform/modules/serviceworker/WebServiceWorkerCacheStorage.h" | 28 #include "public/platform/modules/serviceworker/WebServiceWorkerCacheStorage.h" |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 158 int skip_count; | 159 int skip_count; |
| 159 int page_size; | 160 int page_size; |
| 160 }; | 161 }; |
| 161 | 162 |
| 162 struct RequestResponse { | 163 struct RequestResponse { |
| 163 RequestResponse() {} | 164 RequestResponse() {} |
| 164 RequestResponse(const String& request, const String& response) | 165 RequestResponse(const String& request, const String& response) |
| 165 : request(request), response(response) {} | 166 : request(request), response(response) {} |
| 166 String request; | 167 String request; |
| 167 String response; | 168 String response; |
| 169 double responseTime; |
| 168 }; | 170 }; |
| 169 | 171 |
| 170 class ResponsesAccumulator : public RefCounted<ResponsesAccumulator> { | 172 class ResponsesAccumulator : public RefCounted<ResponsesAccumulator> { |
| 171 WTF_MAKE_NONCOPYABLE(ResponsesAccumulator); | 173 WTF_MAKE_NONCOPYABLE(ResponsesAccumulator); |
| 172 | 174 |
| 173 public: | 175 public: |
| 174 ResponsesAccumulator(int num_responses, | 176 ResponsesAccumulator(int num_responses, |
| 175 const DataRequestParams& params, | 177 const DataRequestParams& params, |
| 176 std::unique_ptr<RequestEntriesCallback> callback) | 178 std::unique_ptr<RequestEntriesCallback> callback) |
| 177 : params_(params), | 179 : params_(params), |
| 178 num_responses_left_(num_responses), | 180 num_responses_left_(num_responses), |
| 179 responses_(static_cast<size_t>(num_responses)), | 181 responses_(static_cast<size_t>(num_responses)), |
| 180 callback_(std::move(callback)) {} | 182 callback_(std::move(callback)) {} |
| 181 | 183 |
| 182 void AddRequestResponsePair(const WebServiceWorkerRequest& request, | 184 void AddRequestResponsePair(const WebServiceWorkerRequest& request, |
| 183 const WebServiceWorkerResponse& response) { | 185 const WebServiceWorkerResponse& response) { |
| 184 DCHECK_GT(num_responses_left_, 0); | 186 DCHECK_GT(num_responses_left_, 0); |
| 185 RequestResponse& request_response = | 187 RequestResponse& request_response = |
| 186 responses_.at(responses_.size() - num_responses_left_); | 188 responses_.at(responses_.size() - num_responses_left_); |
| 187 request_response.request = request.Url().GetString(); | 189 request_response.request = request.Url().GetString(); |
| 188 request_response.response = response.StatusText(); | 190 request_response.response = response.StatusText(); |
| 191 request_response.responseTime = |
| 192 WTF::Time::FromInternalValue(response.ResponseTime()).ToDoubleT(); |
| 189 | 193 |
| 190 if (--num_responses_left_ != 0) | 194 if (--num_responses_left_ != 0) |
| 191 return; | 195 return; |
| 192 | 196 |
| 193 std::sort(responses_.begin(), responses_.end(), | 197 std::sort(responses_.begin(), responses_.end(), |
| 194 [](const RequestResponse& a, const RequestResponse& b) { | 198 [](const RequestResponse& a, const RequestResponse& b) { |
| 195 return WTF::CodePointCompareLessThan(a.request, b.request); | 199 return WTF::CodePointCompareLessThan(a.request, b.request); |
| 196 }); | 200 }); |
| 197 if (params_.skip_count > 0) | 201 if (params_.skip_count > 0) |
| 198 responses_.erase(0, params_.skip_count); | 202 responses_.erase(0, params_.skip_count); |
| 199 bool has_more = false; | 203 bool has_more = false; |
| 200 if (static_cast<size_t>(params_.page_size) < responses_.size()) { | 204 if (static_cast<size_t>(params_.page_size) < responses_.size()) { |
| 201 responses_.erase(params_.page_size, | 205 responses_.erase(params_.page_size, |
| 202 responses_.size() - params_.page_size); | 206 responses_.size() - params_.page_size); |
| 203 has_more = true; | 207 has_more = true; |
| 204 } | 208 } |
| 205 std::unique_ptr<Array<DataEntry>> array = Array<DataEntry>::create(); | 209 std::unique_ptr<Array<DataEntry>> array = Array<DataEntry>::create(); |
| 206 for (const auto& request_response : responses_) { | 210 for (const auto& request_response : responses_) { |
| 207 std::unique_ptr<DataEntry> entry = | 211 std::unique_ptr<DataEntry> entry = |
| 208 DataEntry::create() | 212 DataEntry::create() |
| 209 .setRequest(request_response.request) | 213 .setRequest(request_response.request) |
| 210 .setResponse(request_response.response) | 214 .setResponse(request_response.response) |
| 215 .setResponseTime(request_response.responseTime) |
| 211 .build(); | 216 .build(); |
| 212 array->addItem(std::move(entry)); | 217 array->addItem(std::move(entry)); |
| 213 } | 218 } |
| 214 callback_->sendSuccess(std::move(array), has_more); | 219 callback_->sendSuccess(std::move(array), has_more); |
| 215 } | 220 } |
| 216 | 221 |
| 217 void SendFailure(const Response& error) { callback_->sendFailure(error); } | 222 void SendFailure(const Response& error) { callback_->sendFailure(error); } |
| 218 | 223 |
| 219 private: | 224 private: |
| 220 DataRequestParams params_; | 225 DataRequestParams params_; |
| (...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 486 if (!response.isSuccess()) { | 491 if (!response.isSuccess()) { |
| 487 callback->sendFailure(response); | 492 callback->sendFailure(response); |
| 488 return; | 493 return; |
| 489 } | 494 } |
| 490 cache->DispatchOpen(WTF::MakeUnique<GetCacheForDeleteEntry>( | 495 cache->DispatchOpen(WTF::MakeUnique<GetCacheForDeleteEntry>( |
| 491 request, cache_name, std::move(callback)), | 496 request, cache_name, std::move(callback)), |
| 492 WebString(cache_name)); | 497 WebString(cache_name)); |
| 493 } | 498 } |
| 494 | 499 |
| 495 } // namespace blink | 500 } // namespace blink |
| OLD | NEW |