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

Issue 136203009: Support auto-reload on errors. (Closed)

Created:
6 years, 10 months ago by Elly Fong-Jones
Modified:
6 years, 9 months ago
CC:
chromium-reviews, cbentzel+watch_chromium.org
Base URL:
https://chromium.googlesource.com/chromium/src.git@lkgr
Visibility:
Public.

Description

When the auto-reload experiment is enabled ("enable-offline-auto-reload"), if a browser tab loads an error page, and the error seems transient, the renderer process starts attempting to automatically reload the tab's contents with exponential backoff. To NetErrorHelperCore, add a new delegate method: ReloadPage(), which kicks off a reload of the page in the observed frame. Add a new class MockableOneShotTimer which provides a mockable interface to the standard base::OneShotTimer and is used in NetErrorHelperCore for the autoreload timer. Add an implementation of MockableOneShotTimer. Add new member variables 'auto_reload_count_', 'auto_reload_pending_', and 'auto_reload_enabled_' to NetErrorHelperCore. The first tracks how many attempts we have made to auto-reload; the second tracks whether we should be attempting auto-reloads (i.e., the last loaded page was an error, and the user did not hit 'Stop' since that load); the last controls whether autoreload is enabled or not and defaults to false. The autoreload logic itself exists in NetErrorHelperCore::{AutoReload,MaybeStartAutoReloadTimer,StartAutoReloadTimer}. StartAutoReloadTimer sets a timer (auto_reload_timer_) which calls AutoReload when it fires, and AutoReload starts a fetch of the error URL. The timer is started with a successively larger interval at each successive call to StartAutoReload() to implement exponential backoff. The auto-reload count is reset (thus restarting the backoff) when we get a non-reloadable error like an ERR_ABORTED or when a non-error page loads successfully. Any pending auto-reload attempts stop (but the timer is not reset) if the user manually presses 'stop' or a cross-process navigation starts (handled in NetErrorHelperCore::OnStop). MaybeStartAutoReloadTimer is the real entry point for auto-reload; it starts auto-reload if the last load was a reloadable error page, the browser is online, and the user hasn't stopped the error page. Also, extend the existing hook in ChromeContentRendererClient::ShouldSuppressErrorPage to call NetErrorHelper::ShouldSuppressErrorPage, which plumbs the request through to NetErrorHelperCore. Right now, if there are many tabs displaying error pages, the code in NetworkStateChange() can cause a "reload storm", in which dozens or even hundreds of auto-reload attempts start at the same time, possibly saturating the network. Our current design for resolving this involves a ResourceThrottle in the browser process to throttle individual tab loading, but design work is still ongoing. There are unit tests in NetErrorHelperCoreTest covering the various behaviors of auto-reload, and helper code and a mock MockableOneShotTimer implementation added to NetErrorHelperCoreTest. There is a browser test in ErrorPageAutoReloadTest. TODO: solve the "reload storm" issue. TEST=unit,browser,trybot BUG=308233 Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=257254

Patch Set 1 #

Total comments: 23

Patch Set 2 : Fixes #

Total comments: 90

Patch Set 3 : Update #

Patch Set 4 : Add browser test. #

Patch Set 5 : Clean up nits #

Total comments: 38

Patch Set 6 : Add UMA #

Total comments: 16

Patch Set 7 : Add experiment #

Total comments: 48

Patch Set 8 : More fixes #

Patch Set 9 : More fixes #

Total comments: 58

Patch Set 10 : More fixes #

Total comments: 26

Patch Set 11 : Fixes #

Patch Set 12 : Add MockableOneShotTimer tests. #

Total comments: 32

Patch Set 13 : Fixes #

Total comments: 10

Patch Set 14 : Rebase onto link doctor changes #

Patch Set 15 : Handle comments on rev 13 #

Patch Set 16 : placate clang #

Total comments: 32

Patch Set 17 : Pacify clang part 2 #

Patch Set 18 : More testing. #

Total comments: 2

Patch Set 19 : More unit tests! #

Patch Set 20 : Fix CCRC unit test crash #

Total comments: 1

Patch Set 21 : Handle another edge case #

