summaryrefslogtreecommitdiff
path: root/oovbaapi/ooo/vba/word
AgeCommit message (Collapse)Author
2024-06-29Fix VBA Table's *Padding properties typeMike Kaganski
In VBA, it is Single, not Double. See VBA documentation: https://learn.microsoft.com/en-us/office/vba/api/word.table.bottompadding https://learn.microsoft.com/en-us/office/vba/api/word.table.leftpadding https://learn.microsoft.com/en-us/office/vba/api/word.table.rightpadding https://learn.microsoft.com/en-us/office/vba/api/word.table.toppadding Change-Id: I9262462424fc11b5c062a61754ab0fab9103f549 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/169763 Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> Tested-by: Jenkins
2023-02-25word vba: tie "Word" to VBAGlobalsJustin Luth
This allows Word. to prefix global commands. While this is superfluous to use this profix in a DOC/X, the purpose is to allow the spreadsheet to call Word.<whatever> macro calls that execute in a word processor. At this point, it is simply added to SwVbaGlobals to allow macro calls to run without raising an error. make CppunitTest_sw_macros_test Change-Id: Ibeda67d458d4757be809d8669a4e424c4e6c3458 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/147682 Tested-by: Jenkins Reviewed-by: Justin Luth <jluth@mail.com>
2023-02-24word vba: add ShowAll to XViewJustin Luth
This allows ActiveDocument.ActiveWindow.View.ShowAll = true ShowAll affects "View -> Formatting Marks" make CppunitTest_sw_macros_test Change-Id: I735eb42b0d53c34a4c4770c148f6ab7ac597fd84 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/147667 Tested-by: Jenkins Reviewed-by: Justin Luth <jluth@mail.com>
2023-02-24word vba: Add activeWindow to XDocumentJustin Luth
This allows ActiveDocument.ActiveWindow.* It already works as a global, and as Aplication.ActiveWindow Unit test will follow when some of the * items are added. Change-Id: I7fb18df9f6259ec4b9d60516b2da704098831dfc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/147665 Tested-by: Jenkins Reviewed-by: Justin Luth <jluth@mail.com>
2022-12-16tdf#151548 vba FormFields: implement RangeJustin Luth
Msgbox (FormFields("text1").Range.Text) Change-Id: Iac195e09bd3f9619890b336a0cb537a1acd00049 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/144136 Tested-by: Jenkins Reviewed-by: Justin Luth <jluth@mail.com> Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2022-11-25tdf#151548 vba ContentControls: Add word::XContentControlListEntryJustin Luth
make CppunitTest_sw_macros_test CPPUNIT_TEST_NAME=testVba This now allows MS Word's modern content control list boxes (combobox and dropbox) to be controlled by VBA basic. -allows getting and setting the selected list entry -allows adding/deleting/renaming/moving list entries If .DropdownListEntries.Count <> 3 Then GoTo errorhandler: .DropdownListEntries.Item(2).Select .DropdownListEntries.Item(2).Delete If .DropdownListEntries.Item(2).Text <> "infinity" If .DropdownListEntries.Item(2).Value <> "infinity and beyond" 'With .DropdownListEntries.Add("third", "3rd", 2) Dim LE As ContentControlListEntry Set LE = .DropdownListEntries.Add("third", "3rd", 2) With LE If LE.Index <> 2 Then GoTo errorhandler: If LE.Value <> "3rd" Then GoTo errorhandler: .MoveUp .MoveUp .MoveUp If .Index <> 1 Then GoTo errorhandler: .MoveDown .MoveDown If .Index <> 3 Then GoTo errorhandler: End With 'LE If .DropdownListEntries.Item(3).Text <> "third" Then GoTo errorhandler: End With 'Item 1 runOnceDropDown: With ActiveDocument.ContentControls.Item(4) If .Type <> wdContentControlComboBox Then GoTo errorhandler: .DropdownListEntries.Clear End With Change-Id: Iffebb2bd69abec1cbcfaed05b58f940664852eae Reviewed-on: https://gerrit.libreoffice.org/c/core/+/143082 Tested-by: Jenkins Reviewed-by: Justin Luth <jluth@mail.com> Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2022-11-24tdf#151548 vba ContentControls: Add basic word::XContentControlJustin Luth
This adds basic VBA macro support for accessing the modern content controls used for creating forms. I ran out of time to make it fully functional. TODO -Invalidation: the screen isn't updating the modified results until interaction from the user (mouse click, etc.) -Unlike FormFields, content controls really depend on having Range working. I didn't have time to look into that. -I was hoping to check that my approach could accommodate the other methods that create a filtered ContentControls object: * Document.SelectLinkedControls, * Document.SelectUnlinkedControls * Range.ContentControls. I guess it will be left up to whoever needs these to add the bits that will create an appropriate collection for these limited sets. -setType: changing one type to another - both LO and Word allow limited use of this - depending on the text contents fitting the new type. What works: -getByIndex - which probably is the "normal" way to do it, since the UI doesn't provide a name/ID; just got via msgbox .ID. -full checkbox support (minus the visual invalidation) -VBA accepts almost all properties/methods that are requested. make CppunitTest_sw_macros_test CPPUNIT_TEST_NAME=testVba If Not ActiveDocument.ContentControls(1).Checked If ActiveDocument.ContentControls(2).Checked 'If ActiveDocument.ContentControls(2).Range.Text <> "$" ActiveDocument.SelectContentControlsByTag("checkboxes").Item(1).Checked = ActiveDocument.SelectContentControlsByTag("checkboxes").Item(2).Checked ActiveDocument.SelectContentControlsByTag("checkboxes") .Item(2).SetUncheckedSymbol (8364) '€ With ActiveDocument.SelectContentControlsByTitle("listbox").Item(1) If Not .ShowingPlaceholderText 'If .Range.Text <> "Choose an item." If .Type <> wdContentControlDropdownList End With With ActiveDocument.ContentControls.Item(5) 'If Not .Temporary Then GoTo errorhandler: If .Temporary <> False Then GoTo errorhandler: If .Tag <> "" Then GoTo errorhandler: If .Title <> "" Then GoTo errorhandler: End With With ActiveDocument.ContentControls.Item(6) If .Type <> wdContentControlText If .MultiLine Then GoTo errorhandler: If ActiveDocument.ContentControls.Count <> 7 .Delete 'Doesn't actually Delete in LO yet - unsafe ' If ActiveDocument.ContentControls.Count <> 6 End With ' Change to 6 when delete is working safely With ActiveDocument.ContentControls.Item(7) If .Type <> wdContentControlDate Then GoTo errorhandler: .Color = wdColorBlueGray 'unknown to Word 2010 If .Color <> wdColorBlueGray Then GoTo errorhandler: If .DateDisplayFormat <> "mm/yy/dd" Then GoTo errorhandler: If .DateCalendarType <> wdCalendarWestern Then GoTo errorhandler: If .LockContents <> False Then GoTo errorhandler: End With Change-Id: I1c636f671de81e0283c040a578838a0433ef1f5b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/143080 Tested-by: Jenkins Reviewed-by: Justin Luth <jluth@mail.com>
2022-11-15tdf#151548 vba FormFields: Add basic word::XDropDown supportJustin Luth
make CppunitTest_sw_macros_test CPPUNIT_TEST_NAME=testVba This now allows MS Word Basic legacy list box form fields to be controlled by VBA basic. -allows getting and setting the text string/list entry -allows adding and deleting list entries Change-Id: Ia772c62395c40a6aa0afae2549f15f4ea3304dbf Reviewed-on: https://gerrit.libreoffice.org/c/core/+/142396 Reviewed-by: Justin Luth <jluth@mail.com> Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2022-11-14Fix typoAndrea Gelmini
Change-Id: Ib625049e93949b247ca20a83dcca16fecda29216 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/142703 Tested-by: Jenkins Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2022-11-14tdf#151548 vba FormFields: Add basic word::XTextInput supportJustin Luth
make CppunitTest_sw_macros_test CPPUNIT_TEST_NAME=testVba This now allows MS Word Basic legacy text form fields to be controlled by VBA basic. -allows getting and setting the text string Change-Id: Ib4601d4e087233a3db257728374b362bb34d1ecb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/142262 Tested-by: Jenkins Reviewed-by: Justin Luth <jluth@mail.com> Reviewed-by: Tor Lillqvist <tml@collabora.com>
2022-11-11tdf#151548 vba FormFields: Add basic word::XCheckBox supportJustin Luth
make CppunitTest_sw_macros_test CPPUNIT_TEST_NAME=testVba This now allows MS Word Basic legacy checkbox form fields to be controlled by VBA basic. -allows getting and setting the checkbox value TODO: -wire up entry and exit macros -wire up StarBASIC support (hmm, how would that be different?) -probably completely ignore this. formfields hidden from normal writer - only activeX and content controls shown. -setup tri-state for checkboxes: with a separate default value Change-Id: Ied47a507dd9acc2c8dfd1472e6704e9dd571b480 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/142253 Reviewed-by: Justin Luth <jluth@mail.com> Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2022-11-10Fix typosAndrea Gelmini
Change-Id: Id924e4747d6a3d81b69da28910c8e096565b9b68 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/142538 Tested-by: Julien Nabet <serval2412@yahoo.fr> Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2022-11-10tdf#151548 vba FormFields: Add basic word::XFormField supportJustin Luth
Unit tests will come in the following commits that represent actual FormFields that have content/results. This lays the foundation for adding Checkboxes, Textinputs, and Dropdowns. Change-Id: If85ae25f881198d5a0699b3350a7eb20b1735c45 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/142507 Reviewed-by: Justin Luth <jluth@mail.com> Tested-by: Jenkins Reviewed-by: Tor Lillqvist <tml@collabora.com>
2022-10-17sw vba: add WordBasic.MsgBoxJustin Luth
The unit test just consists of adding a "WordBasic.MsgBox()" to the vba code in testVBA.docm. make CppunitTest_sw_macros_test or just open the file manually for an easy-to-run experience. Change-Id: I38edfee42649fcc85f0f535a2c9861c45038fa0e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/141347 Tested-by: Jenkins Reviewed-by: Justin Luth <jluth@mail.com> Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2022-10-14sw vba: add WordBasic.ScreenUpdatingJustin Luth
Change-Id: I3d074c224b77eff9f4ab1ea6bade6d66828fc88c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/141273 Tested-by: Jenkins Reviewed-by: Justin Luth <jluth@mail.com> Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2022-10-13sw vba: tie WordBasic to VBAGlobalsJustin Luth
This allows WordBasic to also be run directly, instead of only working with Application.WordBasic.*. Change-Id: I60c3beaa1fce9a8bf25786cc0b2ed6ef6deda2f5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/141200 Tested-by: Jenkins Reviewed-by: Justin Luth <jluth@mail.com> Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2022-08-06VBA Add conversion methods to globalHannah Meeks
Change-Id: I920799321f245c015a527c816272c1038cc04544 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137851 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2022-08-05VBA Add conversion methods to ApplicationHannah Meeks
Change-Id: Ic0de06699a647565deca7985742965a72614df16 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137787 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
2022-08-05VBA Add Padding properties to XTableHannah Meeks
Change-Id: I021ad15b81ce55c4f9e9e9b515be1ddaaca8d07d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137630 Tested-by: Jenkins Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
2022-07-20VBA: Add Select Method to ActiveDocumentHannah Meeks
Change-Id: I0d8d02c555fd113b96661085b339b12d83c6010f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137109 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2022-07-14The DefaultPropertyName for range is texHannah Meeks
Change-Id: I0e5f1ae0757a2ad8f58f011df435c30c577d8a79 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137006 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2022-07-14tdf#149963 - XFind not a property/attribute of XRangeHannah Meeks
Updated XRange to include XFind Change-Id: If9570fbb5de8d14063a72a4c4c55fcfd491dd496 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137004 Tested-by: Tomaž Vajngerl <quikee@gmail.com> Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2022-06-13Drop obsolete preprocessor directives from UNOIDL filesStephan Bergmann
...which were used by ildc, which is gone since a8485d558fab53291e2530fd9a1be581c1628deb "[API CHANGE] Remove deprecated idlc and regmerge from the SDK", and have always been ignored as legacy by its unoidl-write replacement. This change has been carried out (making use of GNU sed extensions) with > for i in $(git ls-files \*.idl); do sed -i -z -E -e 's/\n\n((#[^\n]*\n)+\n)*(#[^\n]*\n)+\n?/\n\n/g' -e 's/\n(#[^\n]*\n)+/\n/g' "$i"; done && git checkout extensions/source/activex/so_activex.idl odk/examples/OLE/activex/so_activex.idl which apparently happened to do the work. (The final two files are not UNOIDL source files.) Change-Id: Ic9369e05d46e8f7e8a304ab01740b171b92335cd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135683 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2019-11-26Fix typoAndrea Gelmini
Change-Id: Iee87dbb1a2e02891728a0aad2361fce60a479433 Reviewed-on: https://gerrit.libreoffice.org/83821 Reviewed-by: Julien Nabet <serval2412@yahoo.fr> Tested-by: Julien Nabet <serval2412@yahoo.fr>
2019-11-26Add ooo.vba.word.XDocument.Close() method and implementTor Lillqvist
Will be needed in COLEAT. And seems like a fairly obviously missing API otherwise, too. Change-Id: I990c605a7e3f9cff3b72f20a626477d010da9852 Reviewed-on: https://gerrit.libreoffice.org/81369 Reviewed-by: Tor Lillqvist <tml@collabora.com> Tested-by: Tor Lillqvist <tml@collabora.com> (cherry picked from commit b0b0788ba040be2bf42aa19313759ba9f4811d38) Reviewed-on: https://gerrit.libreoffice.org/83660 (cherry picked from commit 1562900446a99623a30fa9e719322a8c24132f9d)
2019-11-26Add note that SwVbaDocuments::Close() does nothingTor Lillqvist
Change-Id: Ibf4d175b4b4a0b9f168401e52af6b0459aacd046 Reviewed-on: https://gerrit.libreoffice.org/81368 Reviewed-by: Tor Lillqvist <tml@collabora.com> Tested-by: Tor Lillqvist <tml@collabora.com> (cherry picked from commit 61a656cb9c7db1863e56d1183cb82c7e8be63cc5) (cherry picked from commit 5c5034a6d5d411fedf1fb00e736c55b7bdd6f840)
2019-05-23Add ooo.vba.word.XDocument.SavePreviewPngAs() and implementTor Lillqvist
This is for COLEAT's internal use. Change-Id: If1ac2a5b251129e4431d3c0bde82529d6bdc7ccc Reviewed-on: https://gerrit.libreoffice.org/72809 Tested-by: Jenkins Reviewed-by: Tor Lillqvist <tml@collabora.com>
2019-04-19Add XWordBasic.FileSaveAs() and implementTor Lillqvist
Factor out the setFilterPropsFromFormat() also used by SwVbaDocument::SaveAs2000() to a header file of its own. Change-Id: I4bc9e1e420719a115036beb7e82a4ac3feac05f0 Reviewed-on: https://gerrit.libreoffice.org/70980 Tested-by: Jenkins Reviewed-by: Tor Lillqvist <tml@collabora.com>
2019-04-19Change XWordBasic methods to return anyTor Lillqvist
Possibly this is more in line with what callers expect. Change-Id: Ie84b05a0bdb5ef1cb3e1f9fb7df6772831ff4980 Reviewed-on: https://gerrit.libreoffice.org/70975 Tested-by: Jenkins Reviewed-by: Tor Lillqvist <tml@collabora.com>
2019-03-26Add SaveAs2000() and SaveAs() to ooo.vba.word.XDocument and implementTor Lillqvist
Change-Id: If7e45e2f791a7806e6cf8e7fc9693e19e87d2dbb
2019-02-07The WindowName param to WordBasic.AppMaximize() is optional and must be an AnyTor Lillqvist
Change-Id: I52d75427fe30945293f347e3f49d21bc2016edae
2019-02-07The parameter to WordBasic.AppShow() is optional and thus has to be an AnyTor Lillqvist
Change-Id: I134101d1be5922051e34352331a49f5706030ff2
2019-02-06Add a dummy implementation of WordBasic.AppCount()Tor Lillqvist
Change-Id: Ia9e78c331d2cb711653ee3e64597ebf2824e0eeb
2019-02-06Add a dummy implementation of WordBasic.AppShow()Tor Lillqvist
Change-Id: I14379c5732c1921b8f52293045d01acf99e0b840
2019-02-06Add a dummy implementation of WordBasic.DocMaximize()Tor Lillqvist
Change-Id: I972f9446560cc8ac51031dbc36fc05d438d150e7
2019-02-06Add a dummy implementation of WordBasic.AppMaximize()Tor Lillqvist
Change-Id: I4606e5a3717c3717d105dd2e63c9fd7d2e1abf83
2019-01-24Add WordBasic.FileClose()Tor Lillqvist
Change-Id: Ifc48e5fbcc212f0e80cf6877e2781910e38e5e54
2019-01-22Found documentation for WordBasic.ToolsOptionsView()Tor Lillqvist
Change-Id: Ic049f78fddcaabafbe6be18b92a87b56352c1a4c
2019-01-21Add a couple of known parameters to WordBasic.ToolsOptionsViewTor Lillqvist
Change-Id: Ifd472f4ca79ab97a1d6d5c5007537375121f6f58
2019-01-21Add a (dummy) WordBasic.FileSave()Tor Lillqvist
Change-Id: I021d63c9d57f1e0435bcc5f97abc57bc39fece01
2019-01-21Add a dummy WordBasic.ToolsOptionsViewTor Lillqvist
Does nothing. Needed for customer application to proceed. Once we are further along in getting it to work, we can investigate what the parameters passed to this ToolsOptionsView method actually are. (This WordBasic thing is something that has been deprecated since last century, I suspect, so no wonder it is hard to find authoritative documentation on it.) Change-Id: I62a6d6d9abb9364afca110570fa341a2375a77a6
2019-01-21Add Documents.OpenOld() method and Application.CustomizationContext propertyTor Lillqvist
OpenOld() just forwards to the regular Open(), passing empty extra parameters. CustomizationContext is fully dummy for now. Change-Id: I167494700853768d971fe16afea35e90a647a00e
2018-06-13Add a MailMerge class and object to the Writer VBA APITor Lillqvist
Just a dummy implementation so far. Needed because customer Automation client software seems to access it (through the very obsolete WordBasic API, even). It remains to be seen whether any actual mail merge functionality is needed. Change-Id: I40419da544f61173e4bcf759b887997c7f233b02 Reviewed-on: https://gerrit.libreoffice.org/55727 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Tor Lillqvist <tml@collabora.com>
2018-06-12Add ExistingBookmark() to WordBasicTor Lillqvist
Change-Id: I8f433b1ae5cc23aaa08935e87fca7674064ce881 Reviewed-on: https://gerrit.libreoffice.org/55706 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Tor Lillqvist <tml@collabora.com>
2018-06-12Add ooo.vba.word.XWordBasic.WindowName() methodTor Lillqvist
Change-Id: I0ff24c3bc331d55212855d79060eaa6f8f3dc013 Reviewed-on: https://gerrit.libreoffice.org/55705 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Tor Lillqvist <tml@collabora.com>
2018-06-12Add ooo.vba.word.XWindow.Caption propertyTor Lillqvist
Change-Id: Ifa94b95d935975a87322afebfe604a4016f5a53f Reviewed-on: https://gerrit.libreoffice.org/55692 Reviewed-by: Tor Lillqvist <tml@collabora.com> Tested-by: Tor Lillqvist <tml@collabora.com>
2018-06-07Add ooo.vba.word.Application.StatusBar property for debug output from clientTor Lillqvist
In many cases you don't want to use a bunch of MessageBox() calls in a VB6 client you are developing against LibreOffice, as that disrupts the working of the client. The developer might not mind, but other people trying it will be bothered by having to click through a stream of message boxes. Also, it is hard to correctly interpret the chronological sequence of LibreOffice's own debug output lines and such MessageBox() windows. WScript.Echo calls from a VBScript client are a bit better as they don't require any click-through, but still there is the problem of correlating with LibreOffice's own debug output. Setting this StatusBar property causes LibreOffice to output a SAL_INFO line with the tag "extensions.olebridge". Thus they are automatically merged with LibreOffice's own output and displayed in correct order. Sure, the intent of some existing 3rd-party client that sets this property would be to actually display a message in the status bar (whatever that corresponds to in LibreOffice), but until some such need is actually encountered, it's enough to just use it for this debug output functionality. After all, this property was not implemented at all earlier, so adding it now with somewhat special semantics is not a regression. (Note that on the Calc side, ooo.vba.excel.XApplication did have a StatusBar property already, and setting that does seem to attempt to display the text in some way. Possibly it should be enhanced to also do the SAL_INFO thing, for consistency? And possibly we should also have the message being displayed in the same fashion on the Writer side?) Change-Id: I5bf1e776d6401adfc43a558a2d919bd675298e1a Reviewed-on: https://gerrit.libreoffice.org/55413 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Tor Lillqvist <tml@collabora.com>
2018-05-31Add WordBasic property and its FileOpen "command"Tor Lillqvist
Change-Id: I74aca823bb871040b15f35b92f961dfe48807843 Reviewed-on: https://gerrit.libreoffice.org/55136 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Tor Lillqvist <tml@collabora.com>
2018-05-31Add window geometry attributes, too, to ooo.vba.word.XApplicationTor Lillqvist
Like the other similar attributes and methods added lately, they just forward to the corresponding attributes of the "active window". Whether setting and retrieving such then actually does something useful or not I don't know. My main concern is that Automation and COM clients at least won't complain and abort because of unimplemented APIs. Change-Id: Ia8d22e3137d314268ac6771bb355e9f0686f52dc
2018-05-31Add Move() to ooo.vba.word.XApplicationTor Lillqvist
Change-Id: Ib230e730f68a30b82915ed6d7898bf1c02690b70