| Index: components/precache/core/precache_fetcher.cc
|
| diff --git a/components/precache/core/precache_fetcher.cc b/components/precache/core/precache_fetcher.cc
|
| index eb9aeba0a15504b0b22cd635a144f74766f478f2..7db10e6a8e10278cd046d8b1d56819a166654aef 100644
|
| --- a/components/precache/core/precache_fetcher.cc
|
| +++ b/components/precache/core/precache_fetcher.cc
|
| @@ -306,12 +306,14 @@ PrecacheFetcher::PrecacheFetcher(
|
| const GURL& config_url,
|
| const std::string& manifest_url_prefix,
|
| std::unique_ptr<PrecacheUnfinishedWork> unfinished_work,
|
| + uint32_t experiment_id,
|
| PrecacheFetcher::PrecacheDelegate* precache_delegate)
|
| : request_context_(request_context),
|
| config_url_(config_url),
|
| manifest_url_prefix_(manifest_url_prefix),
|
| precache_delegate_(precache_delegate),
|
| - pool_(kMaxParallelFetches) {
|
| + pool_(kMaxParallelFetches),
|
| + experiment_id_(experiment_id) {
|
| DCHECK(request_context_.get()); // Request context must be non-NULL.
|
| DCHECK(precache_delegate_); // Precache delegate must be non-NULL.
|
|
|
| @@ -521,8 +523,12 @@ void PrecacheFetcher::OnManifestFetchComplete(const Fetcher& source) {
|
| const int32_t len =
|
| std::min(manifest.resource_size(),
|
| unfinished_work_->config_settings().top_resources_count());
|
| + const uint64_t resource_bitset = manifest.experiments()
|
| + .resources_by_experiment_group()
|
| + .at(experiment_id_)
|
| + .bitset();
|
| for (int i = 0; i < len; ++i) {
|
| - if (manifest.resource(i).has_url())
|
| + if (((0x1 << i) & resource_bitset) && manifest.resource(i).has_url())
|
| resource_urls_to_fetch_.push_back(GURL(manifest.resource(i).url()));
|
| }
|
| }
|
|
|