Patch Set 22 : Rebase? #

Total comments: 2

Patch Set 23 : DISALLOW_COPY_AND_ASSIGN NetErrorHelper #

Total comments: 13

Patch Set 24 : Last round of fixes #

Patch Set 25 : Fix bogus include #

Total comments: 1

Patch Set 26 : MockableOneShotTimer -> base::Timer (now mockable!) #

Unified diffs Side-by-side diffs Delta from patch set Stats (+698 lines, -11 lines) Patch
M chrome/app/generated_resources.grd View 1 chunk +1 line, -1 line 0 comments Download
M chrome/browser/chrome_content_browser_client.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 1 chunk +1 line, -0 lines 0 comments Download
M chrome/browser/errorpage_browsertest.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 5 chunks +129 lines, -0 lines 0 comments Download
M chrome/renderer/chrome_content_renderer_client.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 1 chunk +11 lines, -0 lines 0 comments Download
M chrome/renderer/net/net_error_helper.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 6 chunks +13 lines, -0 lines 0 comments Download
M chrome/renderer/net/net_error_helper.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 5 chunks +22 lines, -0 lines 0 comments Download
M chrome/renderer/net/net_error_helper_core.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 6 chunks +46 lines, -0 lines 0 comments Download
M chrome/renderer/net/net_error_helper_core.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 8 chunks +154 lines, -8 lines 0 comments Download
M chrome/renderer/net/net_error_helper_core_unittest.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 8 chunks +316 lines, -2 lines 0 comments Download
M content/public/renderer/render_process_observer.h View 1 1 chunk +3 lines, -0 lines 0 comments Download
M content/renderer/render_thread_impl.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 1 chunk +2 lines, -0 lines 0 comments Download

Messages

