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

Side by Side Diff: pdf/document_loader.cc

Issue 301033003: Removed unnecessary map. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Wed 05/28/2014 22:09:12.72 Created 6 years, 6 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 | Annotate | Revision Log
« no previous file with comments | « pdf/document_loader.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 "pdf/document_loader.h" 5 #include "pdf/document_loader.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/strings/string_util.h" 8 #include "base/strings/string_util.h"
9 #include "net/http/http_util.h" 9 #include "net/http/http_util.h"
10 #include "ppapi/c/pp_errors.h" 10 #include "ppapi/c/pp_errors.h"
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 if (StartsWithASCII(disposition, "attachment", false)) { 86 if (StartsWithASCII(disposition, "attachment", false)) {
87 return false; 87 return false;
88 } 88 }
89 89
90 if (content_length > 0) 90 if (content_length > 0)
91 chunk_stream_.Preallocate(content_length); 91 chunk_stream_.Preallocate(content_length);
92 92
93 document_size_ = content_length; 93 document_size_ = content_length;
94 requests_count_ = 0; 94 requests_count_ = 0;
95 95
96 // Document loading strategy.
97 // Following table shows the growth on the minimal request size depending
98 // on the number requests that has been made already.
99 chunk_size_table_[10] = 32*1024;
100 chunk_size_table_[20] = 64*1024;
101 chunk_size_table_[30] = 128*1024;
102 chunk_size_table_[40] = 256*1024;
103 chunk_size_table_[50] = 512*1024;
104 chunk_size_table_[60] = 1024*1024;
105 chunk_size_table_[70] = 2048*1024;
106
107 // Enable partial loading only if file size is above the threshold. 96 // Enable partial loading only if file size is above the threshold.
108 // It will allow avoiding latency for multiple requests. 97 // It will allow avoiding latency for multiple requests.
109 if (content_length > kMinFileSize && 98 if (content_length > kMinFileSize &&
110 accept_ranges_bytes && 99 accept_ranges_bytes &&
111 !content_encoded) { 100 !content_encoded) {
112 LoadPartialDocument(); 101 LoadPartialDocument();
113 } else { 102 } else {
114 LoadFullDocument(); 103 LoadFullDocument();
115 } 104 }
116 return true; 105 return true;
(...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after
498 // Let's keep downloading PDF file in small chunks. 487 // Let's keep downloading PDF file in small chunks.
499 uint32 pos = chunk_stream_.GetFirstMissingByte(); 488 uint32 pos = chunk_stream_.GetFirstMissingByte();
500 std::vector<std::pair<size_t, size_t> > ranges; 489 std::vector<std::pair<size_t, size_t> > ranges;
501 chunk_stream_.GetMissedRanges(pos, GetRequestSize(), &ranges); 490 chunk_stream_.GetMissedRanges(pos, GetRequestSize(), &ranges);
502 DCHECK(ranges.size() > 0); 491 DCHECK(ranges.size() > 0);
503 RequestData(ranges[0].first, ranges[0].second); 492 RequestData(ranges[0].first, ranges[0].second);
504 } 493 }
505 } 494 }
506 495
507 uint32 DocumentLoader::GetRequestSize() const { 496 uint32 DocumentLoader::GetRequestSize() const {
508 std::map<uint32, uint32>::const_iterator iter = 497 // Document loading strategy:
509 chunk_size_table_.lower_bound(requests_count_); 498 // For first 10 requests, we use 32k chunk sizes, for the next 10 requests we
510 if (iter == chunk_size_table_.end()) 499 // double the size (64k), and so on, until we cap max request size at 2M for
511 iter--; 500 // 71 or more requests.
512 return iter->second; 501 uint32 limited_count = std::min(std::max(requests_count_, 10u), 70u);
502 return 32*1024 * (1 << ((limited_count - 1) / 10u));
513 } 503 }
514 504
515 } // namespace chrome_pdf 505 } // namespace chrome_pdf
OLDNEW
« no previous file with comments | « pdf/document_loader.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698