1. 14 May, 2015 40 commits
    • alexmos's avatar
      OOPIF: Don't resurrect a dead process just to create proxies. · a3988993
      alexmos authored
      This fixes another cause of crashing without a valid parent proxy in
      RenderFrameProxy::CreateFrameProxy.  This occurred when a renderer
      crashed, and another renderer added a child frame, which triggered a
      new proxy for that frame to be created for the crashed process.  The
      crashed process was recreated just to create the proxy, and the proxy
      creation crashed because its parent proxy didn't exist.
      
      This CL fixes InitRenderFrameProxy to not recreate a process just to
      create proxies.  The process should only come back if it ever needs to
      host a RenderFrame, and all the proxies should already be created
      then.
      
      BUG=476846
      
      Review URL: https://codereview.chromium.org/1138413002
      
      Cr-Commit-Position: refs/heads/master@{#329972}
      a3988993
    • erikchen's avatar
      mac: Suppress a clang warning in CustomFrameView. · 8f7b9f93
      erikchen authored
      Clang's static analyzer emits the warning "-Wobjc-designated-initializers" for
      CustomFrameView, because CustomFrameView overrides two designated initializers,
      but the methods don't call super. The methods throw exceptions, which Clang's
      static analyzer isn't smart enough to catch. Declaring the methods with
      NS_UNAVAILABLE suppresses the clang warning.
      
      BUG=
      
      Review URL: https://codereview.chromium.org/1101923002
      
      Cr-Commit-Position: refs/heads/master@{#329971}
      8f7b9f93
    • msw's avatar
      Make Android Mojo Runner respect command line apps. · 1a4bbd1c
      msw authored
      Make Mandoline always run the mojo:window_manager.
      (afaik we don't want to specify other command line apps)
      Make Mojo Runner run the command line app (fallback on WM).
      (The Android impl wasn't respecting the command line app)
      Consolidate on Context::RunCommandLineApplication helper.
      
      BUG=486220
      TEST=Android mojo shell and apptest runner can run non-WM apps (eg. apptests).
      R=sky@chromium.org
      
      Review URL: https://codereview.chromium.org/1134713003
      
      Cr-Commit-Position: refs/heads/master@{#329970}
      1a4bbd1c
    • markusheintz's avatar
      Don't open the Collected Cookies dialog if the related web contents is null... · 56de5c36
      markusheintz authored
      Don't open the Collected Cookies dialog if the related web contents is null because the tab was already closed.
      
      BUG=434569
      
      Review URL: https://codereview.chromium.org/1017683003
      
      Cr-Commit-Position: refs/heads/master@{#329969}
      56de5c36
    • sammc's avatar
      Fix a race in MultiThreadedProxyResolverTest.ThreeThreads_Basic. · af7a991a
      sammc authored
      Review URL: https://codereview.chromium.org/1138313003
      
      Cr-Commit-Position: refs/heads/master@{#329968}
      af7a991a
    • guoweis's avatar
      Use nonblocking IO mode as default for WebRTC · dd5cbcb5
      guoweis authored
      BUG=465453
      
      Review URL: https://codereview.chromium.org/1128823008
      
      Cr-Commit-Position: refs/heads/master@{#329967}
      dd5cbcb5
    • lgarron's avatar
      Switch //net functions to use SchemeIsCryptographic() instead of SchemeIsSecure(). · a774b922
      lgarron authored
      SchemeIsCryptographic more appropriately reflects
      the intent (that a cryptographically secure
      transport was used - e.g. https:// and wss:// schemes),
      whereas SchemeIsSecure also considers situations where
      the scheme is locally trusted (e.g. filesystem URLs)
      
      BUG=362214
      
      Review URL: https://codereview.chromium.org/1131963003
      
      Cr-Commit-Position: refs/heads/master@{#329966}
      a774b922
    • jam's avatar
      Fork the mojo shell interfaces used by Mandoline. · 05a3de40
      jam authored
      Per in-person discussions, as long as we have a fork of mojo shell we'll fork the interfaces.
      
      I'll do third_party/mojo/src/mojo/public/java/application in a followup.
      
      TBR=tsepez
      
      Review URL: https://codereview.chromium.org/1139123006
      
      Cr-Commit-Position: refs/heads/master@{#329965}
      05a3de40
    • dpranke's avatar
      Modify the gn version of 'mb analyze' to handle GN group targets as well. · 067d014b
      dpranke authored
      Previously, if a group target like 'mandoline:all' was specified as
      an additional_compile_target that we wanted to build, the gn implementation
      of 'analyze' would not handle it correctly (it could only handle dependencies
      on files that existed in the build directory, like executables).
      
      This patch modifies the MB implementation to also handle label-like targets
      (the ninja mandoline:all target is the equivalent of the GN //mandonline:all
      target); we do this by calling 'gn refs' twice, once looking for a list
      of output paths to match against the compile targets and once looking for
      a list of phony labels to match against the compile targets.
      
      We also will match against just the target_name, so 'chrome_shell_apk' will
      also match "//chrome/android:chrome_shell_apk'. This may result in
      too many targets being rebuilt, but we can adjust that if need be.
      
      This is somewhat inefficient, but the alternatives would be to either
      1) force the user to specify the stamp files for a group, which would be
         ugly, or
      2) force the user to specify all the compile targets in terms of GN labels,
         which would be different from how the recipes work w/ GYP and possibly
         require us to map binary names to targets outside of GN, which would
         be a maintenance headache.
      
      R=scottmg@chromium.org,brettw@chromium.org
      BUG=487035
      CQ_EXTRA_TRYBOTS=tryserver.chromium.mac:mac_chromium_gn_rel;tryserver.chromium.win:win8_chromium_gn_rel
      
      Review URL: https://codereview.chromium.org/1135743005
      
      Cr-Commit-Position: refs/heads/master@{#329964}
      067d014b
    • jbudorick's avatar
      [Android] Remove more references to and uses of AndroidCommands. · ac496302
      jbudorick authored
      This includes removing most direct references and uses from telemetry.
      
      BUG=267773,476709
      
      Review URL: https://codereview.chromium.org/1132993004
      
      Cr-Commit-Position: refs/heads/master@{#329963}
      ac496302
    • skia-deps-roller's avatar
      Roll src/third_party/skia 86a17e7:87a773c · 76f8ac50
      skia-deps-roller authored
      Summary of changes available at:
      https://chromium.googlesource.com/skia/+log/86a17e7..87a773c
      
      CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel
      TBR=robertphillips@google.com
      
      Review URL: https://codereview.chromium.org/1136123008
      
      Cr-Commit-Position: refs/heads/master@{#329962}
      76f8ac50
    • jeremyim's avatar
      Enable an option to only use the secure Data Reduction Proxy when the secure proxy check succeeds. · 2f0a5eba
      jeremyim authored
      Instead of being optimistic about using the secure proxy (i.e. use it unless
      the check fails), flip the logic so that the secure proxy is not used unless
      the check succeeds.
      
      BUG=466753
      
      Review URL: https://codereview.chromium.org/1132083004
      
      Cr-Commit-Position: refs/heads/master@{#329961}
      2f0a5eba
    • jbauman's avatar
      Create single thread synchronous task graph runner when necessary with gpu disabled. · 8546cb12
      jbauman authored
      This prevents layout tests from crashing with --disable-gpu
      
      Review URL: https://codereview.chromium.org/1135943006
      
      Cr-Commit-Position: refs/heads/master@{#329960}
      8546cb12
    • reillyg's avatar
      Remove --enable-firewall-hole-punching flag, default to enabled. · 335730ea
      reillyg authored
      Enable firewall hole punching for Chrome Apps by taking this feature out
      from behind a flag.
      
      BUG=478231
      
      Review URL: https://codereview.chromium.org/1136843008
      
      Cr-Commit-Position: refs/heads/master@{#329959}
      335730ea
    • nick's avatar
      Move ContentBrowserSanityChecker and WebContentsObserverSanityChecker from... · 91476732
      nick authored
      Move ContentBrowserSanityChecker and WebContentsObserverSanityChecker from content/public/test to content/test
      
      TEST=compiles
      BUG=None
      
      Review URL: https://codereview.chromium.org/1137083005
      
      Cr-Commit-Position: refs/heads/master@{#329958}
      91476732
    • scheib's avatar
      Add scheib to content/shell/OWNERS for bluetooth files. · 128c7070
      scheib authored
      This enables ownership of content shell support for testing
      Web Bluetooth. An example of early support being added in
      https://codereview.chromium.org/1132943002
      content/shell/browser/layout_test/layout_test_bluetooth_adapter_provider.h/cc
      
      BUG=420275
      
      Review URL: https://codereview.chromium.org/1142523003
      
      Cr-Commit-Position: refs/heads/master@{#329957}
      128c7070
    • dmazzoni's avatar
      Fix ChromeVox's detection of whether the current document has focus. · 28df096f
      dmazzoni authored
      Added a new helper function to determine whether the document has focus,
      taking into account whether an iframe or webview element has focus
      and whether the document is hidden.
      
      This fixes issues where there were two ChromeVox active indicators showing,
      one on the outer frame and one inside the inner frame or webview. It also
      fixes issues with other speech-generating events being processed in both
      frames at once.
      
      BUG=484904
      
      Review URL: https://codereview.chromium.org/1137403003
      
      Cr-Commit-Position: refs/heads/master@{#329956}
      28df096f
    • estark's avatar
      Add HTTP certificate report URL with Finch gate · 6e57659e
      estark authored
      This will allow us to keep sending reports over HTTPS until the server
      can handle encrypted reports over HTTP.
      
      BUG=461590
      
      Review URL: https://codereview.chromium.org/1134283003
      
      Cr-Commit-Position: refs/heads/master@{#329955}
      6e57659e
    • aelias's avatar
      Deal with backspace keycodes getting sent by IME during compositions. · 30b299cb
      aelias authored
      As of KitKat, the standard Google IME always calls
      deleteSurroundingText(1, 0) when the soft backspace button is pressed.
      But Jellybean and below instead mixed in a backspace key event into the
      IME stream, and the current Samsung keyboard still has this behavior.
      If we only forward such key events to Blink during an ongoing
      composition, then Blink will delete its string but the
      BaseInputConnection won't update its state, leading to a desync
      and strange bugs later.
      
      Our sendKeyEvent method already had a workaround to call
      deleteSurroundingText directly in such cases. sendKeyEvent is called
      when Samsung keyboard is used with Chrome, but WebView instead goes
      through the alternate Chrome.dispatchKeyEvent path.  For that reason we
      currently have a Samsung+WebView specific desync bug.
      
      This patch changes dispatchKeyEvent to call sendKeyEvent, like
      https://codereview.chromium.org/759033002 did before it was reverted, to
      extend the workaround to WebView.  This would have the unfortunate side
      effect of causing a bug with backspace key-repeats on physical
      keyboards, as the code there only applies backspace on keyup.  So this
      patch changes it to keydown (which is better UX even aside from
      key repeat) and also forwards the system-supplied key events directly
      instead of throwing them out and generating artificial ones.
      
      BUG=483514
      
      Review URL: https://codereview.chromium.org/1137673005
      
      Cr-Commit-Position: refs/heads/master@{#329954}
      30b299cb
    • reillyg's avatar
      Avoid a race between libusb_submit_transfer and libusb_free_transfer. · ce48c8a3
      reillyg authored
      The tail end of libusb_submit_transfer assumes that the transfer object
      is still valid. It may in fact have already been freed by the transfer
      completion callback if that call occurs on a different thread. As a
      simply workaround (since the libusb code will be going away soon) this
      patch simply posts the transfer deletion back to the thread where
      libusb_submit_transfer is called so that they are serialized.
      
      BUG=487712
      
      Review URL: https://codereview.chromium.org/1126203008
      
      Cr-Commit-Position: refs/heads/master@{#329953}
      ce48c8a3
    • joone.hur's avatar
      Use true instead of TRUE for boolean value · 50f82a6f
      joone.hur authored
      BUG=None
      
      Review URL: https://codereview.chromium.org/1124193005
      
      Cr-Commit-Position: refs/heads/master@{#329952}
      50f82a6f
    • Adam Langley's avatar
      net: add myaccount.google.com to HSTS preload. · 392e4511
      Adam Langley authored
      See https://codereview.chromium.org/1131553008/
      
      Cr-Commit-Position: refs/heads/master@{#329951}
      392e4511
    • rohitrao's avatar
      Moves SQLitePersistentCookieStore to net/extras/sqlite. · 57adf29f
      rohitrao authored
      The application of special storage policy is split out into a new class,
      QuotaPolicyCookieStore, in content/browser/net.
      
      BUG=467596
      TEST=No visible impact.
      
      Review URL: https://codereview.chromium.org/1016643004
      
      Cr-Commit-Position: refs/heads/master@{#329950}
      57adf29f
    • gunsch's avatar
      Chromecast: Cma should has_audio/video after initialization finishes. · 23b6c79d
      gunsch authored
      R=lcwu@chromium.org,servolk@chromium.org,damienv@chromium.org
      BUG=internal b/19868692
      
      Review URL: https://codereview.chromium.org/1125033003
      
      Cr-Commit-Position: refs/heads/master@{#329949}
      23b6c79d
    • lazyboy's avatar
      Fix an off-by-one error in checking # of action context menu items in · 413226da
      lazyboy authored
        chrome.contextMenus.
      
      We should not increment |num_items| if we're not adding the item to the
        menu model. We have a test for this already:
        ExtensionContextMenuModelTest::ExtensionItemTest, since that is looking
        at |num_items| to verify
        (by ExtensionContextMenuModelTest::CountExtensionItems()).
      
      BUG=463467
      Test=Add 6 browser_action items from an extension that has "contextMenus" permission:
      for (var i = 0; i < chrome.contextMenus.ACTION_MENU_TOP_LEVEL_LIMIT; i++) {
        (function(idx) {
          chrome.contextMenus.create({ contexts: [ "browser_action" ], title: "entry " + idx }, function() {
            console.debug("created " + idx, chrome.runtime.lastError);
          })
        })(i);
      }
      Expect all 6 (ACTION_MENU_TOP_LEVEL_LIMIT) items to show up when you right
      click the extension icon in browser toolbar.
      
      Review URL: https://codereview.chromium.org/1137733002
      
      Cr-Commit-Position: refs/heads/master@{#329948}
      413226da
    • kkimlabs's avatar
      [Android] Add an option to skip v14 resource verification. · 2b7115f8
      kkimlabs authored
      Android AAPT 21+ will automatically move attributes to a version
      of the XML file with -vXX resource qualifier. So we no longer need
      our generate_v14_compatible_resources.py script.
      
      But AAPT only drops the attributes, so if we don't use our script,
      we need to put left/right in addition to start/end in our layout xmls.
      
      The plan is, disabling our script for Android support library and
      keep using for ourselves, until we can drop the script entirely
      when we discontinue support for JB.
      
      TBR=cjhopman@chromium.org
      BUG=487391
      
      Review URL: https://codereview.chromium.org/1136953009
      
      Cr-Commit-Position: refs/heads/master@{#329947}
      2b7115f8
    • stanisc's avatar
      Sync: Change Local IDs to GUID based to avoid ID collision · 51f97d05
      stanisc authored
      This changes implementation of Directory::NextId() to no longer depend on
      "next_id" counter stored in Sync DB. Even though there was a special precaution
      to avoid potential collision of local IDs by fast forwarding next_id by a large
      number on every save there are still a couple scenarios leading the the collision
      between a local ID generated on a client and originator_client_item_id coming
      from the server (which is basically a local ID of an item previously committed
      to the server.
      
      The new implementation of Directory::NextId() is based on base::GenerateGUID.
      The following changes accompany the transition to the new ID format:
      1) The next_id field is no longer needed in Directory::PersistedKernelInfo
      2) The code that persists next_id is no longer needed.
      3) Forcing the directory to save by marking it with KERNEL_SHARE_INFO_DIRTY
          flag right after loading it is no longer necessary. That was done primarily
          to increment next_id by a large value as a way to attempt this problem.
      4) Fixing #3 revealed a bug in Directory::IncrementTransactionVersion that
          doesn't mark the directory with KERNEL_SHARE_INFO_DIRTY when incrementing
          a datatype's transaction version. That caused a number of bookmark tests
          to fail due to the transaction version check. Fixed it.
      5) Changing local IDs to GUIDs had a subtle effect on some tests. For the
          types that don't support ordering, sorting of entries in ParentChildIndex
          defaults to ID comparison. Since generation of local IDs base on next_id
          followed a predictable pattern, some tests relied on order of items returned
          by ParentChildIndex. Switching to GUIDs disrupted the expected order
          (of entries that are unordered in their nature). To preserve the existing
          ordering pattern for unordered entries, I changed ParentChildIndex to
          default to META_HANDLE comparison.
      6) Another test that failed due to the GUID transition was
          SyncableDirectoryTest.BookmarkTagTest. The test relied on a predefined,
          repeatable local ID which was no longer the case with the GUID generation.
          I found the test to be redundant. There is another tests that verifies
          the same functionality - unique bookmark tag generation algorithm.
      
      For now the change leaves next_id in the database even though the field is
      no longer used. I should probably file another bug to track its removal.
      
      BUG=362467
      
      Review URL: https://codereview.chromium.org/1136953013
      
      Cr-Commit-Position: refs/heads/master@{#329946}
      51f97d05
    • sunnyps's avatar
      cc: Remove unused use_pinch_zoom_scrollbars flag. · 92c7287a
      sunnyps authored
      The use_pinch_zoom_scrollbars flag is dead.
      
      Review URL: https://codereview.chromium.org/1136843009
      
      Cr-Commit-Position: refs/heads/master@{#329945}
      92c7287a
    • maxbogue's avatar
      [Sync] Test SCF setting data types. · 73e7b9a8
      maxbogue authored
      Add a test to confirm that data type selections are set when SCF is
      closed rather than immediately when the selection is made.
      
      BUG=480604
      
      Review URL: https://codereview.chromium.org/1140593002
      
      Cr-Commit-Position: refs/heads/master@{#329944}
      73e7b9a8
    • blink-deps-roller's avatar
      Roll src/third_party/WebKit be1e6ee:842d065 (svn 195372:195373) · ba2ddfef
      blink-deps-roller authored
      Summary of changes available at:
      https://chromium.googlesource.com/chromium/blink/+log/be1e6ee..842d065
      
      TBR=jsbell@chromium.org,timvolodine@chromium.org
      
      Review URL: https://codereview.chromium.org/1126263006
      
      Cr-Commit-Position: refs/heads/master@{#329943}
      ba2ddfef
    • CodeByThePound's avatar
      Replace SW YUV conversion with higher quality Shader+FBO in pepper video path. · f5e60621
      CodeByThePound authored
      Improve quality of software rendering path by replacing call to SkCanvasVideoRenderer::ConvertVideoFrameToRGB in video_decoder_shim with a shader and render-to-texture.
      
      Questions about this CL:
      
      * gpu::gles2::GLESInterface
      Would it be correct to send a base::WeakPtr<GLESInterface> to the YUVConv
      class constructor to use for everything in this instance of the class?
      ATM, it just sends a GLESInterface* to methods that need it (which is
      probably wrong).  It was not clear to me whether the GLESInterface * could
      change between the ::Initialize() method
      
      * OpenGL state
      YUVConv::convert() changes texture bindings and viewport.  I currently read
      the old viewport so that I can restore it - is this necessary?  I don't save
      former texture bindings either - is this necessary?
      
      * OpenGL 'getters'
      When compiled debug, why do all output variables to GL functions need to
      contain either 0 or -1 before calling the function?  In my case GetIntegerv
      and GetShaderiv.
      
      * Errors
      It is possible that shader compile could fail.  If it fails, an error string
      can be retrieved.  What should I do in this case?
      Same with opengl errors.  I thought it would be good to check for them in
      debug builds, but what do I do if I catch one?
      
      * Texture formats
      I need a single-component texture format for uploading the Y,U,V components.
      On desktop I would use GL_RED, but unextended GLES does not have GL_RED, you
      have to use GL_LUMINANCE.  The current code uses GL_RED, and it works, but do
      I need to check for GLES extension for GL_RED or can I assume it is there?
      
      * Texture sizes
      Even with the description in video_frame.h the distinction between coded_size
      visible_size and natural_size was not entirely clear to me.  It seemed the
      output texture size in VideoDecoderShim::OnOutputComplete followed "coded_size"
      so that is what I used as well.  It was my intention to always decode the
      entire image to the user's buffer, not some subregion - so is my code correct?
      
      * FBO's
      I see that DrawBuffers is DrawBuffersEXT, and that the default GLES
      implementation does not support it.  Is it not necessary in this environment
      to call DrawBuffers?
      
      * ::SendPictures
      If there is a format error yuv_converter will return false.  How can an error
      be handled here?
      
      * testing
      I have tested with the video_decoder example program (using VPx) and our
      application which uses h264.  I believe both use I420 format.  Do you have an
      easy way to test other formats?  Is this class part of a unit test?
      
      BUG=483183,477737
      R=bbudge@chromium.org
      TEST=Run pepper video_decoder example in ppapi/examples/video_decode
      
      Review URL: https://codereview.chromium.org/1111653004
      
      Cr-Commit-Position: refs/heads/master@{#329942}
      f5e60621
    • grt's avatar
      Minor comment and style updates for on-demand update check code. · b69e31e4
      grt authored
      BUG=none
      R=ganesh@chromium.org,pkasting@chromium.org
      
      Review URL: https://codereview.chromium.org/1141073002
      
      Cr-Commit-Position: refs/heads/master@{#329941}
      b69e31e4
    • dfalcantara's avatar
      Record whenever an app is launched from the Home screen. · d33801eb
      dfalcantara authored
      Because Android's API doesn't let us know when a user has
      deleted a shortcut from the home screen, record that the
      shortcut still exists whenever the shortcut is launched.
      This applies to both regular shortcuts and web app launches.
      
      BUG=460229
      
      Review URL: https://codereview.chromium.org/1129293009
      
      Cr-Commit-Position: refs/heads/master@{#329940}
      d33801eb
    • cstout's avatar
      Enable cross compile to android from mac. · 9629015f
      cstout authored
      Useful for mojo developers.
      
      BUG=486809
      
      Review URL: https://codereview.chromium.org/1128903005
      
      Cr-Commit-Position: refs/heads/master@{#329939}
      9629015f
    • creis's avatar
      Replace NC_AUTO_SUBFRAME renderer kill with NOTREACHED for now. · 7be9d959
      creis authored
      BUG=486916
      TEST=No more NC_AUTO_SUBFRAME renderer kills.
      
      Review URL: https://codereview.chromium.org/1124313003
      
      Cr-Commit-Position: refs/heads/master@{#329938}
      7be9d959
    • dbeam's avatar
      Start axing NTP4 dead code. · 7894b555
      dbeam authored
      "Recently closed" is always hidden and is first on the chopping block.
      
      R=estade@chromium.org
      BUG=329637
      
      Review URL: https://codereview.chromium.org/1130753007
      
      Cr-Commit-Position: refs/heads/master@{#329937}
      7894b555
    • alexst's avatar
      Fix latency calculation when multiple rendered buffers are in flight. · 569a70b0
      alexst authored
      This is particularly important on ChromeOS with freon stack.
      SwapBuffers ack is sent when the buffers actually swapped, not when the
      call to swap them was made. This changed the scheduler behavior and delayed
      beginning of the next frame, so to regain it we allowed multiple in flight
      frames. The effect this has on latency info is that two frames arriving in
      rapid succession would override incorrect latency info making it look like
      things ultimately happened earlier than they did.
      
      This patch associates latency info with a particular frame's callback
      thus avoiding it being overridden.
      
      BUG=485302
      
      Review URL: https://codereview.chromium.org/1128323006
      
      Cr-Commit-Position: refs/heads/master@{#329936}
      569a70b0
    • fmeawad's avatar
      Add android load balancing shift · 325c9f6c
      fmeawad authored
      This CL saves ~50 minutes from the average Android Cycle times.
      
      Note to perf sheriff, this may result a minor shift in the result for the android tests. It is unlikely since the hardware is typical.
      
      R=sullivan@chromium.org
      BUG=466101,471921
      
      Review URL: https://codereview.chromium.org/1134633004
      
      Cr-Commit-Position: refs/heads/master@{#329935}
      325c9f6c
    • jlklein's avatar
      Rerun reproduce to pick up a fix in a new version of paper-checkbox · d72bee6d
      jlklein authored
      BUG=
      
      Review URL: https://codereview.chromium.org/1128233007
      
      Cr-Commit-Position: refs/heads/master@{#329934}
      d72bee6d
    • bondd's avatar
      Autofill: Fix WalletIntegrationAvailable() regression. · 93d1d248
      bondd authored
      Accidentally inverted a check during refactoring in
      https://crrev.com/1137513002
      
      Add back the '!' character that I deleted, and add unit tests to
      guard against future regressions.
      
      BUG=486675
      
      Review URL: https://codereview.chromium.org/1138373002
      
      Cr-Commit-Position: refs/heads/master@{#329933}
      93d1d248