OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/net/referrer.h" | 5 #include "chrome/browser/net/referrer.h" |
6 | 6 |
7 #include <limits.h> | 7 #include <limits.h> |
8 #include <stddef.h> | 8 #include <stddef.h> |
9 | 9 |
10 #include <memory> | 10 #include <memory> |
11 #include <utility> | 11 #include <utility> |
12 | 12 |
13 #include "base/compiler_specific.h" | 13 #include "base/compiler_specific.h" |
14 #include "base/logging.h" | 14 #include "base/logging.h" |
| 15 #include "base/memory/ptr_util.h" |
15 #include "base/message_loop/message_loop.h" | 16 #include "base/message_loop/message_loop.h" |
16 #include "base/values.h" | 17 #include "base/values.h" |
17 #include "chrome/browser/net/predictor.h" | 18 #include "chrome/browser/net/predictor.h" |
18 | 19 |
19 namespace chrome_browser_net { | 20 namespace chrome_browser_net { |
20 | 21 |
21 //------------------------------------------------------------------------------ | 22 //------------------------------------------------------------------------------ |
22 // Smoothing parameter for updating subresource_use_rate_. | 23 // Smoothing parameter for updating subresource_use_rate_. |
23 | 24 |
24 // We always combine our old expected value, weighted by some factor W (we use | 25 // We always combine our old expected value, weighted by some factor W (we use |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
125 // TODO(jar): We could be more direct, and change birth date or similar to | 126 // TODO(jar): We could be more direct, and change birth date or similar to |
126 // show that this is a resurrected value we're adding in. I'm not yet sure | 127 // show that this is a resurrected value we're adding in. I'm not yet sure |
127 // of how best to optimize the learning and pruning (Trim) algorithm at this | 128 // of how best to optimize the learning and pruning (Trim) algorithm at this |
128 // level, so for now, we just suggest subresources, which leaves them all | 129 // level, so for now, we just suggest subresources, which leaves them all |
129 // with the same birth date (typically start of process). | 130 // with the same birth date (typically start of process). |
130 SuggestHost(url); | 131 SuggestHost(url); |
131 (*this)[url].SetSubresourceUseRate(rate); | 132 (*this)[url].SetSubresourceUseRate(rate); |
132 } | 133 } |
133 } | 134 } |
134 | 135 |
135 base::Value* Referrer::Serialize() const { | 136 std::unique_ptr<base::ListValue> Referrer::Serialize() const { |
136 base::ListValue* subresource_list(new base::ListValue); | 137 auto subresource_list = base::MakeUnique<base::ListValue>(); |
137 for (const_iterator it = begin(); it != end(); ++it) { | 138 for (const_iterator it = begin(); it != end(); ++it) { |
138 std::unique_ptr<base::StringValue> url_spec( | 139 subresource_list->AppendString(it->first.spec()); |
139 new base::StringValue(it->first.spec())); | 140 subresource_list->AppendDouble(it->second.subresource_use_rate()); |
140 std::unique_ptr<base::FundamentalValue> rate( | |
141 new base::FundamentalValue(it->second.subresource_use_rate())); | |
142 | |
143 subresource_list->Append(std::move(url_spec)); | |
144 subresource_list->Append(std::move(rate)); | |
145 } | 141 } |
146 return subresource_list; | 142 return subresource_list; |
147 } | 143 } |
148 | 144 |
149 //------------------------------------------------------------------------------ | 145 //------------------------------------------------------------------------------ |
150 | 146 |
151 ReferrerValue::ReferrerValue() | 147 ReferrerValue::ReferrerValue() |
152 : birth_time_(base::Time::Now()), | 148 : birth_time_(base::Time::Now()), |
153 navigation_count_(0), | 149 navigation_count_(0), |
154 preconnection_count_(0), | 150 preconnection_count_(0), |
(...skipping 10 matching lines...) Expand all Loading... |
165 | 161 |
166 void ReferrerValue::ReferrerWasObserved() { | 162 void ReferrerValue::ReferrerWasObserved() { |
167 subresource_use_rate_ *= kWeightingForOldConnectsExpectedValue; | 163 subresource_use_rate_ *= kWeightingForOldConnectsExpectedValue; |
168 // Note: the use rate is temporarilly possibly incorect, as we need to find | 164 // Note: the use rate is temporarilly possibly incorect, as we need to find |
169 // out if we really end up connecting. This will happen in a few hundred | 165 // out if we really end up connecting. This will happen in a few hundred |
170 // milliseconds (when content arrives, etc.). | 166 // milliseconds (when content arrives, etc.). |
171 // Value of subresource_use_rate_ should be sampled before this call. | 167 // Value of subresource_use_rate_ should be sampled before this call. |
172 } | 168 } |
173 | 169 |
174 } // namespace chrome_browser_net | 170 } // namespace chrome_browser_net |
OLD | NEW |