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

Issue 1968593002: PrerenderingLoader initial integration with PrerenderManager/PrerenderHandle (Closed)

Created:
4 years, 7 months ago by dougarnett
Modified:
4 years, 6 months ago
Base URL:
https://chromium.googlesource.com/chromium/src.git@master
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

PrerenderingLoader initial integration with PrerenderManager/PrerenderHandle and make it unit-testable. It proved challenging to write unittests wrt mocking PrerenderManager and/or PrerenderHandler and be able to create a stub PrerenderHandler without touching the prerender stack code so this CL takes the approach of adding an adapter between the Loader and prerender stack calls so that they can be intercepted for testing. BTW, PrerenderingLoader is actually the "BackgroundLoader" of go/chrome-background-loading BUG=601173 Committed: https://crrev.com/8ed74fd7c401a1ff9a5a57c270409e0f66f6d3ce Cr-Commit-Position: refs/heads/master@{#395485}

Patch Set 1 #

Total comments: 47

Patch Set 2 : Uploaded new unittest file that was missing and addressed some petewil feedback #

Total comments: 4

Patch Set 3 : Address some feedback (some remains for followup) #

Total comments: 10

Patch Set 4 : Split out Adapter into separate class/file and addressed some pasko feedback #

Patch Set 5 : Some fixes for trybot failure #

Patch Set 6 : Removed OnPrerenderCreatedMatchCompleteReplacement() override as the interface method looks to be d… #

Patch Set 7 : Add PrerenderingLoader initialization that was missing #

Patch Set 8 : An initialization order fix #

Total comments: 30

Patch Set 9 : Changes per pasko feedback #

Total comments: 43

Patch Set 10 : Address some gabadie feedback #

Total comments: 26

Patch Set 11 : Address fgorski feedback #

Patch Set 12 : Missing overrides caught by trybot #

Patch Set 13 : Add some Loader state_ unit test checks #

