Take the best from both projects.
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/8b3c17d1e53fade1111ec0fe9aed8a6f891d5331 commit 8b3c17d1e53fade1111ec0fe9aed8a6f891d5331 Author: alexilin <alexilin@chromium.org> Date: Thu Mar 09 18:27:42 2017 predictors: Add Manifest table to ResourcePrefetchPredictor. The very first step to reuse Bork manifests in ResourcePrefetchPredictor. This CL adds a new table to the predictor database. BUG= 699115 Review-Url: https://codereview.chromium.org/2738613003 Cr-Commit-Position: refs/heads/master@{#455798} [modify] https://crrev.com/8b3c17d1e53fade1111ec0fe9aed8a6f891d5331/chrome/browser/BUILD.gn [modify] https://crrev.com/8b3c17d1e53fade1111ec0fe9aed8a6f891d5331/chrome/browser/predictors/resource_prefetch_predictor.cc [modify] https://crrev.com/8b3c17d1e53fade1111ec0fe9aed8a6f891d5331/chrome/browser/predictors/resource_prefetch_predictor.h [modify] https://crrev.com/8b3c17d1e53fade1111ec0fe9aed8a6f891d5331/chrome/browser/predictors/resource_prefetch_predictor_tables.cc [modify] https://crrev.com/8b3c17d1e53fade1111ec0fe9aed8a6f891d5331/chrome/browser/predictors/resource_prefetch_predictor_tables.h [modify] https://crrev.com/8b3c17d1e53fade1111ec0fe9aed8a6f891d5331/chrome/browser/predictors/resource_prefetch_predictor_tables_unittest.cc [modify] https://crrev.com/8b3c17d1e53fade1111ec0fe9aed8a6f891d5331/chrome/browser/predictors/resource_prefetch_predictor_test_util.cc [modify] https://crrev.com/8b3c17d1e53fade1111ec0fe9aed8a6f891d5331/chrome/browser/predictors/resource_prefetch_predictor_test_util.h [modify] https://crrev.com/8b3c17d1e53fade1111ec0fe9aed8a6f891d5331/chrome/browser/predictors/resource_prefetch_predictor_unittest.cc [modify] https://crrev.com/8b3c17d1e53fade1111ec0fe9aed8a6f891d5331/components/precache/core/proto/precache.proto
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/b0b2d6ffa58b392bd30b49465ba29590c1616fe5 commit b0b2d6ffa58b392bd30b49465ba29590c1616fe5 Author: alexilin <alexilin@chromium.org> Date: Wed Mar 22 13:46:08 2017 predictors: Pass manifests from Bork to store in ResourcePrefetchPredictor. This CL makes ResourcePrefetchPredictor accessible from PrecacheManager to notify about new manifests through PrecacheManifestDelegate interface. These manifests are saved then in a dedicated table on a ResourcePrefetchPredictor side. BUG= 699115 Review-Url: https://codereview.chromium.org/2762673002 Cr-Commit-Position: refs/heads/master@{#458735} [modify] https://crrev.com/b0b2d6ffa58b392bd30b49465ba29590c1616fe5/chrome/browser/precache/precache_manager_factory.cc [modify] https://crrev.com/b0b2d6ffa58b392bd30b49465ba29590c1616fe5/chrome/browser/predictors/resource_prefetch_predictor.cc [modify] https://crrev.com/b0b2d6ffa58b392bd30b49465ba29590c1616fe5/chrome/browser/predictors/resource_prefetch_predictor.h [modify] https://crrev.com/b0b2d6ffa58b392bd30b49465ba29590c1616fe5/chrome/browser/predictors/resource_prefetch_predictor_test_util.cc [modify] https://crrev.com/b0b2d6ffa58b392bd30b49465ba29590c1616fe5/chrome/browser/predictors/resource_prefetch_predictor_test_util.h [modify] https://crrev.com/b0b2d6ffa58b392bd30b49465ba29590c1616fe5/chrome/browser/predictors/resource_prefetch_predictor_unittest.cc [modify] https://crrev.com/b0b2d6ffa58b392bd30b49465ba29590c1616fe5/components/precache/content/precache_manager.cc [modify] https://crrev.com/b0b2d6ffa58b392bd30b49465ba29590c1616fe5/components/precache/content/precache_manager.h [modify] https://crrev.com/b0b2d6ffa58b392bd30b49465ba29590c1616fe5/components/precache/content/precache_manager_unittest.cc [modify] https://crrev.com/b0b2d6ffa58b392bd30b49465ba29590c1616fe5/components/precache/core/precache_fetcher.cc [modify] https://crrev.com/b0b2d6ffa58b392bd30b49465ba29590c1616fe5/components/precache/core/precache_fetcher.h [modify] https://crrev.com/b0b2d6ffa58b392bd30b49465ba29590c1616fe5/components/precache/core/precache_fetcher_unittest.cc
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/0559ee094eaf06da395d78b81cae19352ac68f9c commit 0559ee094eaf06da395d78b81cae19352ac68f9c Author: alexilin <alexilin@chromium.org> Date: Tue Apr 04 09:37:56 2017 predictors: Remove unknown fields from PrecacheManifest before store it. PrecacheManifest comes to ResourcePrefetchPredictor from an external source that could have a different protobuf definition. The definition could contain fields that are unknown for the current version of Chromium. During deserialization, unknown fields are not discarded but stored in unknown_fields. The database has to be wiped out after update of the .proto file so there is no need to store unknown fields. BUG= 699115 Review-Url: https://codereview.chromium.org/2790633002 Cr-Commit-Position: refs/heads/master@{#461668} [modify] https://crrev.com/0559ee094eaf06da395d78b81cae19352ac68f9c/chrome/browser/predictors/resource_prefetch_predictor.cc [modify] https://crrev.com/0559ee094eaf06da395d78b81cae19352ac68f9c/chrome/browser/predictors/resource_prefetch_predictor_unittest.cc
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/8c484a3fff11a18c722b1690e1090effd1978a97 commit 8c484a3fff11a18c722b1690e1090effd1978a97 Author: alexilin <alexilin@chromium.org> Date: Mon Apr 10 10:02:37 2017 predictors: Put manifests for ResourcePrefetchPredictor behind a flag. Add a flag to disable precache manifests usage in ResourcePrefetchPredictor by default. This flag is configurable through finch experement params. BUG= 699115 Review-Url: https://codereview.chromium.org/2804963002 Cr-Commit-Position: refs/heads/master@{#463208} [modify] https://crrev.com/8c484a3fff11a18c722b1690e1090effd1978a97/chrome/browser/predictors/resource_prefetch_common.cc [modify] https://crrev.com/8c484a3fff11a18c722b1690e1090effd1978a97/chrome/browser/predictors/resource_prefetch_common.h [modify] https://crrev.com/8c484a3fff11a18c722b1690e1090effd1978a97/chrome/browser/predictors/resource_prefetch_common_unittest.cc [modify] https://crrev.com/8c484a3fff11a18c722b1690e1090effd1978a97/chrome/browser/predictors/resource_prefetch_predictor.cc [modify] https://crrev.com/8c484a3fff11a18c722b1690e1090effd1978a97/chrome/browser/predictors/resource_prefetch_predictor_unittest.cc
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/f73af7b0dc19fe2ee514c6848c013388c1d6427a commit f73af7b0dc19fe2ee514c6848c013388c1d6427a Author: alexilin <alexilin@chromium.org> Date: Mon Apr 10 12:49:12 2017 precache: Extract common methods for PrecacheManifest into util. The GetResourceBitset() function is needed for both ResourcePrefetchPredictor and PrecacheFetcher. This CL extracts util functions into a separate file to allow to reuse the same code. BUG= 699115 Review-Url: https://codereview.chromium.org/2802053002 Cr-Commit-Position: refs/heads/master@{#463236} [modify] https://crrev.com/f73af7b0dc19fe2ee514c6848c013388c1d6427a/chrome/browser/BUILD.gn [modify] https://crrev.com/f73af7b0dc19fe2ee514c6848c013388c1d6427a/chrome/browser/predictors/resource_prefetch_predictor.cc [modify] https://crrev.com/f73af7b0dc19fe2ee514c6848c013388c1d6427a/components/precache/core/BUILD.gn [modify] https://crrev.com/f73af7b0dc19fe2ee514c6848c013388c1d6427a/components/precache/core/precache_fetcher.cc [add] https://crrev.com/f73af7b0dc19fe2ee514c6848c013388c1d6427a/components/precache/core/precache_manifest_util.cc [add] https://crrev.com/f73af7b0dc19fe2ee514c6848c013388c1d6427a/components/precache/core/precache_manifest_util.h
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/09bb93957f9fb4390de8dcca9ca40a6c467f9362 commit 09bb93957f9fb4390de8dcca9ca40a6c467f9362 Author: alexilin <alexilin@chromium.org> Date: Fri Apr 14 10:39:16 2017 predictors: Remove resources marked as unused. The PrecacheManifest contains list of subresources no longer used. The predictor removes such resources from the database after the manifest fetched. BUG= 699115 Review-Url: https://codereview.chromium.org/2815513011 Cr-Commit-Position: refs/heads/master@{#464712} [modify] https://crrev.com/09bb93957f9fb4390de8dcca9ca40a6c467f9362/chrome/browser/predictors/resource_prefetch_predictor.cc [modify] https://crrev.com/09bb93957f9fb4390de8dcca9ca40a6c467f9362/chrome/browser/predictors/resource_prefetch_predictor.h [modify] https://crrev.com/09bb93957f9fb4390de8dcca9ca40a6c467f9362/chrome/browser/predictors/resource_prefetch_predictor_test_util.cc [modify] https://crrev.com/09bb93957f9fb4390de8dcca9ca40a6c467f9362/chrome/browser/predictors/resource_prefetch_predictor_test_util.h [modify] https://crrev.com/09bb93957f9fb4390de8dcca9ca40a6c467f9362/chrome/browser/predictors/resource_prefetch_predictor_unittest.cc
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/132ccede61f0fe6fe34617a73eb945eb99ef1bee commit 132ccede61f0fe6fe34617a73eb945eb99ef1bee Author: alexilin <alexilin@chromium.org> Date: Wed Apr 19 07:48:37 2017 precache: Add the check for a minimum length of manifest bitset. Experiment bitsets have to be not shorter than manifest resource size. Manifests come from the network so it won't be paranoid to assert this condition. BUG= 699115 Review-Url: https://codereview.chromium.org/2820713002 Cr-Commit-Position: refs/heads/master@{#465521} [modify] https://crrev.com/132ccede61f0fe6fe34617a73eb945eb99ef1bee/components/precache/core/precache_manifest_util.cc
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/ff7d03b40a6e5eaa323dd18fbc873ff868392689 commit ff7d03b40a6e5eaa323dd18fbc873ff868392689 Author: alexilin <alexilin@chromium.org> Date: Wed Apr 19 17:01:59 2017 predictors: Prefetch resources from manifest. ResourcePrefetchPredictor tries to prefetch resources from a precache manifest if there is no available prediction based on local history. This CL also adds the check for the manifest age before save it to the database. BUG= 699115 Review-Url: https://codereview.chromium.org/2825693002 Cr-Commit-Position: refs/heads/master@{#465642} [modify] https://crrev.com/ff7d03b40a6e5eaa323dd18fbc873ff868392689/chrome/browser/predictors/resource_prefetch_predictor.cc [modify] https://crrev.com/ff7d03b40a6e5eaa323dd18fbc873ff868392689/chrome/browser/predictors/resource_prefetch_predictor.h [modify] https://crrev.com/ff7d03b40a6e5eaa323dd18fbc873ff868392689/chrome/browser/predictors/resource_prefetch_predictor_test_util.cc [modify] https://crrev.com/ff7d03b40a6e5eaa323dd18fbc873ff868392689/chrome/browser/predictors/resource_prefetch_predictor_test_util.h [modify] https://crrev.com/ff7d03b40a6e5eaa323dd18fbc873ff868392689/chrome/browser/predictors/resource_prefetch_predictor_unittest.cc
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/62ffefbb0a2dcd9d0ff0a1a12288577c766af408 commit 62ffefbb0a2dcd9d0ff0a1a12288577c766af408 Author: alexilin <alexilin@chromium.org> Date: Thu Apr 27 19:08:41 2017 predictors: Add resource type to manifest. This CL adds a new resource type field to the manifest proto. ResourcePrefetchPredictor begins to use this field to prefetch all resources of one resource type before another. Also we prioritize stylesheets above scripts since this CL. Stylesheets are almost always critical, scripts are not. It's clear win in the case if we're fetching resources from manifests because we don't have information about request priority in manifests. Thus we can't separate critical scripts from non-critical ones. BUG= 699115 Review-Url: https://codereview.chromium.org/2831233004 Cr-Commit-Position: refs/heads/master@{#467742} [modify] https://crrev.com/62ffefbb0a2dcd9d0ff0a1a12288577c766af408/chrome/browser/predictors/resource_prefetch_predictor.cc [modify] https://crrev.com/62ffefbb0a2dcd9d0ff0a1a12288577c766af408/chrome/browser/predictors/resource_prefetch_predictor.proto [modify] https://crrev.com/62ffefbb0a2dcd9d0ff0a1a12288577c766af408/chrome/browser/predictors/resource_prefetch_predictor_tables.cc [modify] https://crrev.com/62ffefbb0a2dcd9d0ff0a1a12288577c766af408/chrome/browser/predictors/resource_prefetch_predictor_tables.h [modify] https://crrev.com/62ffefbb0a2dcd9d0ff0a1a12288577c766af408/chrome/browser/predictors/resource_prefetch_predictor_tables_unittest.cc [modify] https://crrev.com/62ffefbb0a2dcd9d0ff0a1a12288577c766af408/chrome/browser/predictors/resource_prefetch_predictor_test_util.cc [modify] https://crrev.com/62ffefbb0a2dcd9d0ff0a1a12288577c766af408/chrome/browser/predictors/resource_prefetch_predictor_test_util.h [modify] https://crrev.com/62ffefbb0a2dcd9d0ff0a1a12288577c766af408/chrome/browser/predictors/resource_prefetch_predictor_unittest.cc [modify] https://crrev.com/62ffefbb0a2dcd9d0ff0a1a12288577c766af408/components/precache/core/proto/precache.proto
This feature is cancelled. See https://crbug.com/739439
Comment 1 by alexilin@chromium.org
, Mar 7 2017