1. 15 May, 2015 2 commits
  2. 14 May, 2015 38 commits
    • dmazzoni's avatar
      Implement UIElementsForSearchPredicate accessibility APIs for OS X. · 5ad9f1fd
      dmazzoni authored
      This enables VoiceOver in OS X 10.10 to use the rotor and other
      keyboard shortcuts that move by element type.
      
      BUG=471119
      
      Review URL: https://codereview.chromium.org/1134653003
      
      Cr-Commit-Position: refs/heads/master@{#329979}
      5ad9f1fd
    • skia-deps-roller's avatar
      Roll src/third_party/skia 87a773c:9d21429 · 347d1e56
      skia-deps-roller authored
      Summary of changes available at:
      https://chromium.googlesource.com/skia/+log/87a773c..9d21429
      
      CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel
      TBR=robertphillips@google.com
      
      Review URL: https://codereview.chromium.org/1128363007
      
      Cr-Commit-Position: refs/heads/master@{#329978}
      347d1e56
    • sky's avatar
      Nukes the windowmanager interface · 6bf3a1ac
      sky authored
      What was WindowManagerInternal* is now ViewManagerRoot*.
      
      The initial bootstrap is:
      . App connects to view_manager and asks for ViewManagerService.
      . ViewManager asks this connection for ViewManagerClient, and calls
        OnEmbed.
      . The ViewManager exposes the services ViewManagerRoot to the initial
        connection.
      
      All of this is handled for you if you use ViewManagerInit.
      
      As WindowManager is no more, Embed with just a url is lost. I'm
      assuming you'll add that back.
      
      BUG=487870
      TEST=none
      R=ben@chromium.org
      
      Review URL: https://codereview.chromium.org/1138073007
      
      Cr-Commit-Position: refs/heads/master@{#329977}
      6bf3a1ac
    • brettw's avatar
      Add runtime dependency extraction for GN. · 0db9185c
      brettw authored
      GN will now compute the list of files required for targets to run based on dependencies and data files listed on the targets.
      
      This is exposed via the "gn desc ... runtime_deps" command, and via a new switch that will write runtime deps files for specific targets at generation time.
      
      Review URL: https://codereview.chromium.org/1130183007
      
      Cr-Commit-Position: refs/heads/master@{#329976}
      0db9185c
    • scheib's avatar
      Correct addition of scheib, move from content/shell/OWNERS to ./browser/layout_test/OWNERS · 97d5002e
      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
      
      This change corrects https://codereview.chromium.org/1142523003
      which incorrectly used the per-file directive. per-file only applies
      to files in the same directory as the OWNERS file.
      
      BUG=420275
      
      Review URL: https://codereview.chromium.org/1128423004
      
      Cr-Commit-Position: refs/heads/master@{#329975}
      97d5002e
    • tengs's avatar
      Ensure EasyUnlockPrivateAPI factory is initialized on start up. · 3b7173a8
      tengs authored
      BUG=487486
      
      Review URL: https://codereview.chromium.org/1135183002
      
      Cr-Commit-Position: refs/heads/master@{#329974}
      3b7173a8
    • boliu's avatar
      Do not register onLayoutListener unless it is needed · 1b64b5ed
      boliu authored
      isKeyboardShowing calls getWindowVisibleDisplayFrame which may be very
      expensive sine it involves ipc to other processes. Also layout happens a
      lot more often in webview than chrome, so this disproportionately
      affects webview.
      
      BUG=487487
      
      Review URL: https://codereview.chromium.org/1140163004
      
      Cr-Commit-Position: refs/heads/master@{#329973}
      1b64b5ed
    • 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