Patch Set 14 : Added use of Observer delegate to keep Loader event handling methods private (also merge to Coordin… #

Patch Set 15 : Fixe components unit tests from merge and update to scoped enumerator for status #

Patch Set 16 : uninlined ObserverDelegate impl #

Total comments: 59

Patch Set 17 : Address fgorski & pasko feedback (except for additional unit tests) #

Patch Set 18 : Added more unit tests for PrerenderingLoader #

Total comments: 14

Patch Set 19 : Moves PrerenderHandler Observer into the PrerenderAdapter and add support for 2nd callback after LO… #

Patch Set 20 : virtual => override nits #

Total comments: 30

Patch Set 21 : More updates for pasko #

Total comments: 11

Patch Set 22 : Tweaks per pasko feedback #

Unified diffs Side-by-side diffs Delta from patch set Stats (+787 lines, -60 lines) Patch
A chrome/browser/android/offline_pages/prerender_adapter.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 chunk +106 lines, -0 lines 0 comments Download
A chrome/browser/android/offline_pages/prerender_adapter.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 chunk +103 lines, -0 lines 0 comments Download
M chrome/browser/android/offline_pages/prerendering_loader.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 2 chunks +81 lines, -8 lines 0 comments Download
M chrome/browser/android/offline_pages/prerendering_loader.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 chunk +150 lines, -9 lines 0 comments Download
A chrome/browser/android/offline_pages/prerendering_loader_unittest.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 chunk +288 lines, -0 lines 0 comments Download
M chrome/browser/android/offline_pages/prerendering_offliner.h View 1 2 3 4 5 6 7 8 1 chunk +1 line, -1 line 0 comments Download
M chrome/browser/android/offline_pages/prerendering_offliner.cc View 1 2 3 4 5 6 7 8 3 chunks +8 lines, -9 lines 0 comments Download
M chrome/browser/android/offline_pages/prerendering_offliner_unittest.cc View 1 2 3 4 5 6 7 8 9 10 11 5 chunks +18 lines, -9 lines 0 comments Download
M chrome/chrome_browser.gypi View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 chunk +2 lines, -0 lines 0 comments Download
M chrome/chrome_tests_unit.gypi View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 chunk +1 line, -0 lines 0 comments Download
M components/offline_pages/background/offliner.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 chunk +9 lines, -8 lines 0 comments Download
M components/offline_pages/background/request_coordinator.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 3 chunks +4 lines, -4 lines 0 comments Download
M components/offline_pages/background/request_coordinator.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 3 chunks +11 lines, -10 lines 0 comments Download
M components/offline_pages/background/request_coordinator_unittest.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 3 chunks +5 lines, -2 lines 0 comments Download

Dependent Patchsets:

Messages

Total messages: 54 (11 generated)
dougarnett
4 years, 7 months ago (2016-05-10 19:34:03 UTC) #3
Pete Williamson
https://codereview.chromium.org/1968593002/diff/1/chrome/browser/android/offline_pages/prerendering_loader.cc File chrome/browser/android/offline_pages/prerendering_loader.cc (right): https://codereview.chromium.org/1968593002/diff/1/chrome/browser/android/offline_pages/prerendering_loader.cc#newcode21 chrome/browser/android/offline_pages/prerendering_loader.cc:21: adapter_.reset(new PrerenderingAdapter()); If we pass in the adapter as ...
4 years, 7 months ago (2016-05-10 20:00:27 UTC) #5
dougarnett
https://codereview.chromium.org/1968593002/diff/1/chrome/browser/android/offline_pages/prerendering_loader.cc File chrome/browser/android/offline_pages/prerendering_loader.cc (right): https://codereview.chromium.org/1968593002/diff/1/chrome/browser/android/offline_pages/prerendering_loader.cc#newcode21 chrome/browser/android/offline_pages/prerendering_loader.cc:21: adapter_.reset(new PrerenderingAdapter()); On 2016/05/10 20:00:27, Pete Williamson wrote: > ...
4 years, 7 months ago (2016-05-10 21:33:12 UTC) #6
fgorski
https://codereview.chromium.org/1968593002/diff/1/chrome/browser/android/offline_pages/prerendering_loader.cc File chrome/browser/android/offline_pages/prerendering_loader.cc (right): https://codereview.chromium.org/1968593002/diff/1/chrome/browser/android/offline_pages/prerendering_loader.cc#newcode21 chrome/browser/android/offline_pages/prerendering_loader.cc:21: adapter_.reset(new PrerenderingAdapter()); On 2016/05/10 20:00:27, Pete Williamson wrote: > ...
4 years, 7 months ago (2016-05-10 21:36:27 UTC) #7
Pete Williamson
Changes you have made so far look good, I'll take another look when the others ...
4 years, 7 months ago (2016-05-10 22:13:15 UTC) #8
dougarnett
Still pending on where adapter lives and if passed in (and it right approach). I ...
4 years, 7 months ago (2016-05-10 23:08:22 UTC) #9
Pete Williamson
LGTM with nits - After thinking about it, some of the formatting really does bother ...
4 years, 7 months ago (2016-05-10 23:19:55 UTC) #10
pasko
Great to see this! I am starting by looking at the use of the Prerender ...
4 years, 7 months ago (2016-05-11 12:18:34 UTC) #11
dougarnett
https://codereview.chromium.org/1968593002/diff/40001/chrome/browser/android/offline_pages/prerendering_loader.cc File chrome/browser/android/offline_pages/prerendering_loader.cc (right): https://codereview.chromium.org/1968593002/diff/40001/chrome/browser/android/offline_pages/prerendering_loader.cc#newcode63 chrome/browser/android/offline_pages/prerendering_loader.cc:63: // TODO(dougarnett): Create separate namespace from default (to better ...
4 years, 7 months ago (2016-05-11 21:10:15 UTC) #12
dougarnett
On 2016/05/10 23:19:55, Pete Williamson wrote: > LGTM with nits - After thinking about it, ...
4 years, 7 months ago (2016-05-11 21:12:01 UTC) #13
dougarnett
On 2016/05/11 21:10:15, dougarnett wrote: > https://codereview.chromium.org/1968593002/diff/40001/chrome/browser/android/offline_pages/prerendering_loader.cc > File chrome/browser/android/offline_pages/prerendering_loader.cc (right): > > https://codereview.chromium.org/1968593002/diff/40001/chrome/browser/android/offline_pages/prerendering_loader.cc#newcode63 > ...
4 years, 7 months ago (2016-05-11 21:13:19 UTC) #14
pasko
https://codereview.chromium.org/1968593002/diff/140001/chrome/browser/android/offline_pages/prerender_adapter.cc File chrome/browser/android/offline_pages/prerender_adapter.cc (right): https://codereview.chromium.org/1968593002/diff/140001/chrome/browser/android/offline_pages/prerender_adapter.cc#newcode84 chrome/browser/android/offline_pages/prerender_adapter.cc:84: active_handle_.reset(nullptr); PrerenderHandle destructor has this comment: // Before calling ...
4 years, 7 months ago (2016-05-12 19:10:07 UTC) #15
dougarnett
https://codereview.chromium.org/1968593002/diff/140001/chrome/browser/android/offline_pages/prerender_adapter.cc File chrome/browser/android/offline_pages/prerender_adapter.cc (right): https://codereview.chromium.org/1968593002/diff/140001/chrome/browser/android/offline_pages/prerender_adapter.cc#newcode84 chrome/browser/android/offline_pages/prerender_adapter.cc:84: active_handle_.reset(nullptr); On 2016/05/12 19:10:07, pasko wrote: > PrerenderHandle destructor ...
4 years, 7 months ago (2016-05-13 00:00:25 UTC) #16
gabadie
Fly by comments. =) https://codereview.chromium.org/1968593002/diff/160001/chrome/browser/android/offline_pages/prerender_adapter.cc File chrome/browser/android/offline_pages/prerender_adapter.cc (right): https://codereview.chromium.org/1968593002/diff/160001/chrome/browser/android/offline_pages/prerender_adapter.cc#newcode34 chrome/browser/android/offline_pages/prerender_adapter.cc:34: DCHECK(!IsActive()); DCHECK(CanPrerender()) ? https://codereview.chromium.org/1968593002/diff/160001/chrome/browser/android/offline_pages/prerender_adapter.cc#newcode77 chrome/browser/android/offline_pages/prerender_adapter.cc:77: ...
4 years, 7 months ago (2016-05-13 07:55:38 UTC) #18
dougarnett
Guillaume, thanks for the review! I did not understand your comments about anonymous namespace though ...
4 years, 7 months ago (2016-05-13 16:49:46 UTC) #19
dougarnett
https://codereview.chromium.org/1968593002/diff/160001/components/offline_pages/background/offliner.h File components/offline_pages/background/offliner.h (right): https://codereview.chromium.org/1968593002/diff/160001/components/offline_pages/background/offliner.h#newcode24 components/offline_pages/background/offliner.h:24: FAILED_CONSIDER_RETRY, // Failed in a way that is subject ...
4 years, 7 months ago (2016-05-13 17:03:59 UTC) #20
fgorski
https://codereview.chromium.org/1968593002/diff/180001/chrome/browser/android/offline_pages/prerender_adapter.cc File chrome/browser/android/offline_pages/prerender_adapter.cc (right): https://codereview.chromium.org/1968593002/diff/180001/chrome/browser/android/offline_pages/prerender_adapter.cc#newcode10 chrome/browser/android/offline_pages/prerender_adapter.cc:10: #include "chrome/browser/prerender/prerender_manager.h" already included from header, but if you ...
4 years, 7 months ago (2016-05-13 17:39:58 UTC) #21
dougarnett
https://codereview.chromium.org/1968593002/diff/180001/chrome/browser/android/offline_pages/prerender_adapter.cc File chrome/browser/android/offline_pages/prerender_adapter.cc (right): https://codereview.chromium.org/1968593002/diff/180001/chrome/browser/android/offline_pages/prerender_adapter.cc#newcode10 chrome/browser/android/offline_pages/prerender_adapter.cc:10: #include "chrome/browser/prerender/prerender_manager.h" On 2016/05/13 17:39:58, fgorski wrote: > already ...
4 years, 7 months ago (2016-05-13 20:58:32 UTC) #22
dougarnett
https://codereview.chromium.org/1968593002/diff/160001/chrome/browser/android/offline_pages/prerendering_loader.h File chrome/browser/android/offline_pages/prerendering_loader.h (right): https://codereview.chromium.org/1968593002/diff/160001/chrome/browser/android/offline_pages/prerendering_loader.h#newcode72 chrome/browser/android/offline_pages/prerendering_loader.h:72: void OnPrerenderStop(prerender::PrerenderHandle* handle) override; On 2016/05/13 16:49:46, dougarnett wrote: ...
4 years, 7 months ago (2016-05-13 23:48:48 UTC) #23
dougarnett
PTAL - added delegate observer instead of inheritance to hide PrerenderHandler::Observer methods at Loader's public ...
4 years, 7 months ago (2016-05-16 20:35:00 UTC) #24
dougarnett
Went back through the comments and responded to ones missing responses or needing some update. ...
4 years, 7 months ago (2016-05-16 23:51:39 UTC) #25
fgorski
Looks better and better. Notice I left a couple of comments in Patch 10. https://codereview.chromium.org/1968593002/diff/180001/chrome/browser/android/offline_pages/prerender_adapter.h ...
4 years, 7 months ago (2016-05-17 05:09:52 UTC) #26
pasko
apologies for long response times, we had a long weekend in France. https://codereview.chromium.org/1968593002/diff/140001/chrome/browser/android/offline_pages/prerender_adapter.cc File chrome/browser/android/offline_pages/prerender_adapter.cc ...
4 years, 7 months ago (2016-05-17 15:34:21 UTC) #27
fgorski
Responded to Egor's comments. https://codereview.chromium.org/1968593002/diff/300001/chrome/browser/android/offline_pages/prerender_adapter.cc File chrome/browser/android/offline_pages/prerender_adapter.cc (right): https://codereview.chromium.org/1968593002/diff/300001/chrome/browser/android/offline_pages/prerender_adapter.cc#newcode53 chrome/browser/android/offline_pages/prerender_adapter.cc:53: DCHECK(IsActive()); On 2016/05/17 15:34:20, pasko ...
4 years, 7 months ago (2016-05-17 15:54:54 UTC) #28
pasko
response to fgorski and some thoughts about toplevel design https://codereview.chromium.org/1968593002/diff/300001/chrome/browser/android/offline_pages/prerender_adapter.cc File chrome/browser/android/offline_pages/prerender_adapter.cc (right): https://codereview.chromium.org/1968593002/diff/300001/chrome/browser/android/offline_pages/prerender_adapter.cc#newcode53 chrome/browser/android/offline_pages/prerender_adapter.cc:53: ...
4 years, 7 months ago (2016-05-17 16:26:32 UTC) #29
fgorski
https://codereview.chromium.org/1968593002/diff/300001/chrome/browser/android/offline_pages/prerender_adapter.cc File chrome/browser/android/offline_pages/prerender_adapter.cc (right): https://codereview.chromium.org/1968593002/diff/300001/chrome/browser/android/offline_pages/prerender_adapter.cc#newcode53 chrome/browser/android/offline_pages/prerender_adapter.cc:53: DCHECK(IsActive()); On 2016/05/17 16:26:31, pasko wrote: > On 2016/05/17 ...
4 years, 7 months ago (2016-05-17 17:06:19 UTC) #30
dougarnett
Addressed today's feedback and added more unit tests. https://codereview.chromium.org/1968593002/diff/160001/chrome/browser/android/offline_pages/prerendering_loader.cc File chrome/browser/android/offline_pages/prerendering_loader.cc (right): https://codereview.chromium.org/1968593002/diff/160001/chrome/browser/android/offline_pages/prerendering_loader.cc#newcode113 chrome/browser/android/offline_pages/prerendering_loader.cc:113: PrerenderingLoader::GetSessionStorageNamespace(content::WebContents* ...
4 years, 7 months ago (2016-05-18 00:37:48 UTC) #31
pasko
looks cleaner, thank you https://codereview.chromium.org/1968593002/diff/340001/chrome/browser/android/offline_pages/prerendering_loader.cc File chrome/browser/android/offline_pages/prerendering_loader.cc (right): https://codereview.chromium.org/1968593002/diff/340001/chrome/browser/android/offline_pages/prerendering_loader.cc#newcode22 chrome/browser/android/offline_pages/prerendering_loader.cc:22: adapter_(new PrerenderAdapter()) {} If you ...
4 years, 7 months ago (2016-05-18 11:47:26 UTC) #32
fgorski
lgtm. Really nice. https://codereview.chromium.org/1968593002/diff/340001/chrome/browser/android/offline_pages/prerendering_loader.cc File chrome/browser/android/offline_pages/prerendering_loader.cc (right): https://codereview.chromium.org/1968593002/diff/340001/chrome/browser/android/offline_pages/prerendering_loader.cc#newcode22 chrome/browser/android/offline_pages/prerendering_loader.cc:22: adapter_(new PrerenderAdapter()) {} On 2016/05/18 11:47:26, ...
4 years, 7 months ago (2016-05-19 04:29:39 UTC) #33
dougarnett
https://codereview.chromium.org/1968593002/diff/340001/chrome/browser/android/offline_pages/prerendering_loader.cc File chrome/browser/android/offline_pages/prerendering_loader.cc (right): https://codereview.chromium.org/1968593002/diff/340001/chrome/browser/android/offline_pages/prerendering_loader.cc#newcode43 chrome/browser/android/offline_pages/prerendering_loader.cc:43: if (!observer_.get()) On 2016/05/18 11:47:26, pasko wrote: > It ...
4 years, 7 months ago (2016-05-20 00:27:24 UTC) #34
commit-bot: I haz the power
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1968593002/380001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1968593002/380001
4 years, 7 months ago (2016-05-20 15:09:38 UTC) #36
commit-bot: I haz the power
Dry run: This issue passed the CQ dry run.
4 years, 7 months ago (2016-05-20 15:38:50 UTC) #38
pasko
https://codereview.chromium.org/1968593002/diff/380001/chrome/browser/android/offline_pages/prerender_adapter.h File chrome/browser/android/offline_pages/prerender_adapter.h (right): https://codereview.chromium.org/1968593002/diff/380001/chrome/browser/android/offline_pages/prerender_adapter.h#newcode10 chrome/browser/android/offline_pages/prerender_adapter.h:10: #include "chrome/browser/prerender/prerender_handle.h" not needed https://codereview.chromium.org/1968593002/diff/380001/chrome/browser/android/offline_pages/prerender_adapter.h#newcode42 chrome/browser/android/offline_pages/prerender_adapter.h:42: // Signals that ...
4 years, 7 months ago (2016-05-20 19:04:53 UTC) #39
dougarnett
https://codereview.chromium.org/1968593002/diff/380001/chrome/browser/android/offline_pages/prerender_adapter.h File chrome/browser/android/offline_pages/prerender_adapter.h (right): https://codereview.chromium.org/1968593002/diff/380001/chrome/browser/android/offline_pages/prerender_adapter.h#newcode10 chrome/browser/android/offline_pages/prerender_adapter.h:10: #include "chrome/browser/prerender/prerender_handle.h" On 2016/05/20 19:04:53, pasko wrote: > not ...
4 years, 7 months ago (2016-05-20 22:21:12 UTC) #40
pasko
prerender_adapter and prerendering_loader lgtm (though please answer my remaining non-critical questions) thank you, Doug! https://codereview.chromium.org/1968593002/diff/380001/chrome/browser/android/offline_pages/prerender_adapter.h ...
4 years, 7 months ago (2016-05-23 20:05:41 UTC) #41
dougarnett
Thanks for all the great feedback Egor! https://codereview.chromium.org/1968593002/diff/380001/chrome/browser/android/offline_pages/prerendering_loader.cc File chrome/browser/android/offline_pages/prerendering_loader.cc (right): https://codereview.chromium.org/1968593002/diff/380001/chrome/browser/android/offline_pages/prerendering_loader.cc#newcode113 chrome/browser/android/offline_pages/prerendering_loader.cc:113: void PrerenderingLoader::ReportLoaded() ...
4 years, 7 months ago (2016-05-23 21:43:54 UTC) #42
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1968593002/420001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1968593002/420001
4 years, 7 months ago (2016-05-23 22:30:13 UTC) #45
commit-bot: I haz the power
Committed patchset #22 (id:420001)
4 years, 7 months ago (2016-05-24 00:39:34 UTC) #47
commit-bot: I haz the power
Patchset 22 (id:??) landed as https://crrev.com/8ed74fd7c401a1ff9a5a57c270409e0f66f6d3ce Cr-Commit-Position: refs/heads/master@{#395485}
4 years, 7 months ago (2016-05-24 00:40:45 UTC) #49
Michael van Ouwerkerk
A revert of this CL (patchset #22 id:420001) has been created in https://codereview.chromium.org/2011913002/ by mvanouwerkerk@chromium.org. ...
4 years, 6 months ago (2016-05-25 13:02:22 UTC) #50
pasko
https://codereview.chromium.org/1968593002/diff/400001/chrome/browser/android/offline_pages/prerendering_loader.h File chrome/browser/android/offline_pages/prerendering_loader.h (right): https://codereview.chromium.org/1968593002/diff/400001/chrome/browser/android/offline_pages/prerendering_loader.h#newcode49 chrome/browser/android/offline_pages/prerendering_loader.h:49: virtual bool LoadPage(const GURL& url, const LoadPageCallback& callback); On ...
4 years, 6 months ago (2016-05-26 11:00:29 UTC) #51
dougarnett
Oh, just noticed I had this draft comment laying around ... https://codereview.chromium.org/1968593002/diff/400001/chrome/browser/android/offline_pages/prerendering_loader.h File chrome/browser/android/offline_pages/prerendering_loader.h (right): ...
4 years, 6 months ago (2016-06-01 15:05:48 UTC) #53
pasko
4 years, 6 months ago (2016-06-01 15:09:06 UTC) #54
Message was sent while issue was closed.
https://codereview.chromium.org/1968593002/diff/400001/chrome/browser/android...
File chrome/browser/android/offline_pages/prerendering_loader.h (right):

https://codereview.chromium.org/1968593002/diff/400001/chrome/browser/android...
chrome/browser/android/offline_pages/prerendering_loader.h:49: virtual bool
LoadPage(const GURL& url, const LoadPageCallback& callback);
On 2016/06/01 15:05:48, dougarnett wrote:
> On 2016/05/26 11:00:28, pasko wrote:
> > On 2016/05/23 21:43:54, dougarnett wrote:
> > > On 2016/05/23 20:05:41, pasko wrote:
> > > > A question related to adding virtual methods here.
> > > > 
> > > > Does it mean that there is a plan to inherit from this class (in which
> case
> > I
> > > am
> > > > worried), or this area of code has a convention to default to virtual
> > methods
> > > > (in which case I am less worried, but still those ~1.5MiB of relocations
> to
> > > > perform on every startup, and a policy like this would not be helpful to
> > > shrink
> > > > this amount)?
> > > 
> > > The virtual methods here are to be able to mock it for testing.
> Specifically,
> > > there is a MockPrerenderingLoader in prerendering_offliner_unittests.cc
> > 
> > Makes sense, I did not know the mock already exists. So the only method not
> > mocked out is CanPrerender(). Is it a TODO?
> > 
> > Can the layers above be tested by reusing the TestAdapter or it is more
> > difficult?
> 
> Yes, I do need to mock CanPrerender as well, thanks! 
> 
> I think it is good idea to revisit merging Loader and Offliner and writing
> Offliner tests that use Loader and just mock the Adapter would be good way to
> start a merge. The Adapter has turned out to be a bit more comprehensive layer
> than when I first wrote the shells of Offliner and Loader so seems like it
would
> work.

nice, +1 here, thanks

Powered by Google App Engine
This is Rietveld 408576698