Total messages: 50 (0 generated)
Elly Fong-Jones
PTAL? still a draft :)
6 years, 10 months ago (2014-01-30 19:34:53 UTC) #1
Randy Smith (Not in Mondays)
The right bug number is 329618. The other behavior issue I'm a bit worried about ...
6 years, 10 months ago (2014-01-30 20:14:47 UTC) #2
mmenke
Quick comments https://codereview.chromium.org/136203009/diff/1/chrome/renderer/net/net_error_helper_core.cc File chrome/renderer/net/net_error_helper_core.cc (right): https://codereview.chromium.org/136203009/diff/1/chrome/renderer/net/net_error_helper_core.cc#newcode225 chrome/renderer/net/net_error_helper_core.cc:225: if (IsReloadableError(error)) Don't want to auto reload ...
6 years, 10 months ago (2014-01-30 20:45:02 UTC) #3
mmenke
https://codereview.chromium.org/136203009/diff/1/chrome/renderer/net/net_error_helper_core.cc File chrome/renderer/net/net_error_helper_core.cc (right): https://codereview.chromium.org/136203009/diff/1/chrome/renderer/net/net_error_helper_core.cc#newcode31 chrome/renderer/net/net_error_helper_core.cc:31: return error.reason != net::ERR_ABORTED; On 2014/01/30 20:14:47, rdsmith wrote: ...
6 years, 10 months ago (2014-01-30 20:47:31 UTC) #4
Randy Smith (Not in Mondays)
https://codereview.chromium.org/136203009/diff/1/chrome/renderer/net/net_error_helper_core.cc File chrome/renderer/net/net_error_helper_core.cc (right): https://codereview.chromium.org/136203009/diff/1/chrome/renderer/net/net_error_helper_core.cc#newcode31 chrome/renderer/net/net_error_helper_core.cc:31: return error.reason != net::ERR_ABORTED; On 2014/01/30 20:47:31, mmenke wrote: ...
6 years, 10 months ago (2014-01-30 20:57:30 UTC) #5
mmenke
On 2014/01/30 20:57:30, rdsmith wrote: > https://codereview.chromium.org/136203009/diff/1/chrome/renderer/net/net_error_helper_core.cc > File chrome/renderer/net/net_error_helper_core.cc (right): > > https://codereview.chromium.org/136203009/diff/1/chrome/renderer/net/net_error_helper_core.cc#newcode31 > ...
6 years, 10 months ago (2014-01-30 22:26:19 UTC) #6
Randy Smith (Not in Mondays)
On 2014/01/30 22:26:19, mmenke wrote: > On 2014/01/30 20:57:30, rdsmith wrote: > > > https://codereview.chromium.org/136203009/diff/1/chrome/renderer/net/net_error_helper_core.cc ...
6 years, 10 months ago (2014-01-30 22:28:21 UTC) #7
mmenke
On 2014/01/30 22:28:21, rdsmith wrote: > On 2014/01/30 22:26:19, mmenke wrote: > > On 2014/01/30 ...
6 years, 10 months ago (2014-01-30 22:30:20 UTC) #8
Randy Smith (Not in Mondays)
Also: What's the POST plan?
6 years, 10 months ago (2014-02-02 22:12:33 UTC) #9
Elly Fong-Jones
https://codereview.chromium.org/136203009/diff/1/chrome/renderer/net/net_error_helper.cc File chrome/renderer/net/net_error_helper.cc (right): https://codereview.chromium.org/136203009/diff/1/chrome/renderer/net/net_error_helper.cc#newcode216 chrome/renderer/net/net_error_helper.cc:216: // MockableOneShotTimer implementation in terms of base::OneShotTimer On 2014/01/30 ...
6 years, 10 months ago (2014-02-05 21:12:36 UTC) #10
mmenke
A lot of comments, but all very nitty. I'm happy with the overall architecture. https://codereview.chromium.org/136203009/diff/40001/chrome/renderer/chrome_content_renderer_client.cc ...
6 years, 10 months ago (2014-02-05 23:31:42 UTC) #11
Randy Smith (Not in Mondays)
High level comments: + Update the bug number as per c#2 + I'd like to ...
6 years, 10 months ago (2014-02-06 16:47:15 UTC) #12
Elly Fong-Jones
https://codereview.chromium.org/136203009/diff/40001/chrome/renderer/chrome_content_renderer_client.cc File chrome/renderer/chrome_content_renderer_client.cc (right): https://codereview.chromium.org/136203009/diff/40001/chrome/renderer/chrome_content_renderer_client.cc#newcode355 chrome/renderer/chrome_content_renderer_client.cc:355: command_line->HasSwitch(switches::kEnableOfflineAutoReload); On 2014/02/05 23:31:43, mmenke wrote: > Don't you ...
6 years, 10 months ago (2014-02-10 21:42:06 UTC) #13
Randy Smith (Not in Mondays)
Initial comments on the new test in errorpage_browsertest.cc. https://codereview.chromium.org/136203009/diff/220001/base/timer/timer.h File base/timer/timer.h (right): https://codereview.chromium.org/136203009/diff/220001/base/timer/timer.h#newcode85 base/timer/timer.h:85: virtual ...
6 years, 10 months ago (2014-02-13 18:47:39 UTC) #14
mmenke
Quick comments, I'll get to the rest tomorrow, or later today. https://codereview.chromium.org/136203009/diff/220001/base/timer/timer.h File base/timer/timer.h (right): ...
6 years, 10 months ago (2014-02-13 20:42:17 UTC) #15
mmenke
https://codereview.chromium.org/136203009/diff/290001/chrome/renderer/net/mockable_one_shot_timer.cc File chrome/renderer/net/mockable_one_shot_timer.cc (right): https://codereview.chromium.org/136203009/diff/290001/chrome/renderer/net/mockable_one_shot_timer.cc#newcode4 chrome/renderer/net/mockable_one_shot_timer.cc:4: // MockableOneShotTimer implementation in terms of base::OneShotTimer nit: Comments ...
6 years, 10 months ago (2014-02-14 17:56:10 UTC) #16
Elly Fong-Jones
I *think* I got everything. PTAL? https://codereview.chromium.org/136203009/diff/220001/base/timer/timer.h File base/timer/timer.h (right): https://codereview.chromium.org/136203009/diff/220001/base/timer/timer.h#newcode85 base/timer/timer.h:85: virtual bool IsRunning() ...
6 years, 10 months ago (2014-02-25 19:19:51 UTC) #17
mmenke
https://codereview.chromium.org/136203009/diff/360001/chrome/browser/errorpage_browsertest.cc File chrome/browser/errorpage_browsertest.cc (right): https://codereview.chromium.org/136203009/diff/360001/chrome/browser/errorpage_browsertest.cc#newcode45 chrome/browser/errorpage_browsertest.cc:45: class FailFirstNRequestsProtocolHandler This should be in an anonymous namespace ...
6 years, 10 months ago (2014-02-25 22:09:52 UTC) #18
Randy Smith (Not in Mondays)
The UMA looks good; thanks for adding it. As noted above, could you make the ...
6 years, 10 months ago (2014-02-26 00:07:37 UTC) #19
Elly Fong-Jones
https://codereview.chromium.org/136203009/diff/360001/chrome/browser/about_flags.cc File chrome/browser/about_flags.cc (right): https://codereview.chromium.org/136203009/diff/360001/chrome/browser/about_flags.cc#newcode1989 chrome/browser/about_flags.cc:1989: "enable-offline-auto-reload", On 2014/02/26 00:07:38, rdsmith wrote: > This is ...
6 years, 9 months ago (2014-03-03 19:31:06 UTC) #20
mmenke
A bunch of nits. My only real concern is fragility in the logic about when ...
6 years, 9 months ago (2014-03-04 17:26:25 UTC) #21
Elly Fong-Jones
https://codereview.chromium.org/136203009/diff/400001/chrome/browser/errorpage_browsertest.cc File chrome/browser/errorpage_browsertest.cc (right): https://codereview.chromium.org/136203009/diff/400001/chrome/browser/errorpage_browsertest.cc#newcode48 chrome/browser/errorpage_browsertest.cc:48: using net::TestJobInterceptor; On 2014/03/04 17:26:25, mmenke wrote: > Not ...
6 years, 9 months ago (2014-03-06 21:48:36 UTC) #22
mmenke
Elly: Just a heads up that I've landed my Link Doctor CL (For the second ...
6 years, 9 months ago (2014-03-07 15:27:41 UTC) #23
mmenke
I expect this will be the last round (May give some more nits, but expect ...
6 years, 9 months ago (2014-03-07 15:46:16 UTC) #24
mmenke
https://codereview.chromium.org/136203009/diff/420001/chrome/renderer/chrome_content_renderer_client.cc File chrome/renderer/chrome_content_renderer_client.cc (right): https://codereview.chromium.org/136203009/diff/420001/chrome/renderer/chrome_content_renderer_client.cc#newcode991 chrome/renderer/chrome_content_renderer_client.cc:991: if (NetErrorHelper::Get(render_frame)->ShouldSuppressErrorPage(url)) Need to pass in the render_frame, and ...
6 years, 9 months ago (2014-03-07 15:56:43 UTC) #25
Elly Fong-Jones
https://codereview.chromium.org/136203009/diff/420001/chrome/renderer/chrome_content_renderer_client.cc File chrome/renderer/chrome_content_renderer_client.cc (right): https://codereview.chromium.org/136203009/diff/420001/chrome/renderer/chrome_content_renderer_client.cc#newcode991 chrome/renderer/chrome_content_renderer_client.cc:991: if (NetErrorHelper::Get(render_frame)->ShouldSuppressErrorPage(url)) On 2014/03/07 15:56:44, mmenke wrote: > Need ...
6 years, 9 months ago (2014-03-10 19:46:51 UTC) #26
mmenke
https://codereview.chromium.org/136203009/diff/420001/chrome/renderer/chrome_content_renderer_client.cc File chrome/renderer/chrome_content_renderer_client.cc (right): https://codereview.chromium.org/136203009/diff/420001/chrome/renderer/chrome_content_renderer_client.cc#newcode991 chrome/renderer/chrome_content_renderer_client.cc:991: if (NetErrorHelper::Get(render_frame)->ShouldSuppressErrorPage(url)) On 2014/03/10 19:46:51, Elly Jones wrote: > ...
6 years, 9 months ago (2014-03-10 19:49:56 UTC) #27
Elly Fong-Jones
https://codereview.chromium.org/136203009/diff/420001/chrome/renderer/chrome_content_renderer_client.cc File chrome/renderer/chrome_content_renderer_client.cc (right): https://codereview.chromium.org/136203009/diff/420001/chrome/renderer/chrome_content_renderer_client.cc#newcode991 chrome/renderer/chrome_content_renderer_client.cc:991: if (NetErrorHelper::Get(render_frame)->ShouldSuppressErrorPage(url)) On 2014/03/10 19:49:57, mmenke wrote: > On ...
6 years, 9 months ago (2014-03-11 17:06:16 UTC) #28
mmenke
https://codereview.chromium.org/136203009/diff/460001/chrome/renderer/chrome_content_renderer_client.cc File chrome/renderer/chrome_content_renderer_client.cc (right): https://codereview.chromium.org/136203009/diff/460001/chrome/renderer/chrome_content_renderer_client.cc#newcode993 chrome/renderer/chrome_content_renderer_client.cc:993: blink::WebFrame* web_frame = render_frame->GetWebFrame(); optional: May want to get ...
6 years, 9 months ago (2014-03-11 20:07:54 UTC) #29
mmenke
Sorry for all the rounds of review, but I still feel this isn't quite ready. ...
6 years, 9 months ago (2014-03-11 20:08:38 UTC) #30
mmenke
https://codereview.chromium.org/136203009/diff/460001/chrome/renderer/net/mockable_one_shot_timer_unittest.cc File chrome/renderer/net/mockable_one_shot_timer_unittest.cc (right): https://codereview.chromium.org/136203009/diff/460001/chrome/renderer/net/mockable_one_shot_timer_unittest.cc#newcode29 chrome/renderer/net/mockable_one_shot_timer_unittest.cc:29: class Incrementer { On 2014/03/11 20:07:54, mmenke wrote: > ...
6 years, 9 months ago (2014-03-12 13:19:41 UTC) #31
Elly Fong-Jones
https://codereview.chromium.org/136203009/diff/460001/chrome/renderer/chrome_content_renderer_client.cc File chrome/renderer/chrome_content_renderer_client.cc (right): https://codereview.chromium.org/136203009/diff/460001/chrome/renderer/chrome_content_renderer_client.cc#newcode993 chrome/renderer/chrome_content_renderer_client.cc:993: blink::WebFrame* web_frame = render_frame->GetWebFrame(); On 2014/03/11 20:07:54, mmenke wrote: ...
6 years, 9 months ago (2014-03-12 15:08:57 UTC) #32
mmenke
Quick comments. I'm happy with the MockableOneShotTimer tests. I'll review the rest once you've done ...
6 years, 9 months ago (2014-03-12 16:03:45 UTC) #33
Elly Fong-Jones
https://codereview.chromium.org/136203009/diff/480001/chrome/renderer/net/mockable_one_shot_timer_unittest.cc File chrome/renderer/net/mockable_one_shot_timer_unittest.cc (right): https://codereview.chromium.org/136203009/diff/480001/chrome/renderer/net/mockable_one_shot_timer_unittest.cc#newcode1 chrome/renderer/net/mockable_one_shot_timer_unittest.cc:1: // Copyright 2013 The Chromium Authors. All rights reserved. ...
6 years, 9 months ago (2014-03-12 16:58:46 UTC) #34
mmenke
Still need to go over the tests, but I think we're getting there. https://codereview.chromium.org/136203009/diff/540001/chrome/browser/errorpage_browsertest.cc File ...
6 years, 9 months ago (2014-03-12 19:02:41 UTC) #35
Elly Fong-Jones
https://codereview.chromium.org/136203009/diff/540001/chrome/browser/errorpage_browsertest.cc File chrome/browser/errorpage_browsertest.cc (right): https://codereview.chromium.org/136203009/diff/540001/chrome/browser/errorpage_browsertest.cc#newcode147 chrome/browser/errorpage_browsertest.cc:147: void AddUrlHandler() { On 2014/03/12 19:02:42, mmenke wrote: > ...
6 years, 9 months ago (2014-03-12 20:10:52 UTC) #36
mmenke
Yay! More corner cases! https://codereview.chromium.org/136203009/diff/580001/chrome/renderer/net/net_error_helper_core.cc File chrome/renderer/net/net_error_helper_core.cc (right): https://codereview.chromium.org/136203009/diff/580001/chrome/renderer/net/net_error_helper_core.cc#newcode612 chrome/renderer/net/net_error_helper_core.cc:612: MaybeStartAutoReloadTimer(); Hrm...We could have either ...
6 years, 9 months ago (2014-03-12 20:27:16 UTC) #37
Elly Fong-Jones
https://codereview.chromium.org/136203009/diff/580001/chrome/renderer/net/net_error_helper_core.cc File chrome/renderer/net/net_error_helper_core.cc (right): https://codereview.chromium.org/136203009/diff/580001/chrome/renderer/net/net_error_helper_core.cc#newcode612 chrome/renderer/net/net_error_helper_core.cc:612: MaybeStartAutoReloadTimer(); On 2014/03/12 20:27:17, mmenke wrote: > Hrm...We could ...
6 years, 9 months ago (2014-03-12 21:27:45 UTC) #38
mmenke
Won't get to the tests today, but still a corner case left, I think. https://codereview.chromium.org/136203009/diff/620001/chrome/renderer/net/net_error_helper_core.cc ...
6 years, 9 months ago (2014-03-12 21:38:58 UTC) #39
Elly Fong-Jones
On 2014/03/12 21:38:58, mmenke wrote: > Won't get to the tests today, but still a ...
6 years, 9 months ago (2014-03-12 22:05:56 UTC) #40
jochen (gone - plz use gerrit)
content/ lgtm, but please consider moving the timer changes to the base clss https://codereview.chromium.org/136203009/diff/660001/chrome/renderer/net/mockable_one_shot_timer.h File ...
6 years, 9 months ago (2014-03-13 12:20:39 UTC) #41
mmenke
LGTM. I'm of course fine with looking into making the real OneShotTimer mockable in base, ...
6 years, 9 months ago (2014-03-13 14:39:12 UTC) #42
Elly Fong-Jones
https://codereview.chromium.org/136203009/diff/680001/chrome/renderer/net/net_error_helper_core.cc File chrome/renderer/net/net_error_helper_core.cc (right): https://codereview.chromium.org/136203009/diff/680001/chrome/renderer/net/net_error_helper_core.cc#newcode298 chrome/renderer/net/net_error_helper_core.cc:298: online_(true), On 2014/03/13 14:39:13, mmenke wrote: > Don't suppose ...
6 years, 9 months ago (2014-03-13 17:56:18 UTC) #43
mmenke
https://codereview.chromium.org/136203009/diff/680001/chrome/renderer/net/net_error_helper_core.cc File chrome/renderer/net/net_error_helper_core.cc (right): https://codereview.chromium.org/136203009/diff/680001/chrome/renderer/net/net_error_helper_core.cc#newcode298 chrome/renderer/net/net_error_helper_core.cc:298: online_(true), On 2014/03/13 17:56:19, Elly Jones wrote: > On ...
6 years, 9 months ago (2014-03-13 19:18:11 UTC) #44
Elly Fong-Jones
The CQ bit was checked by ellyjones@chromium.org
6 years, 9 months ago (2014-03-14 15:06:33 UTC) #45
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/ellyjones@chromium.org/136203009/740001
6 years, 9 months ago (2014-03-14 15:06:39 UTC) #46
Elly Fong-Jones
The CQ bit was unchecked by ellyjones@chromium.org
6 years, 9 months ago (2014-03-14 15:06:49 UTC) #47
Elly Fong-Jones
The CQ bit was checked by ellyjones@chromium.org
6 years, 9 months ago (2014-03-14 16:30:55 UTC) #48
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/ellyjones@chromium.org/136203009/740001
6 years, 9 months ago (2014-03-14 16:31:19 UTC) #49
commit-bot: I haz the power
6 years, 9 months ago (2014-03-15 00:12:03 UTC) #50
Message was sent while issue was closed.
Change committed as 257254

Powered by Google App Engine
This is Rietveld 408576698