summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2018-04-23Provide double-byte terminator in Windows font variant name.Tom Sepez
When parsing UTF16-LE, the default trailing "\0" from a single-byte character literal isn't suffucient. Bug: 835184 Change-Id: Ie7db53262adbec0ebccb5d0b22752b8c9f5e6229 Reviewed-on: https://pdfium-review.googlesource.com/31191 Reviewed-by: dsinclair <dsinclair@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
2018-04-23Create API to get PageObject mark parameters.Henrique Nakashima
New calls added in this cl: - FPDFPageObjMark_GetParamKey - FPDFPageObjMark_GetParamValueType - FPDFPageObjMark_GetParamIntValue Bug: pdfium:1037 Change-Id: Iedb74ddbf8a5483de62094ec295dadd6367d5175 Reviewed-on: https://pdfium-review.googlesource.com/30912 Reviewed-by: dsinclair <dsinclair@chromium.org> Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>
2018-04-23Fix some nits in CPDF_SampledFunc().Lei Zhang
Change-Id: I54aae3c65ded779f1421b8f971a187979e5a204b Reviewed-on: https://pdfium-review.googlesource.com/31150 Reviewed-by: Henrique Nakashima <hnakashima@chromium.org> Commit-Queue: Lei Zhang <thestig@chromium.org>
2018-04-23Add more image size checks in CJBig2_Context.Lei Zhang
BUG=chromium:834557 Change-Id: I8fb8d74f87097b39608c3f83f2fa1c4e49e69980 Reviewed-on: https://pdfium-review.googlesource.com/31170 Commit-Queue: Ryan Harrison <rharrison@chromium.org> Reviewed-by: Ryan Harrison <rharrison@chromium.org>
2018-04-20Add CPDF_PatternCS::GetPatternRGB(const PatternValue& value).chromium/3404chromium/3403chromium/3402Lei Zhang
Currently, one gets data from CPDF_PatternCS via its parent class's GetRGB(const float* pBuf) method. To squeeze through this interface, the caller has to pass in a float*, and CPDF_PatternCS::GetRGB() has to cast it to PatternValue*. Instead of doing casting, add a specialized GetPatternRGB() method to CPDF_PatternCS. In its parent class, CPDF_ColorSpace, add AsPatternCS() so callers can get a CPDF_PatternCS* from a CPDF_ColorSpace*. Change existing callers to use these new methods. Change-Id: Id476c9ece7ce8d3499a718acc682bc25036a5407 Reviewed-on: https://pdfium-review.googlesource.com/31030 Reviewed-by: Henrique Nakashima <hnakashima@chromium.org> Commit-Queue: Lei Zhang <thestig@chromium.org>
2018-04-20Revert "Do validation earlier in CPDF_SampledFunc::v_Init()."Lei Zhang
This reverts commit 54e6da1ee793f436341dfcdc4e0c26b0658d1928. Reason for revert: Checks not ordered correctly. Original change's description: > Do validation earlier in CPDF_SampledFunc::v_Init(). > > Change-Id: Ib44b39aea419230f73583caf69313a2f92557397 > Reviewed-on: https://pdfium-review.googlesource.com/30932 > Commit-Queue: Lei Zhang <thestig@chromium.org> > Reviewed-by: Henrique Nakashima <hnakashima@chromium.org> TBR=thestig@chromium.org,hnakashima@chromium.org Change-Id: I133ca5add12c173dd05ef995b5834c3058d814cd No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://pdfium-review.googlesource.com/31050 Reviewed-by: Lei Zhang <thestig@chromium.org> Commit-Queue: Lei Zhang <thestig@chromium.org>
2018-04-19Caret moves after clicked char if closer to its right rect boundary.chromium/3401Henrique Nakashima
Bug: chromium:832293 Change-Id: Idd240010a5ec99b836d9cb90c4c2aa3027ff5f67 Reviewed-on: https://pdfium-review.googlesource.com/31013 Commit-Queue: Henrique Nakashima <hnakashima@chromium.org> Reviewed-by: dsinclair <dsinclair@chromium.org> Reviewed-by: Ryan Harrison <rharrison@chromium.org>
2018-04-19Fix duplicated text in each line in XFA widgets.Henrique Nakashima
When calculating the characters to display, the run offset was not added to the offset inside the run, so characters from the first run were always used instead of from the run that the line should display. Bug: chromium:832909 Change-Id: I4d1d284894ce6ac9c7a49976aa6a6d0cf21f1382 Reviewed-on: https://pdfium-review.googlesource.com/30993 Commit-Queue: Henrique Nakashima <hnakashima@chromium.org> Reviewed-by: dsinclair <dsinclair@chromium.org>
2018-04-19Fix caret moving to start of edit on click after the text.Henrique Nakashima
It now moves to the end of the edit text instead. In a multiline edit, clicking after the end of a line in the middle of the text moves the caret to the beginning of the next line. This is a known issue to be addressed later. Bug: chromium:832293 Change-Id: I55ca1f7eebf935fbb7d9526f115489bdfbd8ba1c Reviewed-on: https://pdfium-review.googlesource.com/31012 Reviewed-by: dsinclair <dsinclair@chromium.org> Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>
2018-04-19Add public APIs for undo / redo in forms.Lei Zhang
Add FORM_CanUndo(), FORM_CanRedo(), FORM_Undo(), and FORM_Redo(). BUG=chromium:764260 Change-Id: I1d9ea67152d9b35d9b8e1d7ef7d019706fdfa30a Reviewed-on: https://pdfium-review.googlesource.com/30872 Commit-Queue: Lei Zhang <thestig@chromium.org> Reviewed-by: dsinclair <dsinclair@chromium.org>
2018-04-19Change SHADING_STEPS from a #define to a constant.Lei Zhang
Change-Id: I06eab59d7944309d6fe99b97956e8ffb11d64088 Reviewed-on: https://pdfium-review.googlesource.com/30991 Commit-Queue: dsinclair <dsinclair@chromium.org> Reviewed-by: dsinclair <dsinclair@chromium.org>
2018-04-19Fix caret not moving to click target in XFA edit.Henrique Nakashima
Bug: chromium:832293 Change-Id: Id7b90f7958e71350ecde31ef8891541eb4767ecf Reviewed-on: https://pdfium-review.googlesource.com/31010 Reviewed-by: dsinclair <dsinclair@chromium.org> Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>
2018-04-19Make CPDF_StitchFunc use more vectors.Lei Zhang
Change-Id: Iaa3988cea5cdc6ce723c59ad051800925216d81b Reviewed-on: https://pdfium-review.googlesource.com/30990 Commit-Queue: Lei Zhang <thestig@chromium.org> Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
2018-04-19Do more validation in CPDF_StitchFunc::v_Init().Lei Zhang
Change-Id: I8eeaf62947960d8774cb129be145fae157feb70e Reviewed-on: https://pdfium-review.googlesource.com/30970 Commit-Queue: Lei Zhang <thestig@chromium.org> Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
2018-04-19Do a bit more validation in CPDF_ExpIntFunc::v_Init().Lei Zhang
Also do some cleanup and use FX_SAFE_UINT32. Change-Id: I8e9fc49fb768cfc4b13b164c1dcf51b8ca99ec0b Reviewed-on: https://pdfium-review.googlesource.com/30934 Commit-Queue: Lei Zhang <thestig@chromium.org> Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
2018-04-19Do validation earlier in CPDF_SampledFunc::v_Init().Lei Zhang
Change-Id: Ib44b39aea419230f73583caf69313a2f92557397 Reviewed-on: https://pdfium-review.googlesource.com/30932 Commit-Queue: Lei Zhang <thestig@chromium.org> Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
2018-04-19Validate the Range key in Functions.Lei Zhang
They are required for type 0 and type 4 functions. The number of outputs should not be 0. Change-Id: I4cb1fa14a32ef0a1c92230d83461c697f389106f Reviewed-on: https://pdfium-review.googlesource.com/30931 Commit-Queue: Lei Zhang <thestig@chromium.org> Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
2018-04-19Fix UAF in CFX_XMLElement::SaveKe Liu
Use a ByteString object to store the returned value of WideString.UTF8Encode() instead of using a ByteStringView object to store the returned value of WideString.UTF8Encode().AsStringView(). Bug: chromium:834149 Change-Id: I8fa8dd7920140730c0417c188572d7b53e4ffb48 Reviewed-on: https://pdfium-review.googlesource.com/30890 Reviewed-by: dsinclair <dsinclair@chromium.org> Commit-Queue: dsinclair <dsinclair@chromium.org>
2018-04-18Fix integer overflow in shading drawing code.Lei Zhang
BUG=chromium:833721 Change-Id: I3ca878760c12144ef27a71dcbbfd7c18d12a5f3b Reviewed-on: https://pdfium-review.googlesource.com/30992 Commit-Queue: Lei Zhang <thestig@chromium.org> Reviewed-by: Tom Sepez <tsepez@chromium.org>
2018-04-18Always build JS Runtime stubs even if V8 present.Tom Sepez
Prerequisite for switching V8 off at run-time. Change-Id: I4b9f867185758350f5de3f57e771f63020df6e65 Reviewed-on: https://pdfium-review.googlesource.com/30994 Reviewed-by: Lei Zhang <thestig@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
2018-04-18Do not show validation errors if PDF not yet loadedchromium/3400Ryan Harrison
This prevents display of confusing popups during the loading/initialization of the XFA document. The spec explicitly states that validation should be run at this point, but other viewers like Acrobat do not fire this spurious pop ups. BUG=pdfium:975 Change-Id: Ic00d8c767ae94f95c7455a58b77e0b7283e3307c Reviewed-on: https://pdfium-review.googlesource.com/30930 Commit-Queue: Lei Zhang <thestig@chromium.org> Commit-Queue: Ryan Harrison <rharrison@chromium.org> Reviewed-by: Lei Zhang <thestig@chromium.org>
2018-04-18Add AsRawSpan() to ByteString.Tom Sepez
Also tidy AsSpan() for Byte/Wide strings. Change-Id: I1853d31a59bc7f46de81295cde2e1062b91badec Reviewed-on: https://pdfium-review.googlesource.com/30911 Commit-Queue: Tom Sepez <tsepez@chromium.org> Reviewed-by: dsinclair <dsinclair@chromium.org>
2018-04-17Use span<> in GetBits32().Tom Sepez
Get bounds checking "for free". Change-Id: Ic60d63836f6c223e2ee1262649d47da54bb30ecc Reviewed-on: https://pdfium-review.googlesource.com/30876 Reviewed-by: dsinclair <dsinclair@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
2018-04-17XFA_XPDPacket_MergeRootNode is dead code, too.Tom Sepez
Change-Id: I8a842bbd770ce8ae740d4bad8fba00ce6a5801c9 Reviewed-on: https://pdfium-review.googlesource.com/30874 Commit-Queue: Tom Sepez <tsepez@chromium.org> Commit-Queue: dsinclair <dsinclair@chromium.org> Reviewed-by: dsinclair <dsinclair@chromium.org>
2018-04-17Base64 stuff is all dead code in cxfa_ffdoc.cppTom Sepez
Change-Id: I6b0d46d913c55de592f10de5bd31a6520b16cd2f Reviewed-on: https://pdfium-review.googlesource.com/30873 Commit-Queue: Tom Sepez <tsepez@chromium.org> Commit-Queue: dsinclair <dsinclair@chromium.org> Reviewed-by: dsinclair <dsinclair@chromium.org>
2018-04-17CFX_XML Cleanupdan sinclair
Cleanup formatting and unused variables in the CFX_XML classes. Change-Id: I1aff6317a3da38a141a071ba69c7893d0f669732 Reviewed-on: https://pdfium-review.googlesource.com/30730 Commit-Queue: dsinclair <dsinclair@chromium.org> Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
2018-04-17Add ownership to CFX_XMLNode childrendan sinclair
This CL sets the CFX_XML tree ownership. The pointers set into the tree must be unique_ptrs and the CFX_XMLNode children are set to be either unique_ptrs or UnownedPtrs. Change-Id: Ib0db495c81471e40f5b4533503f7bbe5a784fd77 Reviewed-on: https://pdfium-review.googlesource.com/30711 Reviewed-by: Henrique Nakashima <hnakashima@chromium.org> Commit-Queue: dsinclair <dsinclair@chromium.org>
2018-04-17Avoid some string -> ptr -> string duplicate allocations in FF EnvironmentTom Sepez
Change-Id: I4bd89b64cd77a4e2fe0ffc2dcc415cc8fe34667a Reviewed-on: https://pdfium-review.googlesource.com/30871 Reviewed-by: dsinclair <dsinclair@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
2018-04-17Create new FPDFPageObjMark_CountParams() API.Henrique Nakashima
Bug: pdfium:1037 Change-Id: I1b7035eb199f9dd1d730b0b1112aa455f0fabcc2 Reviewed-on: https://pdfium-review.googlesource.com/30870 Reviewed-by: Lei Zhang <thestig@chromium.org> Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>
2018-04-17Remove unused CFX_SeekableStreamProxy constructordan sinclair
This CL removes the CFX_SeekableStreamProxy constructor which accepts a data pointer as it is unused. Change-Id: I1340ebdf1f85ab1dd6c7cd1b5fdebe796c07115e Reviewed-on: https://pdfium-review.googlesource.com/30858 Reviewed-by: Tom Sepez <tsepez@chromium.org> Commit-Queue: dsinclair <dsinclair@chromium.org>
2018-04-17Remove unimplemented CXFA_DataExporter private headerdan sinclair
The Export which takes a CFX_SeekableStreamProxy is never implemented. Removed. Change-Id: I130baeaf2bea7e5ebb0738330fa5de7152304367 Reviewed-on: https://pdfium-review.googlesource.com/30857 Reviewed-by: Tom Sepez <tsepez@chromium.org> Commit-Queue: dsinclair <dsinclair@chromium.org>
2018-04-17Convert CFX_XMLParser to take a IFX_SeekableStreamdan sinclair
This CL changes the CFX_XMLParser to accept an IFX_SeekableStream intead of a CFX_SeekableStreamProxy. Change-Id: I3534288a8a00095acd78a60bf6b925c6a0357892 Reviewed-on: https://pdfium-review.googlesource.com/30856 Reviewed-by: Tom Sepez <tsepez@chromium.org> Commit-Queue: dsinclair <dsinclair@chromium.org>
2018-04-17Remove unused CFX_SeekableStreamProxy From CFGAS_GEFontdan sinclair
The CFGAS_GEFont::LoadFontInternal which takesa a CFX_SeekableStreamProxy was never implemented. The stream member is never used. Change-Id: Ia9c5434c55f6ff2f709bb3ad49ecd9ee3fd3b122 Reviewed-on: https://pdfium-review.googlesource.com/30855 Commit-Queue: dsinclair <dsinclair@chromium.org> Reviewed-by: Tom Sepez <tsepez@chromium.org>
2018-04-17Cleanup some seekablestreamproxy codedan sinclair
This CL fixes up some cfx_seekablestreamproxy includes and adds a helper to the xmlparser tests. Change-Id: If1b67dee51b49fa39527274f6c68da5ec673704f Reviewed-on: https://pdfium-review.googlesource.com/30854 Reviewed-by: Tom Sepez <tsepez@chromium.org> Commit-Queue: dsinclair <dsinclair@chromium.org>
2018-04-17Remove write abilities from CFX_SeekableStreamProxydan sinclair
This CL removes the abliity to write to the seekable stream proxy class. Change-Id: I0eda2619714df190d326c23dfdcd4527d4312779 Reviewed-on: https://pdfium-review.googlesource.com/30853 Reviewed-by: Tom Sepez <tsepez@chromium.org> Commit-Queue: dsinclair <dsinclair@chromium.org>
2018-04-17Use IFX_SeekableStream in xfa_utilsdan sinclair
This CL converts xfa_utils to use an IFX_SeekableStream instead of a CFX_SeekableStreamProxy. Change-Id: I824b477351ac29d54118df2f3c5442c503aa3671 Reviewed-on: https://pdfium-review.googlesource.com/30852 Commit-Queue: dsinclair <dsinclair@chromium.org> Reviewed-by: Tom Sepez <tsepez@chromium.org>
2018-04-17Use an IFX_SeekableStream for XML savingdan sinclair
This CL converts the CFX_XML Save methods to take an IFX_SeekableStream instead of a CFX_SeekableStreamProxy. Change-Id: I6b3f6acc9f51e73b3c863b965b4dcdcbd25ba949 Reviewed-on: https://pdfium-review.googlesource.com/30850 Commit-Queue: dsinclair <dsinclair@chromium.org> Reviewed-by: Tom Sepez <tsepez@chromium.org>
2018-04-17Use span in CXFA_LocaleValue::GetDoubleNum()chromium/3399Tom Sepez
Get runtime checks instead of just asserts. Use early return while at it to save some indentation. Fix one out-of-bounds case noted by inspection. Add tests, and fix bugs that gave the wrong answers. This should be removed at our earliest convenience. Its likely to still be wrong. Change-Id: I2a68edc854c8b28c434fe28397b7834e5c9c3670 Reviewed-on: https://pdfium-review.googlesource.com/30530 Commit-Queue: Tom Sepez <tsepez@chromium.org> Reviewed-by: dsinclair <dsinclair@chromium.org>
2018-04-17Re-land "Return pdfium::span<char> from ByteString::GetBuffer().""Tom Sepez
This reverts commit 3d523e3cf89440e2ffc6571b1c687ad5e3f0318f. Fixes bounding errors now caught by tests. Change-Id: I4d0f1791bdcc45a10615a62abf7a4d20e7e538f2 Reviewed-on: https://pdfium-review.googlesource.com/30799 Commit-Queue: Tom Sepez <tsepez@chromium.org> Reviewed-by: dsinclair <dsinclair@chromium.org>
2018-04-17Add constants for PDF 1.7 spec, table 3.4.Lei Zhang
Add constants/stream_dict_common.h. The header lists all the constants in the table in the same order. Constants that are not used at all are commented out. BUG=pdfium:1049 Change-Id: I6539090e0ad56319ea628883e388aeacef044e52 Reviewed-on: https://pdfium-review.googlesource.com/29090 Reviewed-by: dsinclair <dsinclair@chromium.org> Commit-Queue: Lei Zhang <thestig@chromium.org>
2018-04-17Reland "Return pdfium::span<wchar_t> from WideString::GetBuffer().""Tom Sepez
This reverts commit 0d32b8fda53e02c1036d39f7290d4f59f2b58ca4. Restore behaviour on trunk. TBR: dsinclair@chromium.org Change-Id: Ia867f09ae9d2885595c4d9b300a058431dfd84f2 Reviewed-on: https://pdfium-review.googlesource.com/30811 Reviewed-by: Tom Sepez <tsepez@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
2018-04-17Fix nits in CPDF_Function and derived classes.Lei Zhang
- Switch away from FX_Alloc2D() when it is safe to do so. - Use FX_SAFE_SIZE_T to avoid a potential underflow with FX_Realloc(). - Mark the v_Call() input as const. - Check Call() and v_Call() return results. Change-Id: I6ec3122b23e0f137f88aa8d85a9675154a1b1706 Reviewed-on: https://pdfium-review.googlesource.com/30802 Reviewed-by: Henrique Nakashima <hnakashima@chromium.org> Commit-Queue: Lei Zhang <thestig@chromium.org>
2018-04-17Implement FORM_GetFocusedText() API.Lei Zhang
If there is a focused form field, get its text. BUG=chromium:753216 Change-Id: I05294f14d05c1c86769055f6c9eaf9177787d9fd Reviewed-on: https://pdfium-review.googlesource.com/12072 Commit-Queue: Lei Zhang <thestig@chromium.org> Reviewed-by: dsinclair <dsinclair@chromium.org>
2018-04-17Add a virtual CPWL_Wnd::GetText() method.Lei Zhang
Most CPWL_Wnd subclasses already have GetText() implementations. Change-Id: I61858019c59f915df422afaca97b8abde345575b Reviewed-on: https://pdfium-review.googlesource.com/30860 Reviewed-by: dsinclair <dsinclair@chromium.org> Commit-Queue: Lei Zhang <thestig@chromium.org>
2018-04-16Remove non-const CPDF_PageObjectHolder::GetPageObjectList().Henrique Nakashima
This makes it easier to control modifications to the page object list. Bug: pdfium:1051 Change-Id: Ia85c597fa6d39e89041b990b4b6c91e327ef811d Reviewed-on: https://pdfium-review.googlesource.com/30803 Commit-Queue: Henrique Nakashima <hnakashima@chromium.org> Reviewed-by: Lei Zhang <thestig@chromium.org>
2018-04-16Merge CFX_XMLElement and CFX_XMLAttributeNodedan sinclair
CFX_XMLElement is the only subclass of CFX_XMLAttributeNode. This CL merges the two classes together. The {Set|Get}String method has been renamed to {Set|Get}Attribute to make it clearer what you're retrieving. Change-Id: I158c961d4d8c5f563d937a3e7a35321a33622562 Reviewed-on: https://pdfium-review.googlesource.com/30710 Commit-Queue: dsinclair <dsinclair@chromium.org> Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
2018-04-16Write out StringViewTemplate::Operator=().Tom Sepez
Avoids some weirdness in mac toolchain with external templates and Operator() = default; instantiation. Change-Id: Ieec5dc08ad559752278a6f1de8fc69aad2b4e30c Reviewed-on: https://pdfium-review.googlesource.com/30810 Reviewed-by: dsinclair <dsinclair@chromium.org> Reviewed-by: Tom Sepez <tsepez@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
2018-04-16Revert "Return pdfium::span<wchar_t> from WideString::GetBuffer()."Tom Sepez
This reverts commit 154e18f9a862975abecebe77b8f5fb418418d14c. Reason for revert: Generate CL to merge to beta branch Original change's description: > Return pdfium::span<wchar_t> from WideString::GetBuffer(). > > Adds bounds checking "for free", but beware of span outliving > a ReleaseBuffer() call. Scoping as such avoids the possibility > of using an invalid span (and it is flagged as a lifetime issue). > > Change-Id: Ica63f4b1429823d0254ec6951aeaeb08160cb93c > Reviewed-on: https://pdfium-review.googlesource.com/30310 > Reviewed-by: dsinclair <dsinclair@chromium.org> > Commit-Queue: Tom Sepez <tsepez@chromium.org> TBR=tsepez@chromium.org,dsinclair@chromium.org # Not skipping CQ checks because original CL landed > 1 day ago. Change-Id: Ie1ec9434215584a024538ca8edeb59dea555af48 Reviewed-on: https://pdfium-review.googlesource.com/30830 Reviewed-by: Tom Sepez <tsepez@chromium.org> Reviewed-by: dsinclair <dsinclair@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
2018-04-16Split GetNumbericSymbol into individual methodsdan sinclair
This CL removes the GetNumbericSymbol method and adds individual methods for each symbol we retrieve. Change-Id: Id14108e5ea43a76250e18a1aa13bdbb05e928cdc Reviewed-on: https://pdfium-review.googlesource.com/30695 Commit-Queue: dsinclair <dsinclair@chromium.org> Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
2018-04-16Add test for saving after adding or removing page objects.Henrique Nakashima
pdfium:1051 reported an issue with saving after calling FPDFPage_RemoveObject. This test reproduces the issue. It is left disabled since it's failing. Bug: pdfium:1051 Change-Id: I238a95e8ea7cf5f0cee7f06419f5468f3208c939 Reviewed-on: https://pdfium-review.googlesource.com/30800 Reviewed-by: Lei Zhang <thestig@chromium.org> Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>