|
|
Created:
6 years, 6 months ago by yefimt Modified:
6 years, 6 months ago CC:
chromium-reviews, tfarina, extensions-reviews_chromium.org, chromium-apps-reviews_chromium.org Base URL:
svn://svn.chromium.org/chrome/trunk/src Project:
chromium Visibility:
Public. |
DescriptionAdded option to bookmarkManagerPrivate.getMetaInfo() to get meta info from all bookmarks in a one function call.
Needed to improve stars extension performance.
BUG=383600
Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=278231
Patch Set 1 #
Total comments: 8
Patch Set 2 : #
Total comments: 4
Patch Set 3 : #
Total comments: 11
Patch Set 4 : #Patch Set 5 : #
Total comments: 8
Patch Set 6 : #
Messages
Total messages: 28 (0 generated)
Please take a look
Rune, Mike, are one of you able to review these changes?
On 2014/06/15 17:34:43, kalman wrote: > Rune, Mike, are one of you able to review these changes? Sure, I'll review.
lgtm https://codereview.chromium.org/330983002/diff/1/chrome/browser/extensions/ap... File chrome/browser/extensions/api/bookmark_manager_private/bookmark_manager_private_api.cc (right): https://codereview.chromium.org/330983002/diff/1/chrome/browser/extensions/ap... chrome/browser/extensions/api/bookmark_manager_private/bookmark_manager_private_api.cc:691: } else { If we're not supporting the case where a key is specified, but no id, we should generate an error. https://codereview.chromium.org/330983002/diff/1/chrome/common/extensions/api... File chrome/common/extensions/api/bookmark_manager_private.json (right): https://codereview.chromium.org/330983002/diff/1/chrome/common/extensions/api... chrome/common/extensions/api/bookmark_manager_private.json:282: "description": "The id of the bookmark to retrieve meta info from. If ommited meta info for all nodes is returned.", nit: omitted https://codereview.chromium.org/330983002/diff/1/chrome/common/extensions/api... chrome/common/extensions/api/bookmark_manager_private.json:298: "description": "If a key was given, the value of the specified field, if present. Otherwise an object containing all meta info fields for the node.", update to describe new behavior https://codereview.chromium.org/330983002/diff/1/chrome/common/extensions/api... chrome/common/extensions/api/bookmark_manager_private.json:300: // TODO(rfevang): Convert this to always return MetaInfoFields update or remove this comment?
https://codereview.chromium.org/330983002/diff/1/chrome/browser/extensions/ap... File chrome/browser/extensions/api/bookmark_manager_private/bookmark_manager_private_api.cc (right): https://codereview.chromium.org/330983002/diff/1/chrome/browser/extensions/ap... chrome/browser/extensions/api/bookmark_manager_private/bookmark_manager_private_api.cc:691: } else { On 2014/06/16 17:47:34, Mike Wittman wrote: > If we're not supporting the case where a key is specified, but no id, we should > generate an error. Done. https://codereview.chromium.org/330983002/diff/1/chrome/common/extensions/api... File chrome/common/extensions/api/bookmark_manager_private.json (right): https://codereview.chromium.org/330983002/diff/1/chrome/common/extensions/api... chrome/common/extensions/api/bookmark_manager_private.json:282: "description": "The id of the bookmark to retrieve meta info from. If ommited meta info for all nodes is returned.", On 2014/06/16 17:47:35, Mike Wittman wrote: > nit: omitted Done. https://codereview.chromium.org/330983002/diff/1/chrome/common/extensions/api... chrome/common/extensions/api/bookmark_manager_private.json:298: "description": "If a key was given, the value of the specified field, if present. Otherwise an object containing all meta info fields for the node.", On 2014/06/16 17:47:35, Mike Wittman wrote: > update to describe new behavior Done. https://codereview.chromium.org/330983002/diff/1/chrome/common/extensions/api... chrome/common/extensions/api/bookmark_manager_private.json:300: // TODO(rfevang): Convert this to always return MetaInfoFields On 2014/06/16 17:47:35, Mike Wittman wrote: > update or remove this comment? I think this comment is still valid.
The CQ bit was checked by yefim@chromium.org
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/yefim@chromium.org/330983002/40001
https://codereview.chromium.org/330983002/diff/40001/chrome/browser/extension... File chrome/browser/extensions/api/bookmarks/bookmark_api_helpers.cc (right): https://codereview.chromium.org/330983002/diff/40001/chrome/browser/extension... chrome/browser/extensions/api/bookmarks/bookmark_api_helpers.cc:152: } be consistent, either use {} on 1-line ifs/fors or don't. https://codereview.chromium.org/330983002/diff/40001/chrome/common/extensions... File chrome/common/extensions/api/bookmark_manager_private.json (right): https://codereview.chromium.org/330983002/diff/40001/chrome/common/extensions... chrome/common/extensions/api/bookmark_manager_private.json:305: {"$ref": "MapMetaInfoFields"} I'm puzzled how this works. There is no way for the schema compiler to tell between two choices of objects.
can you write some tests?
https://codereview.chromium.org/330983002/diff/40001/chrome/browser/extension... File chrome/browser/extensions/api/bookmarks/bookmark_api_helpers.cc (right): https://codereview.chromium.org/330983002/diff/40001/chrome/browser/extension... chrome/browser/extensions/api/bookmarks/bookmark_api_helpers.cc:152: } On 2014/06/16 19:09:13, kalman wrote: > be consistent, either use {} on 1-line ifs/fors or don't. Done. https://codereview.chromium.org/330983002/diff/40001/chrome/common/extensions... File chrome/common/extensions/api/bookmark_manager_private.json (right): https://codereview.chromium.org/330983002/diff/40001/chrome/common/extensions... chrome/common/extensions/api/bookmark_manager_private.json:305: {"$ref": "MapMetaInfoFields"} Removed {"$ref": "MetaInfoFields"} to resolve ambiguity On 2014/06/16 19:09:13, kalman wrote: > I'm puzzled how this works. There is no way for the schema compiler to tell > between two choices of objects.
https://codereview.chromium.org/330983002/diff/60001/chrome/common/extensions... File chrome/common/extensions/api/bookmark_manager_private.json (right): https://codereview.chromium.org/330983002/diff/60001/chrome/common/extensions... chrome/common/extensions/api/bookmark_manager_private.json:298: "description": "If a key was given, the value of the specified field, if present. Otherwise an object containing all meta info fields for the node. If id is not given then meta info for all nodes as an object with node id to meta info.", Ah, yeah, this is a pretty confusing API no matter how you phrase it... 1 type, 2 types, no types... 2 methods would have been better I think. e.g. what happens if you specify a key value, but no ID? like chrome.bookmarkManagerPrivate.getMetaInfo(null, 'foo', function(whatIsThis) {}); https://codereview.chromium.org/330983002/diff/60001/chrome/common/extensions... chrome/common/extensions/api/bookmark_manager_private.json:304: {"$ref": "MapMetaInfoFields"} if you're going to do this, might as well inline the definition of MapMetaInfoFields
https://codereview.chromium.org/330983002/diff/60001/chrome/common/extensions... File chrome/common/extensions/api/bookmark_manager_private.json (right): https://codereview.chromium.org/330983002/diff/60001/chrome/common/extensions... chrome/common/extensions/api/bookmark_manager_private.json:298: "description": "If a key was given, the value of the specified field, if present. Otherwise an object containing all meta info fields for the node. If id is not given then meta info for all nodes as an object with node id to meta info.", Originally it was ignoring second parameter if first one is null. After talking to Mike and extension dev changed it to return "undefined" in callback. That is consistent with behavior when key is not found. On 2014/06/16 21:49:27, kalman wrote: > Ah, yeah, this is a pretty confusing API no matter how you phrase it... 1 type, > 2 types, no types... 2 methods would have been better I think. > > e.g. what happens if you specify a key value, but no ID? like > > chrome.bookmarkManagerPrivate.getMetaInfo(null, 'foo', function(whatIsThis) {}); https://codereview.chromium.org/330983002/diff/60001/chrome/common/extensions... chrome/common/extensions/api/bookmark_manager_private.json:304: {"$ref": "MapMetaInfoFields"} Do you mean remove "choices", yes it is possible On 2014/06/16 21:49:27, kalman wrote: > if you're going to do this, might as well inline the definition of > MapMetaInfoFields
https://codereview.chromium.org/330983002/diff/60001/chrome/common/extensions... File chrome/common/extensions/api/bookmark_manager_private.json (right): https://codereview.chromium.org/330983002/diff/60001/chrome/common/extensions... chrome/common/extensions/api/bookmark_manager_private.json:298: "description": "If a key was given, the value of the specified field, if present. Otherwise an object containing all meta info fields for the node. If id is not given then meta info for all nodes as an object with node id to meta info.", On 2014/06/16 21:56:20, yefimt wrote: > Originally it was ignoring second parameter if first one is null. After talking > to Mike and extension dev changed it to return "undefined" in callback. That is > consistent with behavior when key is not found. > > On 2014/06/16 21:49:27, kalman wrote: > > Ah, yeah, this is a pretty confusing API no matter how you phrase it... 1 > type, > > 2 types, no types... 2 methods would have been better I think. > > > > e.g. what happens if you specify a key value, but no ID? like > > > > chrome.bookmarkManagerPrivate.getMetaInfo(null, 'foo', function(whatIsThis) > {}); > undefined... and set error? sounds like it should be an error in that case. https://codereview.chromium.org/330983002/diff/60001/chrome/common/extensions... chrome/common/extensions/api/bookmark_manager_private.json:304: {"$ref": "MapMetaInfoFields"} On 2014/06/16 21:56:20, yefimt wrote: > Do you mean remove "choices", yes it is possible > On 2014/06/16 21:49:27, kalman wrote: > > if you're going to do this, might as well inline the definition of > > MapMetaInfoFields > No I mean make this "choices": [ {"type": "string"}, {"type": "object", "additionalPropreties": "any"} ]
https://codereview.chromium.org/330983002/diff/60001/chrome/common/extensions... File chrome/common/extensions/api/bookmark_manager_private.json (right): https://codereview.chromium.org/330983002/diff/60001/chrome/common/extensions... chrome/common/extensions/api/bookmark_manager_private.json:304: {"$ref": "MapMetaInfoFields"} I think it will be too confusing. Combining MetaInfoFields and MapMetaInfoFileds was semi OK because they both "additionalProperties", adding "string" there sounds too much:) On 2014/06/16 21:56:20, yefimt wrote: > Do you mean remove "choices", yes it is possible > On 2014/06/16 21:49:27, kalman wrote: > > if you're going to do this, might as well inline the definition of > > MapMetaInfoFields >
https://codereview.chromium.org/330983002/diff/60001/chrome/common/extensions... File chrome/common/extensions/api/bookmark_manager_private.json (right): https://codereview.chromium.org/330983002/diff/60001/chrome/common/extensions... chrome/common/extensions/api/bookmark_manager_private.json:304: {"$ref": "MapMetaInfoFields"} On 2014/06/16 22:00:42, yefimt wrote: > I think it will be too confusing. Combining MetaInfoFields and MapMetaInfoFileds > was semi OK because they both "additionalProperties", adding "string" there > sounds too much:) > > On 2014/06/16 21:56:20, yefimt wrote: > > Do you mean remove "choices", yes it is possible > > On 2014/06/16 21:49:27, kalman wrote: > > > if you're going to do this, might as well inline the definition of > > > MapMetaInfoFields > > > I don't understand. this is exactly what you already have, except instead of {"$ref": "MapMetaInfoFields"} it's {"type": "object", ...}
https://codereview.chromium.org/330983002/diff/60001/chrome/common/extensions... File chrome/common/extensions/api/bookmark_manager_private.json (right): https://codereview.chromium.org/330983002/diff/60001/chrome/common/extensions... chrome/common/extensions/api/bookmark_manager_private.json:298: "description": "If a key was given, the value of the specified field, if present. Otherwise an object containing all meta info fields for the node. If id is not given then meta info for all nodes as an object with node id to meta info.", extension developers don't want error as they don't get callback in this case. On 2014/06/16 21:59:47, kalman wrote: > On 2014/06/16 21:56:20, yefimt wrote: > > Originally it was ignoring second parameter if first one is null. After > talking > > to Mike and extension dev changed it to return "undefined" in callback. That > is > > consistent with behavior when key is not found. > > > > On 2014/06/16 21:49:27, kalman wrote: > > > Ah, yeah, this is a pretty confusing API no matter how you phrase it... 1 > > type, > > > 2 types, no types... 2 methods would have been better I think. > > > > > > e.g. what happens if you specify a key value, but no ID? like > > > > > > chrome.bookmarkManagerPrivate.getMetaInfo(null, 'foo', function(whatIsThis) > > {}); > > > > undefined... and set error? sounds like it should be an error in that case. https://codereview.chromium.org/330983002/diff/60001/chrome/common/extensions... chrome/common/extensions/api/bookmark_manager_private.json:304: {"$ref": "MapMetaInfoFields"} On 2014/06/16 21:59:47, kalman wrote: > On 2014/06/16 21:56:20, yefimt wrote: > > Do you mean remove "choices", yes it is possible > > On 2014/06/16 21:49:27, kalman wrote: > > > if you're going to do this, might as well inline the definition of > > > MapMetaInfoFields > > > > No I mean make this > > "choices": [ > {"type": "string"}, > {"type": "object", "additionalPropreties": "any"} > ] Done.
https://codereview.chromium.org/330983002/diff/60001/chrome/common/extensions... File chrome/common/extensions/api/bookmark_manager_private.json (right): https://codereview.chromium.org/330983002/diff/60001/chrome/common/extensions... chrome/common/extensions/api/bookmark_manager_private.json:298: "description": "If a key was given, the value of the specified field, if present. Otherwise an object containing all meta info fields for the node. If id is not given then meta info for all nodes as an object with node id to meta info.", On 2014/06/16 22:32:12, yefimt wrote: > extension developers don't want error as they don't get callback in this case. > > On 2014/06/16 21:59:47, kalman wrote: > > On 2014/06/16 21:56:20, yefimt wrote: > > > Originally it was ignoring second parameter if first one is null. After > > talking > > > to Mike and extension dev changed it to return "undefined" in callback. That > > is > > > consistent with behavior when key is not found. > > > > > > On 2014/06/16 21:49:27, kalman wrote: > > > > Ah, yeah, this is a pretty confusing API no matter how you phrase it... 1 > > > type, > > > > 2 types, no types... 2 methods would have been better I think. > > > > > > > > e.g. what happens if you specify a key value, but no ID? like > > > > > > > > chrome.bookmarkManagerPrivate.getMetaInfo(null, 'foo', > function(whatIsThis) > > > {}); > > > > > > > undefined... and set error? sounds like it should be an error in that case. > they don't get a callback..? then where does the undefined go? I'm confusd.
On 2014/06/16 22:33:54, kalman wrote: > https://codereview.chromium.org/330983002/diff/60001/chrome/common/extensions... > File chrome/common/extensions/api/bookmark_manager_private.json (right): > > https://codereview.chromium.org/330983002/diff/60001/chrome/common/extensions... > chrome/common/extensions/api/bookmark_manager_private.json:298: "description": > "If a key was given, the value of the specified field, if present. Otherwise an > object containing all meta info fields for the node. If id is not given then > meta info for all nodes as an object with node id to meta info.", > On 2014/06/16 22:32:12, yefimt wrote: > > extension developers don't want error as they don't get callback in this case. > > > > On 2014/06/16 21:59:47, kalman wrote: > > > On 2014/06/16 21:56:20, yefimt wrote: > > > > Originally it was ignoring second parameter if first one is null. After > > > talking > > > > to Mike and extension dev changed it to return "undefined" in callback. > That > > > is > > > > consistent with behavior when key is not found. > > > > > > > > On 2014/06/16 21:49:27, kalman wrote: > > > > > Ah, yeah, this is a pretty confusing API no matter how you phrase it... > 1 > > > > type, > > > > > 2 types, no types... 2 methods would have been better I think. > > > > > > > > > > e.g. what happens if you specify a key value, but no ID? like > > > > > > > > > > chrome.bookmarkManagerPrivate.getMetaInfo(null, 'foo', > > function(whatIsThis) > > > > {}); > > > > > > > > > > undefined... and set error? sounds like it should be an error in that case. > > > > they don't get a callback..? then where does the undefined go? I'm confusd. If I set error_ inside bool BookmarkManagerPrivateGetMetaInfoFunction::RunOnReady() { then callback is not called, even if I return true. They prefer callback to be called always, otherwise it is difficult to handle error from async function call Ideally they would like error to be set and callback be called, so they check for error inside callback.
On 2014/06/16 22:37:39, yefimt wrote: > On 2014/06/16 22:33:54, kalman wrote: > > > https://codereview.chromium.org/330983002/diff/60001/chrome/common/extensions... > > File chrome/common/extensions/api/bookmark_manager_private.json (right): > > > > > https://codereview.chromium.org/330983002/diff/60001/chrome/common/extensions... > > chrome/common/extensions/api/bookmark_manager_private.json:298: "description": > > "If a key was given, the value of the specified field, if present. Otherwise > an > > object containing all meta info fields for the node. If id is not given then > > meta info for all nodes as an object with node id to meta info.", > > On 2014/06/16 22:32:12, yefimt wrote: > > > extension developers don't want error as they don't get callback in this > case. > > > > > > On 2014/06/16 21:59:47, kalman wrote: > > > > On 2014/06/16 21:56:20, yefimt wrote: > > > > > Originally it was ignoring second parameter if first one is null. After > > > > talking > > > > > to Mike and extension dev changed it to return "undefined" in callback. > > That > > > > is > > > > > consistent with behavior when key is not found. > > > > > > > > > > On 2014/06/16 21:49:27, kalman wrote: > > > > > > Ah, yeah, this is a pretty confusing API no matter how you phrase > it... > > 1 > > > > > type, > > > > > > 2 types, no types... 2 methods would have been better I think. > > > > > > > > > > > > e.g. what happens if you specify a key value, but no ID? like > > > > > > > > > > > > chrome.bookmarkManagerPrivate.getMetaInfo(null, 'foo', > > > function(whatIsThis) > > > > > {}); > > > > > > > > > > > > > undefined... and set error? sounds like it should be an error in that > case. > > > > > > > they don't get a callback..? then where does the undefined go? I'm confusd. > > If I set error_ inside bool > BookmarkManagerPrivateGetMetaInfoFunction::RunOnReady() { > then callback is not called, even if I return true. > > They prefer callback to be called always, otherwise it is difficult to handle > error from async function call > Ideally they would like error to be set and callback be called, so they check > for error inside callback. that is exactly what I mean by setting an error. if you set error_ (and signal error) then it will appear on chrome.runtime.lasterror.
On 2014/06/16 22:38:36, kalman wrote: > On 2014/06/16 22:37:39, yefimt wrote: > > On 2014/06/16 22:33:54, kalman wrote: > > > > > > https://codereview.chromium.org/330983002/diff/60001/chrome/common/extensions... > > > File chrome/common/extensions/api/bookmark_manager_private.json (right): > > > > > > > > > https://codereview.chromium.org/330983002/diff/60001/chrome/common/extensions... > > > chrome/common/extensions/api/bookmark_manager_private.json:298: > "description": > > > "If a key was given, the value of the specified field, if present. Otherwise > > an > > > object containing all meta info fields for the node. If id is not given then > > > meta info for all nodes as an object with node id to meta info.", > > > On 2014/06/16 22:32:12, yefimt wrote: > > > > extension developers don't want error as they don't get callback in this > > case. > > > > > > > > On 2014/06/16 21:59:47, kalman wrote: > > > > > On 2014/06/16 21:56:20, yefimt wrote: > > > > > > Originally it was ignoring second parameter if first one is null. > After > > > > > talking > > > > > > to Mike and extension dev changed it to return "undefined" in > callback. > > > That > > > > > is > > > > > > consistent with behavior when key is not found. > > > > > > > > > > > > On 2014/06/16 21:49:27, kalman wrote: > > > > > > > Ah, yeah, this is a pretty confusing API no matter how you phrase > > it... > > > 1 > > > > > > type, > > > > > > > 2 types, no types... 2 methods would have been better I think. > > > > > > > > > > > > > > e.g. what happens if you specify a key value, but no ID? like > > > > > > > > > > > > > > chrome.bookmarkManagerPrivate.getMetaInfo(null, 'foo', > > > > function(whatIsThis) > > > > > > {}); > > > > > > > > > > > > > > > > undefined... and set error? sounds like it should be an error in that > > case. > > > > > > > > > > they don't get a callback..? then where does the undefined go? I'm confusd. > > > > If I set error_ inside bool > > BookmarkManagerPrivateGetMetaInfoFunction::RunOnReady() { > > then callback is not called, even if I return true. > > > > They prefer callback to be called always, otherwise it is difficult to handle > > error from async function call > > Ideally they would like error to be set and callback be called, so they check > > for error inside callback. > > that is exactly what I mean by setting an error. if you set error_ (and signal > error) then it will appear on chrome.runtime.lasterror. done
didn't look at bookmark_manager_private_api.cc, some nits in the other classes, lgtm otherwise. https://codereview.chromium.org/330983002/diff/100001/chrome/browser/extensio... File chrome/browser/extensions/api/bookmarks/bookmark_api_constants.cc (right): https://codereview.chromium.org/330983002/diff/100001/chrome/browser/extensio... chrome/browser/extensions/api/bookmarks/bookmark_api_constants.cc:24: const char kInvalidParamError[] = "Parameter is invalid."; can you make this more descriptive? like, what parameter? see https://code.google.com/p/chromium/codesearch#chromium/src/extensions/browser... for an example. https://codereview.chromium.org/330983002/diff/100001/chrome/browser/extensio... File chrome/browser/extensions/api/bookmarks/bookmark_api_helpers.cc (right): https://codereview.chromium.org/330983002/diff/100001/chrome/browser/extensio... chrome/browser/extensions/api/bookmarks/bookmark_api_helpers.cc:137: void GetMetaInfo(const BookmarkNode* node, better to pass in a const ref here to imply non-nullability https://codereview.chromium.org/330983002/diff/100001/chrome/browser/extensio... chrome/browser/extensions/api/bookmarks/bookmark_api_helpers.cc:139: if (node->IsVisible()) { nit: can you early-return here? rather that than the whole function being indented. https://codereview.chromium.org/330983002/diff/100001/chrome/browser/extensio... chrome/browser/extensions/api/bookmarks/bookmark_api_helpers.cc:144: for (itr = meta_info->begin(); itr != meta_info->end(); itr++) { ++itr not itr++ also I personally don't like declaring iterators anywhere other than inside the for-declarative, but, up to you I suppose.
About unit tests, if you don't mind I'll do them in a separate CL https://codereview.chromium.org/330983002/diff/100001/chrome/browser/extensio... File chrome/browser/extensions/api/bookmarks/bookmark_api_constants.cc (right): https://codereview.chromium.org/330983002/diff/100001/chrome/browser/extensio... chrome/browser/extensions/api/bookmarks/bookmark_api_constants.cc:24: const char kInvalidParamError[] = "Parameter is invalid."; On 2014/06/18 17:05:01, kalman wrote: > can you make this more descriptive? like, what parameter? > > see > https://code.google.com/p/chromium/codesearch#chromium/src/extensions/browser... > for an example. Done. https://codereview.chromium.org/330983002/diff/100001/chrome/browser/extensio... File chrome/browser/extensions/api/bookmarks/bookmark_api_helpers.cc (right): https://codereview.chromium.org/330983002/diff/100001/chrome/browser/extensio... chrome/browser/extensions/api/bookmarks/bookmark_api_helpers.cc:137: void GetMetaInfo(const BookmarkNode* node, On 2014/06/18 17:05:01, kalman wrote: > better to pass in a const ref here to imply non-nullability Done. https://codereview.chromium.org/330983002/diff/100001/chrome/browser/extensio... chrome/browser/extensions/api/bookmarks/bookmark_api_helpers.cc:139: if (node->IsVisible()) { On 2014/06/18 17:05:01, kalman wrote: > nit: can you early-return here? rather that than the whole function being > indented. Done. https://codereview.chromium.org/330983002/diff/100001/chrome/browser/extensio... chrome/browser/extensions/api/bookmarks/bookmark_api_helpers.cc:144: for (itr = meta_info->begin(); itr != meta_info->end(); itr++) { On 2014/06/18 17:05:01, kalman wrote: > ++itr not itr++ Done > also I personally don't like declaring iterators anywhere other than inside the > for-declarative, but, up to you I suppose. Then I need to split for statement into two lines, I think the way I have it now is more readable.
The CQ bit was checked by yefim@chromium.org
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/yefim@chromium.org/330983002/120001
The CQ bit was unchecked by yefim@chromium.org
The CQ bit was checked by yefim@chromium.org
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/yefim@chromium.org/330983002/120001
Message was sent while issue was closed.
Change committed as 278231 |