summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2021-06-21 14:28:18 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2021-06-21 14:28:18 +0000
commit9eb3f8008f70f46798011bab0c09999a163fffd3 (patch)
tree93b2f75a8a48a079fef2842dbe3c1f47656797f3
parent5abe2099808dba7ca96b9cc8391774c5a86ae08c (diff)
parent038b156b562babc85fd145953ffbc64d90fe560e (diff)
downloaddevelopment-android12-mainline-documentsui-release.tar.gz
Snap for 7478028 from 038b156b562babc85fd145953ffbc64d90fe560e to mainline-documentsui-releaseandroid-mainline-12.0.0_r26android-mainline-12.0.0_r2aml_doc_310851020android12-mainline-documentsui-release
Change-Id: Ia603e1eba05be40f2a8bc4b7d7cc592ff6dccd67
-rw-r--r--Android.bp48
-rw-r--r--METADATA5
-rw-r--r--apps/BluetoothDebug/Android.bp17
-rw-r--r--apps/BuildWidget/Android.bp4
-rw-r--r--apps/CustomLocale/Android.bp17
-rw-r--r--apps/Development/Android.mk6
-rw-r--r--apps/Development/AndroidManifest.xml55
-rw-r--r--apps/Development/src/com/android/development/Connectivity.java17
-rw-r--r--apps/DevelopmentSettings/Android.bp19
-rw-r--r--apps/DumpViewer/app/src/main/Android.mk2
-rw-r--r--apps/Fallback/Android.bp17
-rw-r--r--apps/GestureBuilder/Android.bp17
-rw-r--r--apps/GestureBuilder/res/values/strings.xml2
-rw-r--r--apps/NinePatchLab/Android.bp17
-rw-r--r--apps/PushApiAuthenticator/Android.bp4
-rw-r--r--apps/PushApiTestAppOne/Android.bp4
-rw-r--r--apps/PushApiTestAppTwo/Android.bp4
-rw-r--r--apps/SdkSetup/Android.bp19
-rw-r--r--apps/SdkSetup/AndroidManifest.xml2
-rw-r--r--apps/SdkSetup/src/com/android/sdksetup/DefaultActivity.java27
-rw-r--r--apps/SettingInjectorSample/Android.bp4
-rw-r--r--apps/WidgetPreview/Android.bp4
-rw-r--r--apps/launchperf/Android.bp17
-rw-r--r--build/Android.mk41
-rw-r--r--build/sdk-android-arm64-v8a.atree3
-rw-r--r--build/sdk-android-x86.atree2
-rw-r--r--build/sdk-android-x86_64.atree2
-rw-r--r--build/sdk-windows-x86.atree14
-rw-r--r--build/sdk.atree9
-rwxr-xr-xbuild/tools/mk_sdk_repo_xml.sh4
-rw-r--r--build/tools/windows_sdk.mk7
-rw-r--r--cmds/monkey/Android.bp25
-rw-r--r--cmds/monkey/Android.mk17
-rw-r--r--cmds/monkey/src/com/android/commands/monkey/Monkey.java6
-rw-r--r--cmds/monkey/src/com/android/commands/monkey/MonkeyNetworkMonitor.java4
-rw-r--r--cmds/monkey/src/com/android/commands/monkey/MonkeyPermissionEvent.java5
-rw-r--r--cmds/monkey/src/com/android/commands/monkey/MonkeyPermissionUtil.java2
-rw-r--r--gsi/build_with_kernel/empty.mk1
-rw-r--r--gsi/gsi_util/Android.bp4
-rw-r--r--gsi/repack_super_image/Android.bp4
-rw-r--r--host/windows/Android.bp5
-rwxr-xr-xhost/windows/usb/android_winusb.inf24
-rw-r--r--ide/clion/frameworks/base/CMakeLists.txt1
-rw-r--r--ide/clion/frameworks/native/CMakeLists.txt3
-rw-r--r--ndk/.gitignore12
-rw-r--r--ndk/zlib/NOTICE20
-rw-r--r--ndk/zlib/zconf.h506
-rw-r--r--ndk/zlib/zlib.h1744
-rw-r--r--python-packages/.gitignore84
-rw-r--r--python-packages/Android.bp17
-rw-r--r--python-packages/adb/device.py8
-rw-r--r--python-packages/gdbrunner/__init__.py37
-rw-r--r--samples/AccelerometerPlay/Android.bp19
-rw-r--r--samples/AdaptiveIconSample/Android.bp4
-rw-r--r--samples/AliasActivity/Android.bp4
-rw-r--r--samples/AndroidBeamDemo/Android.bp4
-rw-r--r--samples/ApiDemos/Android.mk3
-rw-r--r--samples/ApiDemos/AndroidManifest.xml37
-rw-r--r--samples/ApiDemos/res/layout/picture_in_picture_auto_enter.xml45
-rw-r--r--samples/ApiDemos/res/layout/picture_in_picture_seamless_resize.xml47
-rw-r--r--samples/ApiDemos/res/layout/picture_in_picture_source_rect_hint.xml56
-rw-r--r--samples/ApiDemos/res/values/strings.xml11
-rw-r--r--samples/ApiDemos/res/values/styles.xml6
-rw-r--r--samples/ApiDemos/src/com/example/android/apis/app/ForegroundService.java16
-rw-r--r--samples/ApiDemos/src/com/example/android/apis/app/PictureInPictureAutoEnter.java129
-rw-r--r--samples/ApiDemos/src/com/example/android/apis/app/PictureInPictureSeamlessResize.java62
-rw-r--r--samples/ApiDemos/src/com/example/android/apis/app/PictureInPictureSourceRectHint.java156
-rw-r--r--samples/ApiDemos/src/com/example/android/apis/app/PresentationActivity.java1
-rw-r--r--samples/ApiDemos/src/com/example/android/apis/app/VoiceRecognition.java2
-rw-r--r--samples/ApiDemos/src/com/example/android/apis/os/HeadlessSmsSendService.java2
-rw-r--r--samples/ApiDemos/src/com/example/android/mmslib/pdu/PduComposer.java2
-rw-r--r--samples/ApiDemos/tests/Android.mk3
-rw-r--r--samples/AppNavigation/Android.bp4
-rw-r--r--samples/AutofillKeyboard/Android.bp4
-rw-r--r--samples/AutofillKeyboard/lint-baseline.xml246
-rw-r--r--samples/BackupRestore/Android.bp4
-rw-r--r--samples/BasicGLSurfaceView/Android.bp4
-rw-r--r--samples/BasicGLSurfaceView/AndroidManifest.xml1
-rw-r--r--samples/BluetoothChat/Android.bp4
-rw-r--r--samples/BrokenKeyDerivation/Android.bp4
-rw-r--r--samples/BrokenKeyDerivation/tests/Android.bp4
-rw-r--r--samples/BusinessCard/Android.bp4
-rw-r--r--samples/BusinessCard/AndroidManifest.xml13
-rw-r--r--samples/Compass/Android.bp4
-rw-r--r--samples/ContactManager/Android.bp4
-rw-r--r--samples/CubeLiveWallpaper/Android.bp19
-rw-r--r--samples/DataWiper/Android.bp4
-rw-r--r--samples/DeviceAdminWhitelistedAccount/Android.bp4
-rw-r--r--samples/FixedGridLayout/Android.bp4
-rw-r--r--samples/HelloActivity/Android.bp4
-rw-r--r--samples/HelloActivity/AndroidManifest.xml3
-rw-r--r--samples/HelloActivity/tests/Android.bp4
-rw-r--r--samples/HelloEffects/Android.bp4
-rw-r--r--samples/Home/Android.bp17
-rw-r--r--samples/HoneycombGallery/Android.bp4
-rw-r--r--samples/InlineFillService/Android.bp6
-rw-r--r--samples/InlineFillService/AndroidManifest.xml6
-rw-r--r--samples/InlineFillService/res/layout/passwords_activity.xml26
-rw-r--r--samples/InlineFillService/res/xml/autofill_service_config.xml4
-rw-r--r--samples/InlineFillService/src/com/example/android/inlinefillservice/AuthActivity.java2
-rw-r--r--samples/InlineFillService/src/com/example/android/inlinefillservice/InlineFillService.java15
-rw-r--r--samples/InlineFillService/src/com/example/android/inlinefillservice/InlineRequestHelper.java7
-rw-r--r--samples/InlineFillService/src/com/example/android/inlinefillservice/PasswordsActivity.java28
-rw-r--r--samples/IntentPlayground/Android.bp19
-rw-r--r--samples/IntentPlayground/Android.mk28
-rw-r--r--samples/IntentPlayground/AndroidManifest.xml6
-rw-r--r--samples/IntentPlayground/src/com/example/android/intentplayground/FlagUtils.java3
-rw-r--r--samples/IntentPlayground/src/com/example/android/intentplayground/SingleInstancePerTaskActivity.java22
-rw-r--r--samples/JetBoy/Android.bp4
-rw-r--r--samples/KeyChainDemo/Android.bp9
-rw-r--r--samples/LceDemo/Android.bp4
-rw-r--r--samples/LunarLander/Android.bp4
-rw-r--r--samples/LunarLander/tests/Android.bp4
-rw-r--r--samples/MultiClientInputMethod/Android.bp (renamed from tools/hosttestlib/Android.bp)26
-rwxr-xr-xsamples/MultiClientInputMethod/Android.mk32
-rw-r--r--samples/MultiClientInputMethod/src/com/example/android/multiclientinputmethod/ClientCallbackImpl.java11
-rw-r--r--samples/MultiDisplay/Android.bp32
-rw-r--r--samples/MultiDisplay/Android.mk34
-rw-r--r--samples/MultiResolution/Android.bp4
-rw-r--r--samples/MultiWindow/Android.bp4
-rw-r--r--samples/NotePad/Android.bp4
-rw-r--r--samples/Obb/Android.bp4
-rw-r--r--samples/RSSReader/Android.bp4
-rw-r--r--samples/RSSReader/src/com/example/android/rssreader/RssReader.java2
-rw-r--r--samples/ReceiveContentDemo/Android.bp19
-rw-r--r--samples/ReceiveContentDemo/AndroidManifest.xml43
-rw-r--r--samples/ReceiveContentDemo/README.md7
-rw-r--r--samples/ReceiveContentDemo/res/drawable/container_background.xml27
-rw-r--r--samples/ReceiveContentDemo/res/drawable/thumbnail_background.xml21
-rw-r--r--samples/ReceiveContentDemo/res/layout/activity_main.xml70
-rw-r--r--samples/ReceiveContentDemo/res/layout/attachment.xml26
-rw-r--r--samples/ReceiveContentDemo/res/menu/app_menu.xml22
-rw-r--r--samples/ReceiveContentDemo/res/values/colors.xml21
-rw-r--r--samples/ReceiveContentDemo/res/values/strings.xml23
-rw-r--r--samples/ReceiveContentDemo/res/values/styles.xml21
-rw-r--r--samples/ReceiveContentDemo/res/xml/file_paths.xml20
-rw-r--r--samples/ReceiveContentDemo/src/com/example/android/receivecontent/AttachmentsRecyclerViewAdapter.java80
-rw-r--r--samples/ReceiveContentDemo/src/com/example/android/receivecontent/AttachmentsRepo.java111
-rw-r--r--samples/ReceiveContentDemo/src/com/example/android/receivecontent/Logcat.java23
-rw-r--r--samples/ReceiveContentDemo/src/com/example/android/receivecontent/MyExecutors.java54
-rw-r--r--samples/ReceiveContentDemo/src/com/example/android/receivecontent/MyReceiver.java144
-rw-r--r--samples/ReceiveContentDemo/src/com/example/android/receivecontent/ReceiveContentDemoActivity.java102
-rw-r--r--samples/ReceiveContentDemo/src/com/example/android/receivecontent/Utils.java86
-rw-r--r--samples/ReceiveShareDemo/Android.bp4
-rw-r--r--samples/ReceiveShareDemo/AndroidManifest.xml2
-rw-r--r--samples/RenderScript/HelloCompute/Android.mk2
-rw-r--r--samples/RenderScript/Levels/Android.mk2
-rw-r--r--samples/SampleSyncAdapter/Android.bp4
-rw-r--r--samples/SearchableDictionary/Android.bp10
-rw-r--r--samples/ShortcutDemo/launcher/Android.mk4
-rw-r--r--samples/ShortcutDemo/publisher/Android.mk4
-rw-r--r--samples/ShortcutSample/Android.bp104
-rw-r--r--samples/ShortcutSample/Android.mk142
-rw-r--r--samples/SimpleJNI/Android.bp4
-rw-r--r--samples/SimpleJNI/jni/Android.bp5
-rw-r--r--samples/SipDemo/Android.bp4
-rw-r--r--samples/SkeletonApp/Android.bp4
-rw-r--r--samples/SkeletonApp/tests/Android.bp4
-rw-r--r--samples/Snake/Android.bp4
-rwxr-xr-xsamples/Snake/src/com/example/android/snake/SnakeView.java6
-rw-r--r--samples/Snake/tests/Android.bp4
-rw-r--r--samples/SoftKeyboard/Android.bp4
-rw-r--r--samples/SpellChecker/HelloSpellChecker/Android.bp4
-rw-r--r--samples/SpellChecker/HelloSpellChecker/AndroidManifest.xml1
-rw-r--r--samples/SpellChecker/SampleSpellCheckerService/Android.bp4
-rw-r--r--samples/SpellChecker/SampleSpellCheckerService/AndroidManifest.xml5
-rw-r--r--samples/StackWidget/Android.bp4
-rw-r--r--samples/StartingWindow/Android.bp16
-rw-r--r--samples/StartingWindow/AndroidManifest.xml39
-rw-r--r--samples/StartingWindow/res/drawable-hdpi/logo_gmail.pngbin0 -> 966 bytes
-rw-r--r--samples/StartingWindow/res/drawable-mdpi/logo_gmail.pngbin0 -> 745 bytes
-rw-r--r--samples/StartingWindow/res/drawable-v26/ic_launcher.xml29
-rw-r--r--samples/StartingWindow/res/drawable-xhdpi/logo_gmail.pngbin0 -> 1227 bytes
-rw-r--r--samples/StartingWindow/res/drawable-xxhdpi/logo_gmail.pngbin0 -> 1550 bytes
-rw-r--r--samples/StartingWindow/res/drawable-xxxhdpi/logo_gmail.pngbin0 -> 1922 bytes
-rw-r--r--samples/StartingWindow/res/drawable/avd_anim.xml94
-rw-r--r--samples/StartingWindow/res/drawable/ic_launcher.xml3
-rw-r--r--samples/StartingWindow/res/layout/main_activity.xml109
-rw-r--r--samples/StartingWindow/res/values-night/styles.xml24
-rw-r--r--samples/StartingWindow/res/values/colors.xml20
-rw-r--r--samples/StartingWindow/res/values/strings.xml20
-rw-r--r--samples/StartingWindow/res/values/styles.xml34
-rw-r--r--samples/StartingWindow/src/com/example/android/startingwindow/CustomizeExitActivity.java205
-rw-r--r--samples/StartingWindow/src/com/example/android/startingwindow/SecondActivity.java22
-rw-r--r--samples/ThemedNavBarKeyboard/Android.bp4
-rw-r--r--samples/ToyVpn/Android.bp4
-rw-r--r--samples/TtsEngine/Android.bp4
-rw-r--r--samples/USB/AdbTest/Android.bp4
-rw-r--r--samples/USB/MissileLauncher/Android.bp4
-rw-r--r--samples/UiAutomator/Android.mk2
-rw-r--r--samples/Vault/Android.bp4
-rw-r--r--samples/Vault/tests/Android.bp4
-rw-r--r--samples/VoiceRecognitionService/Android.bp4
-rw-r--r--samples/VoicemailProviderDemo/Android.bp19
-rw-r--r--samples/WeatherListWidget/Android.bp4
-rw-r--r--samples/WeatherListWidget/src/com/example/android/weatherlistwidget/WeatherDataProvider.java2
-rw-r--r--samples/WiFiDirectDemo/Android.bp4
-rw-r--r--samples/WiFiDirectDemo/src/com/example/android/wifidirect/WiFiDirectActivity.java40
-rw-r--r--samples/WiFiDirectServiceDiscovery/Android.bp4
-rw-r--r--samples/WiFiDirectServiceDiscovery/src/com/example/android/wifidirect/discovery/WiFiServiceDiscoveryActivity.java40
-rw-r--r--samples/Wiktionary/Android.bp4
-rw-r--r--samples/WiktionarySimple/Android.bp4
-rw-r--r--samples/XmlAdapters/Android.bp4
-rw-r--r--samples/XmlAdapters/src/com/example/android/xmladapters/ImageDownloader.java2
-rw-r--r--samples/XmlAdapters/src/com/example/android/xmladapters/XmlDocumentProvider.java2
-rw-r--r--samples/apkcachetest/Android.bp4
-rw-r--r--samples/browseable/ActionBarCompat-ListPopupMenu/src/com.example.android.actionbarcompat.listpopupmenu/Cheeses.java2
-rw-r--r--samples/browseable/ActionBarCompat-ListPopupMenu/src/com.example.android.actionbarcompat.listpopupmenu/PopupListFragment.java2
-rw-r--r--samples/browseable/CardEmulation/src/com.example.android.cardemulation/CardService.java2
-rw-r--r--samples/browseable/CustomChoiceList/src/com.example.android.customchoicelist/Cheeses.java2
-rw-r--r--samples/browseable/DirectShare/src/com.example.android.directshare/Contact.java4
-rw-r--r--samples/browseable/DirectShare/src/com.example.android.directshare/SendMessageActivity.java2
-rw-r--r--samples/browseable/HorizontalPaging/src/com.example.android.horizontalpaging/MainActivity.java2
-rw-r--r--samples/browseable/JumpingJack/src/com.example.android.wearable.jumpingjack/MainActivity.java2
-rw-r--r--samples/browseable/RuntimePermissions/src/com.example.android.system.runtimepermissions/MainActivity.java2
-rw-r--r--samples/browseable/RuntimePermissions/src/com.example.android.system.runtimepermissions/contacts/ContactsFragment.java4
-rw-r--r--samples/browseable/SpeedTracker/Application/src/com.example.android.wearable.speedtracker/PhoneMainActivity.java2
-rw-r--r--samples/browseable/StorageProvider/src/com.example.android.storageprovider/MyCloudProvider.java6
-rw-r--r--samples/browseable/StorageProvider/src/com.example.android.storageprovider/StorageProviderFragment.java6
-rw-r--r--samples/browseable/SwipeRefreshLayoutBasic/src/com.example.android.common/dummydata/Cheeses.java2
-rw-r--r--samples/browseable/SwipeRefreshLayoutBasic/src/com.example.android.swiperefreshlayoutbasic/SwipeRefreshLayoutBasicFragment.java2
-rw-r--r--samples/browseable/SwipeRefreshListFragment/src/com.example.android.common/dummydata/Cheeses.java2
-rw-r--r--samples/browseable/SwipeRefreshListFragment/src/com.example.android.swiperefreshlistfragment/SwipeRefreshListFragmentFragment.java2
-rw-r--r--samples/browseable/SwipeRefreshMultipleViews/src/com.example.android.common/dummydata/Cheeses.java2
-rw-r--r--samples/browseable/SwipeRefreshMultipleViews/src/com.example.android.swiperefreshmultipleviews/SwipeRefreshMultipleViewsFragment.java2
-rw-r--r--samples/browseable/WearSpeakerSample/src/com.example.android.wearable.speaker/MainActivity.java2
-rw-r--r--samples/browseable/XYZTouristAttractions/Wearable/src/com.example.android.xyztouristattractions/service/UtilityService.java2
-rw-r--r--samples/devbytes/animation/ListViewDraggingAnimation/src/com/example/android/listviewdragginganimation/DynamicListView.java2
-rw-r--r--samples/devbytes/animation/ToonGame/src/com/example/android/toongame/ToonGame.java2
-rw-r--r--samples/devbytes/telephony/SmsSampleProject/app/src/main/java/com/example/android/smssample/MainActivity.java2
-rw-r--r--samples/training/AnimationsDemo/res/layout/excerpt_content.xml2
-rw-r--r--samples/training/AnimationsDemo/res/layout/fragment_screen_slide_page.xml2
-rw-r--r--samples/training/AnimationsDemo/res/layout/list_item_example.xml2
-rw-r--r--samples/training/AnimationsDemo/src/com/example/android/animationsdemo/ScreenSlidePageFragment.java4
-rwxr-xr-xsamples/training/EffectiveNavigation/src/com/example/android/effectivenavigation/CollectionDemoActivity.java2
-rwxr-xr-xsamples/training/EffectiveNavigation/src/com/example/android/effectivenavigation/MainActivity.java4
-rw-r--r--samples/training/NsdChat/Android.bp4
-rw-r--r--samples/training/TabCompat/src/com/example/android/tabcompat/lib/TabHelperEclair.java2
-rw-r--r--scripts/Android.bp34
-rw-r--r--scripts/OWNERS2
-rwxr-xr-xscripts/acov95
-rwxr-xr-xscripts/acov-llvm.py252
-rwxr-xr-xscripts/add3prf.py321
-rwxr-xr-xscripts/add3prf_test.py76
-rwxr-xr-xscripts/cargo2android.py847
-rwxr-xr-xscripts/example_crashes.py2
-rwxr-xr-xscripts/gdbclient.py94
-rwxr-xr-xscripts/get_rust_pkg.py446
l---------scripts/lldbclient.py1
-rwxr-xr-xscripts/llvm-gcov3
-rwxr-xr-xscripts/stack6
-rwxr-xr-xscripts/stack_core.py152
-rwxr-xr-xscripts/symbol.py82
-rwxr-xr-xscripts/update_crate_tests.py176
-rw-r--r--sdk/Android.bp13
-rw-r--r--sdk/build_tools_source.prop_template4
-rw-r--r--sdk/plat_tools_source.prop_template2
-rw-r--r--sdk/platform_source.prop_template2
-rw-r--r--sdk/sdk_files_NOTICE.txt1
-rw-r--r--sys-img/OWNERS4
-rw-r--r--sys-img/images_arm64-v8a_source.prop_template3
-rw-r--r--sys-img/images_armeabi-v7a_source.prop_template4
-rw-r--r--sys-img/images_armeabi_source.prop_template4
-rw-r--r--sys-img/images_x86_64_source.prop_template2
-rw-r--r--sys-img/images_x86_source.prop_template2
-rw-r--r--testrunner/Android.mk4
-rw-r--r--testrunner/tests/Android_java.mk2
-rw-r--r--testrunner/tests/Android_native.mk2
-rw-r--r--tools/Android.bp10
-rw-r--r--tools/apkcheck/Android.bp4
-rw-r--r--tools/bugreport/Android.bp4
-rw-r--r--tools/etc1tool/Android.bp4
-rw-r--r--tools/hosttestlib/src/com/android/hosttest/DeviceConnector.java110
-rw-r--r--tools/hosttestlib/src/com/android/hosttest/DeviceTest.java51
-rw-r--r--tools/hosttestlib/src/com/android/hosttest/DeviceTestCase.java71
-rw-r--r--tools/hosttestlib/src/com/android/hosttest/DeviceTestRunner.java143
-rw-r--r--tools/hosttestlib/src/com/android/hosttest/DeviceTestSuite.java89
-rw-r--r--tools/idegen/Android.bp4
-rw-r--r--tools/idegen/src/Main.java14
-rw-r--r--tools/line_endings/Android.bp9
-rw-r--r--tools/mkstubs/Android.bp4
-rw-r--r--tools/ndk/.gitignore138
-rw-r--r--tools/ndk/OWNERS (renamed from ndk/OWNERS)1
-rwxr-xr-xtools/ndk/build_ndk_docs.py85
-rwxr-xr-xtools/privapp_permissions/privapp_permissions.py318
-rwxr-xr-xtools/repo_diff/repo_diff_android.py9
-rw-r--r--tools/repo_pull/README.md1
-rwxr-xr-xtools/repo_pull/gerrit.py166
-rwxr-xr-xtools/repo_pull/repo_patch.py17
-rwxr-xr-xtools/repo_pull/repo_pull.py121
-rwxr-xr-xtools/repo_pull/repo_review.py68
-rw-r--r--tools/rmtypedefs/Android.bp4
-rw-r--r--tools/winscope/.babelrc4
-rw-r--r--tools/winscope/.eslintrc.json35
-rw-r--r--tools/winscope/.gitignore6
-rw-r--r--tools/winscope/README.md21
-rwxr-xr-xtools/winscope/adb_proxy/winscope_proxy.py300
-rw-r--r--tools/winscope/env/dev.env.js19
-rw-r--r--tools/winscope/env/prod.env.js19
-rw-r--r--tools/winscope/libs/virtualList/Item.js81
-rw-r--r--tools/winscope/libs/virtualList/README.md3
-rw-r--r--tools/winscope/libs/virtualList/VirtualList.js354
-rw-r--r--tools/winscope/libs/virtualList/props.js150
-rw-r--r--tools/winscope/libs/virtualList/virtual.js305
-rw-r--r--tools/winscope/package.json73
-rw-r--r--tools/winscope/spec/DiffSpec.js267
-rw-r--r--tools/winscope/spec/ObjectTransformerSpec.js184
-rw-r--r--tools/winscope/spec/ProtoTransformSpec.js25
-rw-r--r--tools/winscope/spec/SimplifiedLayerNamesSpec.js24
-rw-r--r--tools/winscope/spec/support/jasmine.json11
-rw-r--r--tools/winscope/spec/traces/layers_trace/layers_trace_emptyregion.pbbin0 -> 565800 bytes
-rw-r--r--tools/winscope/spec/traces/layers_trace/layers_trace_invalid_layer_visibility.pbbin0 -> 3580523 bytes
-rw-r--r--tools/winscope/spec/traces/layers_trace/layers_trace_orphanlayers.pbbin0 -> 1936878 bytes
-rw-r--r--tools/winscope/spec/traces/layers_trace/layers_trace_root.pbbin0 -> 541628 bytes
-rw-r--r--tools/winscope/spec/traces/layers_trace/layers_trace_root_aosp.pbbin0 -> 707410 bytes
-rw-r--r--tools/winscope/spec/traces/wl_trace.pbbin0 -> 36163 bytes
-rw-r--r--tools/winscope/spec/utils/tree.js33
-rw-r--r--tools/winscope/src/App.vue291
-rw-r--r--tools/winscope/src/DataAdb.vue358
-rw-r--r--tools/winscope/src/DataFilter.vue62
-rw-r--r--tools/winscope/src/DataInput.vue555
-rw-r--r--tools/winscope/src/DataView.vue171
-rw-r--r--tools/winscope/src/DefaultTreeElement.vue103
-rw-r--r--tools/winscope/src/DraggableDiv.vue229
-rw-r--r--tools/winscope/src/LogEntry.vue188
-rw-r--r--tools/winscope/src/LogView.vue279
-rw-r--r--tools/winscope/src/NodeContextMenu.vue95
-rw-r--r--tools/winscope/src/Overlay.vue837
-rw-r--r--tools/winscope/src/PropertiesTreeElement.vue84
-rw-r--r--tools/winscope/src/Rects.vue62
-rw-r--r--tools/winscope/src/SurfaceFlingerTraceView.vue56
-rw-r--r--tools/winscope/src/Timeline.vue86
-rw-r--r--tools/winscope/src/TimelineSelection.vue463
-rw-r--r--tools/winscope/src/Timelines.vue376
-rw-r--r--tools/winscope/src/TraceView.vue430
-rw-r--r--tools/winscope/src/TransactionEntry.vue271
-rw-r--r--tools/winscope/src/TransactionsView.vue523
-rw-r--r--tools/winscope/src/TreeView.vue614
-rw-r--r--tools/winscope/src/VideoView.vue70
-rw-r--r--tools/winscope/src/WindowManagerTraceView.vue41
-rw-r--r--tools/winscope/src/components/FlatCard.vue38
-rw-r--r--tools/winscope/src/components/IconSelection/IconSelectOption.vue164
-rw-r--r--tools/winscope/src/decode.js578
-rw-r--r--tools/winscope/src/dumps/DumpBase.ts36
-rw-r--r--tools/winscope/src/dumps/SurfaceFlinger.ts33
-rw-r--r--tools/winscope/src/dumps/Wayland.ts32
-rw-r--r--tools/winscope/src/dumps/WindowManager.ts38
-rw-r--r--tools/winscope/src/flickerlib/ObjectFormatter.ts209
-rw-r--r--tools/winscope/src/flickerlib/README.md12
-rw-r--r--tools/winscope/src/flickerlib/WindowManagerState.ts114
-rw-r--r--tools/winscope/src/flickerlib/WindowManagerTrace.ts39
-rw-r--r--tools/winscope/src/flickerlib/common.js163
-rw-r--r--tools/winscope/src/flickerlib/index.js25
-rw-r--r--tools/winscope/src/flickerlib/mixin.ts51
-rw-r--r--tools/winscope/src/flickerlib/treeview/Chip.ts29
-rw-r--r--tools/winscope/src/flickerlib/treeview/ChipType.ts21
-rw-r--r--tools/winscope/src/flickerlib/treeview/Chips.ts20
-rw-r--r--tools/winscope/src/flickerlib/treeview/IClickableTreeViewElement.ts21
-rw-r--r--tools/winscope/src/flickerlib/treeview/ITreeViewElement.ts34
-rw-r--r--tools/winscope/src/flickerlib/treeview/types.ts12
-rw-r--r--tools/winscope/src/flickerlib/windows/Activity.ts54
-rw-r--r--tools/winscope/src/flickerlib/windows/ActivityTask.ts65
-rw-r--r--tools/winscope/src/flickerlib/windows/DisplayArea.ts46
-rw-r--r--tools/winscope/src/flickerlib/windows/DisplayContent.ts74
-rw-r--r--tools/winscope/src/flickerlib/windows/WindowContainer.ts123
-rw-r--r--tools/winscope/src/flickerlib/windows/WindowState.ts127
-rw-r--r--tools/winscope/src/flickerlib/windows/WindowToken.ts45
-rw-r--r--tools/winscope/src/index_template.html3
-rw-r--r--tools/winscope/src/main.js323
-rw-r--r--tools/winscope/src/mixins/FileType.js61
-rw-r--r--tools/winscope/src/mixins/FocusedDataViewFinder.js90
-rw-r--r--tools/winscope/src/mixins/SaveAsZip.js52
-rw-r--r--tools/winscope/src/mixins/Timeline.js250
-rw-r--r--tools/winscope/src/sf_visibility.js162
-rw-r--r--tools/winscope/src/traces/InputMethodClients.ts33
-rw-r--r--tools/winscope/src/traces/InputMethodManagerService.ts33
-rw-r--r--tools/winscope/src/traces/InputMethodService.ts33
-rw-r--r--tools/winscope/src/traces/Launcher.ts33
-rw-r--r--tools/winscope/src/traces/ProtoLog.ts150
-rw-r--r--tools/winscope/src/traces/ScreenRecording.ts33
-rw-r--r--tools/winscope/src/traces/SurfaceFlinger.ts33
-rw-r--r--tools/winscope/src/traces/SystemUI.ts33
-rw-r--r--tools/winscope/src/traces/TraceBase.ts69
-rw-r--r--tools/winscope/src/traces/Transactions.ts220
-rw-r--r--tools/winscope/src/traces/Wayland.ts33
-rw-r--r--tools/winscope/src/traces/WindowManager.ts39
-rw-r--r--tools/winscope/src/transform.js491
-rw-r--r--tools/winscope/src/transform_ime.js123
-rw-r--r--tools/winscope/src/transform_launcher.js4
-rw-r--r--tools/winscope/src/transform_protolog.js121
-rw-r--r--tools/winscope/src/transform_sf.js175
-rw-r--r--tools/winscope/src/transform_sys_ui.js6
-rw-r--r--tools/winscope/src/transform_transaction.js95
-rw-r--r--tools/winscope/src/transform_wm.js254
-rw-r--r--tools/winscope/src/utils/compatibility.js21
-rw-r--r--tools/winscope/src/utils/consts.js43
-rw-r--r--tools/winscope/src/utils/diff.js278
-rw-r--r--tools/winscope/src/utils/names.js81
-rw-r--r--tools/winscope/src/utils/utils.js87
-rw-r--r--tools/winscope/static/favicon.svg134
-rw-r--r--tools/winscope/tsconfig.json22
-rw-r--r--tools/winscope/vue.config.js5
-rw-r--r--tools/winscope/webpack.config.common.js149
-rw-r--r--tools/winscope/webpack.config.dev.js73
-rw-r--r--tools/winscope/webpack.config.js115
-rw-r--r--tools/winscope/webpack.config.prod.js97
-rw-r--r--tools/winscope/webpack.spec.config.js117
-rw-r--r--tools/winscope/yarn.lock7633
-rw-r--r--vendor_snapshot/update.py735
-rw-r--r--vndk/Android.bp4
-rw-r--r--vndk/snapshot/check_gpl_license.py62
-rw-r--r--vndk/snapshot/gen_buildfiles.py276
-rw-r--r--vndk/snapshot/update.py52
-rw-r--r--vndk/snapshot/utils.py21
-rw-r--r--vndk/tools/Android.bp4
-rwxr-xr-xvndk/tools/build_mixed28
-rw-r--r--vndk/tools/definition-tool/datasets/Android.bp9
-rw-r--r--vndk/tools/definition-tool/datasets/vndk-lib-extra-list-31.txt46
-rw-r--r--vndk/tools/definition-tool/datasets/vndk-lib-extra-list-current.txt1
-rwxr-xr-xvndk/tools/definition-tool/vndk_definition_tool.py2
-rw-r--r--vndk/tools/elfcheck/Android.bp49
-rw-r--r--vndk/tools/elfcheck/bpflatten/main.go229
-rwxr-xr-xvndk/tools/elfcheck/fix_android_bp_prebuilt.sh190
-rwxr-xr-xvndk/tools/elfcheck/fix_android_mk_prebuilt.py11
-rw-r--r--vndk/tools/header-checker/Android.bp19
-rw-r--r--vndk/tools/header-checker/Documentation/Development.md3
-rwxr-xr-xvndk/tools/header-checker/android/build-prebuilts.sh1
-rw-r--r--vndk/tools/header-checker/android/envsetup.sh4
-rw-r--r--vndk/tools/header-checker/src/diff/abi_diff.cpp3
-rw-r--r--vndk/tools/header-checker/src/diff/header_abi_diff.cpp2
-rw-r--r--vndk/tools/header-checker/src/diff_merge/merge_abi_diff.cpp150
-rw-r--r--vndk/tools/header-checker/src/dumper/abi_wrappers.cpp31
-rw-r--r--vndk/tools/header-checker/src/dumper/abi_wrappers.h3
-rw-r--r--vndk/tools/header-checker/src/dumper/ast_processing.cpp45
-rw-r--r--vndk/tools/header-checker/src/dumper/ast_util.h7
-rw-r--r--vndk/tools/header-checker/src/dumper/header_checker.cpp80
-rw-r--r--vndk/tools/header-checker/src/dumper/header_checker.h10
-rw-r--r--vndk/tools/header-checker/src/linker/header_abi_linker.cpp131
-rw-r--r--vndk/tools/header-checker/src/linker/module_merger.cpp581
-rw-r--r--vndk/tools/header-checker/src/linker/module_merger.h156
-rw-r--r--vndk/tools/header-checker/src/repr/abi_diff_helpers.h10
-rw-r--r--vndk/tools/header-checker/src/repr/ir_reader.cpp527
-rw-r--r--vndk/tools/header-checker/src/repr/ir_reader.h122
-rw-r--r--vndk/tools/header-checker/src/repr/ir_representation.cpp34
-rw-r--r--vndk/tools/header-checker/src/repr/ir_representation.h38
-rw-r--r--vndk/tools/header-checker/src/repr/json/ir_dumper.cpp7
-rw-r--r--vndk/tools/header-checker/src/repr/json/ir_reader.cpp9
-rw-r--r--vndk/tools/header-checker/src/repr/protobuf/proto/Android.bp4
-rw-r--r--vndk/tools/header-checker/src/repr/symbol/so_file_parser.cpp28
-rw-r--r--vndk/tools/header-checker/src/utils/collect_exported_headers.cpp38
-rw-r--r--vndk/tools/header-checker/src/utils/collect_exported_headers_test.cpp45
-rw-r--r--vndk/tools/header-checker/src/utils/header_abi_util.h11
-rw-r--r--vndk/tools/header-checker/tests/expected/example1.cpp116
-rw-r--r--vndk/tools/header-checker/tests/expected/example1.h142
-rw-r--r--vndk/tools/header-checker/tests/expected/example2.h52
-rw-r--r--vndk/tools/header-checker/tests/expected/example3.h2
-rwxr-xr-xvndk/tools/header-checker/tests/gen_all.py8
-rw-r--r--vndk/tools/header-checker/tests/integration/ifunc/Android.bp (renamed from ndk/Android.bp)17
-rw-r--r--vndk/tools/header-checker/tests/integration/ifunc/ifunc.c5
-rw-r--r--vndk/tools/header-checker/tests/integration/ifunc/map.txt4
-rwxr-xr-xvndk/tools/header-checker/tests/integration/ifunc/prebuilts/libifunc.sobin0 -> 10848 bytes
-rw-r--r--vndk/tools/header-checker/tests/integration/merge_multi_definitions/include/def1.h9
-rw-r--r--vndk/tools/header-checker/tests/integration/merge_multi_definitions/include/def2.h9
-rw-r--r--vndk/tools/header-checker/tests/integration/merge_multi_definitions/map.txt5
-rw-r--r--vndk/tools/header-checker/tests/integration/version_script_example/Android.bp4
-rwxr-xr-xvndk/tools/header-checker/tests/module.py61
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm/known_issues.h.sdump6
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm/libc_and_cpp.so.lsdump20
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm/libc_and_cpp_with_unused_struct.so.lsdump22
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_add_function.so.lsdump36
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_add_function_sybmol_only.so.lsdump34
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_add_global_variable.so.lsdump36
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_change_function_access.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_change_member_access.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_enum_diff.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_enum_extended.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_inheritance_type_changed.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_json.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_member_cv_diff.so.lsdump34
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_member_diff.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_member_fake_diff.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_member_integral_type_diff.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_member_name_changed.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_parameter_type_diff.so.lsdump34
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_return_type_diff.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_unreferenced_elf_symbol_removed.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_vtable_diff.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm/libifunc.so.lsdump24
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm/libpure_virtual_function.so.lsdump8
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm/libreproducability.so.lsdump2
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm/undeclared_types.h.sdump20
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm64/known_issues.h.sdump6
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm64/libanonymous_enum_odr.so.lsdump28
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm64/libc_and_cpp.so.lsdump20
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm64/libc_and_cpp_with_unused_struct.so.lsdump22
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_anonymous_enum.so.lsdump16
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_add_function.so.lsdump36
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_add_function_sybmol_only.so.lsdump34
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_add_global_variable.so.lsdump36
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_change_function_access.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_change_member_access.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_enum_diff.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_enum_extended.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_inheritance_type_changed.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_json.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_member_cv_diff.so.lsdump34
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_member_diff.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_member_fake_diff.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_member_integral_type_diff.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_member_name_changed.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_parameter_type_diff.so.lsdump34
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_return_type_diff.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_unreferenced_elf_symbol_removed.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_vtable_diff.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm64/libifunc.so.lsdump24
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm64/libmerge_multi_definitions.so.lsdump169
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm64/libpure_virtual_function.so.lsdump8
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm64/libreproducability.so.lsdump2
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm64/libversion_script_example.so.lsdump16
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm64/libversion_script_example_no_mytag.so.lsdump12
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm64/libversion_script_example_no_private.so.lsdump12
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm64/libweak_symbols_old.so.lsdump2
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/arm64/undeclared_types.h.sdump20
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips/known_issues.h.sdump6
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips/libc_and_cpp.so.lsdump20
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips/libc_and_cpp_with_unused_struct.so.lsdump22
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_add_function.so.lsdump36
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_add_function_sybmol_only.so.lsdump34
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_add_global_variable.so.lsdump36
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_change_function_access.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_change_member_access.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_enum_diff.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_enum_extended.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_inheritance_type_changed.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_json.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_member_cv_diff.so.lsdump34
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_member_diff.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_member_fake_diff.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_member_integral_type_diff.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_member_name_changed.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_parameter_type_diff.so.lsdump34
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_return_type_diff.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_unreferenced_elf_symbol_removed.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_vtable_diff.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips/libifunc.so.lsdump24
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips/libpure_virtual_function.so.lsdump8
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips/libreproducability.so.lsdump2
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips/undeclared_types.h.sdump20
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips64/known_issues.h.sdump6
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips64/libc_and_cpp.so.lsdump20
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips64/libc_and_cpp_with_unused_struct.so.lsdump22
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_add_function.so.lsdump36
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_add_function_sybmol_only.so.lsdump34
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_add_global_variable.so.lsdump36
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_change_function_access.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_change_member_access.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_enum_diff.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_enum_extended.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_inheritance_type_changed.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_json.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_member_cv_diff.so.lsdump34
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_member_diff.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_member_fake_diff.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_member_integral_type_diff.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_member_name_changed.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_parameter_type_diff.so.lsdump34
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_return_type_diff.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_unreferenced_elf_symbol_removed.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_vtable_diff.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips64/libifunc.so.lsdump24
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips64/libpure_virtual_function.so.lsdump8
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips64/libreproducability.so.lsdump2
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/mips64/undeclared_types.h.sdump20
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86/known_issues.h.sdump6
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86/libc_and_cpp.so.lsdump20
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86/libc_and_cpp_with_unused_struct.so.lsdump22
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_add_function.so.lsdump36
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_add_function_sybmol_only.so.lsdump34
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_add_global_variable.so.lsdump36
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_change_function_access.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_change_member_access.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_enum_diff.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_enum_extended.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_inheritance_type_changed.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_json.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_member_cv_diff.so.lsdump34
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_member_diff.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_member_fake_diff.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_member_integral_type_diff.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_member_name_changed.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_parameter_type_diff.so.lsdump34
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_return_type_diff.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_unreferenced_elf_symbol_removed.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_vtable_diff.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86/libifunc.so.lsdump24
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86/libpure_virtual_function.so.lsdump8
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86/libreproducability.so.lsdump2
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86/undeclared_types.h.sdump20
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86_64/known_issues.h.sdump6
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86_64/libc_and_cpp.so.lsdump20
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86_64/libc_and_cpp_with_unused_struct.so.lsdump22
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_add_function.so.lsdump36
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_add_function_sybmol_only.so.lsdump34
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_add_global_variable.so.lsdump36
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_change_function_access.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_change_member_access.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_enum_diff.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_enum_extended.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_inheritance_type_changed.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_json.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_member_cv_diff.so.lsdump34
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_member_diff.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_member_fake_diff.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_member_integral_type_diff.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_member_name_changed.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_parameter_type_diff.so.lsdump34
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_return_type_diff.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_unreferenced_elf_symbol_removed.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_vtable_diff.so.lsdump32
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86_64/libifunc.so.lsdump24
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86_64/libpure_virtual_function.so.lsdump8
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86_64/libreproducability.so.lsdump2
-rw-r--r--vndk/tools/header-checker/tests/reference_dumps/x86_64/undeclared_types.h.sdump20
-rwxr-xr-xvndk/tools/header-checker/tests/test.py52
-rwxr-xr-xvndk/tools/header-checker/utils/create_reference_dumps.py3
-rw-r--r--vndk/tools/header-checker/utils/utils.py74
-rw-r--r--vndk/tools/image-diff-tool/Android.bp4
-rw-r--r--vndk/tools/image-diff-tool/allowlist.txt (renamed from vndk/tools/image-diff-tool/whitelist.txt)1
-rwxr-xr-xvndk/tools/image-diff-tool/compare_images_and_print.sh16
-rw-r--r--vndk/tools/image-diff-tool/diff.py214
-rwxr-xr-xvndk/tools/sourcedr/blueprint/blueprint.py4
637 files changed, 30144 insertions, 11714 deletions
diff --git a/Android.bp b/Android.bp
new file mode 100644
index 000000000..f3c8764bb
--- /dev/null
+++ b/Android.bp
@@ -0,0 +1,48 @@
+//
+// Copyright (C) 2021 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package {
+ default_applicable_licenses: ["development_license"],
+}
+
+// Added automatically by a large-scale-change that took the approach of
+// 'apply every license found to every target'. While this makes sure we respect
+// every license restriction, it may not be entirely correct.
+//
+// e.g. GPL in an MIT project might only apply to the contrib/ directory.
+//
+// Please consider splitting the single license below into multiple licenses,
+// taking care not to lose any license_kind information, and overriding the
+// default license using the 'licenses: [...]' property on targets as needed.
+//
+// For unused files, consider creating a 'fileGroup' with "//visibility:private"
+// to attach the license to, and including a comment whether the files may be
+// used in the current project.
+// See: http://go/android-license-faq
+license {
+ name: "development_license",
+ visibility: [":__subpackages__"],
+ license_kinds: [
+ "SPDX-license-identifier-Apache-2.0",
+ "SPDX-license-identifier-BSD",
+ "SPDX-license-identifier-CPL-1.0",
+ "SPDX-license-identifier-MIT",
+ "SPDX-license-identifier-Unicode-DFS",
+ "SPDX-license-identifier-W3C",
+ "legacy_restricted",
+ "legacy_unencumbered",
+ ],
+ // large-scale-change unable to identify any license_text files
+}
diff --git a/METADATA b/METADATA
new file mode 100644
index 000000000..0777ece64
--- /dev/null
+++ b/METADATA
@@ -0,0 +1,5 @@
+third_party {
+ # would be NOTICE save for the CC-BY-SA in
+ # samples/browseable/XYZTouristAttractions/Application/src/com.example.android.xyztouristattractions/provider/TouristAttractions.java
+ license_type: RESTRICTED
+}
diff --git a/apps/BluetoothDebug/Android.bp b/apps/BluetoothDebug/Android.bp
index 9ab3d7adb..8033a29b4 100644
--- a/apps/BluetoothDebug/Android.bp
+++ b/apps/BluetoothDebug/Android.bp
@@ -1,3 +1,20 @@
+package {
+ default_applicable_licenses: ["development_apps_BluetoothDebug_license"],
+}
+
+// Added automatically by a large-scale-change
+// See: http://go/android-license-faq
+license {
+ name: "development_apps_BluetoothDebug_license",
+ visibility: [":__subpackages__"],
+ license_kinds: [
+ "SPDX-license-identifier-Apache-2.0",
+ ],
+ license_text: [
+ "NOTICE",
+ ],
+}
+
android_app {
name: "BluetoothDebug",
srcs: ["**/*.java"],
diff --git a/apps/BuildWidget/Android.bp b/apps/BuildWidget/Android.bp
index 32e84cd3a..af3b50289 100644
--- a/apps/BuildWidget/Android.bp
+++ b/apps/BuildWidget/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_test {
name: "BuildWidget",
// Only compile source java files in this apk.
diff --git a/apps/CustomLocale/Android.bp b/apps/CustomLocale/Android.bp
index bd6e462ab..f48e403cd 100644
--- a/apps/CustomLocale/Android.bp
+++ b/apps/CustomLocale/Android.bp
@@ -1,3 +1,20 @@
+package {
+ default_applicable_licenses: ["development_apps_CustomLocale_license"],
+}
+
+// Added automatically by a large-scale-change
+// See: http://go/android-license-faq
+license {
+ name: "development_apps_CustomLocale_license",
+ visibility: [":__subpackages__"],
+ license_kinds: [
+ "SPDX-license-identifier-Apache-2.0",
+ ],
+ license_text: [
+ "NOTICE",
+ ],
+}
+
android_app {
name: "CustomLocale",
srcs: ["**/*.java"],
diff --git a/apps/Development/Android.mk b/apps/Development/Android.mk
index f414eb886..3db6cc326 100644
--- a/apps/Development/Android.mk
+++ b/apps/Development/Android.mk
@@ -5,10 +5,16 @@ LOCAL_MODULE_TAGS := optional
LOCAL_JAVA_LIBRARIES := android.test.runner.stubs telephony-common org.apache.http.legacy
+LOCAL_USES_LIBRARIES := android.test.runner
+LOCAL_OPTIONAL_USES_LIBRARIES := org.apache.http.legacy android.test.base android.test.mock
+
LOCAL_SRC_FILES := $(call all-subdir-java-files) \
src/com/android/development/IRemoteService.aidl \
LOCAL_PACKAGE_NAME := Development
+LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
+LOCAL_LICENSE_CONDITIONS := notice
+LOCAL_NOTICE_FILE := $(LOCAL_PATH)/NOTICE
LOCAL_PRIVATE_PLATFORM_APIS := true
LOCAL_CERTIFICATE := platform
diff --git a/apps/Development/AndroidManifest.xml b/apps/Development/AndroidManifest.xml
index 2d5e4b304..c5133a538 100644
--- a/apps/Development/AndroidManifest.xml
+++ b/apps/Development/AndroidManifest.xml
@@ -54,28 +54,32 @@
<uses-library android:name="android.test.runner" />
<activity android:name="Development" android:label="Dev Tools"
- android:icon="@mipmap/ic_launcher_devtools">
+ android:icon="@mipmap/ic_launcher_devtools" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
- <activity android:name="PackageBrowser" android:label="Package Browser">
+ <activity android:name="PackageBrowser" android:label="Package Browser"
+ android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.TEST" />
</intent-filter>
</activity>
- <activity android:name="PackageSummary" android:label="Package Summary">
+ <activity android:name="PackageSummary" android:label="Package Summary"
+ android:exported="true">
</activity>
- <activity android:name="ShowActivity" android:label="Activity Detail">
+ <activity android:name="ShowActivity" android:label="Activity Detail"
+ android:exported="true">
</activity>
<activity android:name="AppPicker"
- android:theme="@android:style/Theme.Dialog">
+ android:theme="@android:style/Theme.Dialog" android:exported="true">
</activity>
<activity android:name="PointerLocation" android:label="Pointer Location"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
- android:configChanges="keyboard|keyboardHidden|navigation|orientation">
+ android:configChanges="keyboard|keyboardHidden|navigation|orientation"
+ android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.TEST" />
@@ -83,39 +87,42 @@
</activity>
<activity android:name="AccountsTester" android:label="AccountsTester"
- android:windowSoftInputMode="stateHidden">
+ android:windowSoftInputMode="stateHidden" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.TEST" />
</intent-filter>
</activity>
- <activity android:name="SyncAdapterDriver" android:label="Sync Tester">
+ <activity android:name="SyncAdapterDriver" android:label="Sync Tester"
+ android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.TEST" />
</intent-filter>
</activity>
- <activity android:name="DataList">
+ <activity android:name="DataList" android:exported="true">
</activity>
- <activity android:name="Details">
+ <activity android:name="Details" android:exported="true">
</activity>
- <activity android:name="Connectivity" android:label="Connectivity" >
+ <activity android:name="Connectivity" android:label="Connectivity" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.TEST" />
</intent-filter>
</activity>
- <activity android:name="InstrumentationList" android:label="Instrumentation">
+ <activity android:name="InstrumentationList" android:label="Instrumentation"
+ android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.TEST" />
</intent-filter>
</activity>
- <activity android:name="MediaScannerActivity" android:label="Media Provider">
+ <activity android:name="MediaScannerActivity" android:label="Media Provider"
+ android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.TEST" />
@@ -131,13 +138,15 @@
</activity>
-->
- <activity android:name="RunningProcesses" android:label="Running processes">
+ <activity android:name="RunningProcesses" android:label="Running processes"
+ android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.TEST" />
</intent-filter>
</activity>
- <activity android:name="ProcessInfo" android:label="Process Information">
+ <activity android:name="ProcessInfo" android:label="Process Information"
+ android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
@@ -151,40 +160,44 @@
</intent-filter>
</activity>
-->
- <activity android:name="AppHwPref" android:label="Applications Hardware Preferences">
+ <activity android:name="AppHwPref" android:label="Applications Hardware Preferences"
+ android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
- <activity android:name="PermissionDetails" android:label="Permission Info">
+ <activity android:name="PermissionDetails" android:label="Permission Info"
+ android:exported="true">
<intent-filter>
<action android:name="com.android.development.VIEW_PERMISSION" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
- <activity android:name="BadBehaviorActivity" android:label="Bad Behavior">
+ <activity android:name="BadBehaviorActivity" android:label="Bad Behavior"
+ android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.TEST" />
</intent-filter>
</activity>
- <receiver android:name="BadBehaviorActivity$BadReceiver">
+ <receiver android:name="BadBehaviorActivity$BadReceiver" android:exported="true">
<intent-filter>
<action android:name="com.android.development.BAD_BEHAVIOR" />
</intent-filter>
</receiver>
<service android:name="BadBehaviorActivity$BadService" />
- <activity android:name="CacheAbuser" android:label="Cache Abuser">
+ <activity android:name="CacheAbuser" android:label="Cache Abuser" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.TEST" />
</intent-filter>
</activity>
- <activity android:name="ConfigurationViewer" android:label="Configuration">
+ <activity android:name="ConfigurationViewer" android:label="Configuration"
+ android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.TEST" />
diff --git a/apps/Development/src/com/android/development/Connectivity.java b/apps/Development/src/com/android/development/Connectivity.java
index 664961046..886cb1d4d 100644
--- a/apps/Development/src/com/android/development/Connectivity.java
+++ b/apps/Development/src/com/android/development/Connectivity.java
@@ -33,7 +33,6 @@ import android.net.LinkProperties;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.NetworkRequest;
-import android.net.NetworkUtils;
import android.net.RouteInfo;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiManager;
@@ -85,7 +84,6 @@ import java.util.List;
import java.util.Random;
import static android.net.ConnectivityManager.CONNECTIVITY_ACTION;
-import static android.net.ConnectivityManager.INET_CONDITION_ACTION;
import static android.net.NetworkCapabilities.*;
public class Connectivity extends Activity {
@@ -280,28 +278,24 @@ public class Connectivity extends Activity {
private static class DevToolsNetworkCallback extends NetworkCallback {
private static final String TAG = "DevToolsNetworkCallback";
- public void onPreCheck(Network network) {
- Log.d(TAG, "onPreCheck: " + network.netId);
- }
-
public void onAvailable(Network network) {
- Log.d(TAG, "onAvailable: " + network.netId);
+ Log.d(TAG, "onAvailable: " + network);
}
public void onCapabilitiesChanged(Network network, NetworkCapabilities nc) {
- Log.d(TAG, "onCapabilitiesChanged: " + network.netId + " " + nc.toString());
+ Log.d(TAG, "onCapabilitiesChanged: " + network + " " + nc.toString());
}
public void onLinkPropertiesChanged(Network network, LinkProperties lp) {
- Log.d(TAG, "onLinkPropertiesChanged: " + network.netId + " " + lp.toString());
+ Log.d(TAG, "onLinkPropertiesChanged: " + network + " " + lp.toString());
}
public void onLosing(Network network, int maxMsToLive) {
- Log.d(TAG, "onLosing: " + network.netId + " " + maxMsToLive);
+ Log.d(TAG, "onLosing: " + network + " " + maxMsToLive);
}
public void onLost(Network network) {
- Log.d(TAG, "onLost: " + network.netId);
+ Log.d(TAG, "onLost: " + network);
}
}
private DevToolsNetworkCallback mCallback;
@@ -484,7 +478,6 @@ public class Connectivity extends Activity {
IntentFilter broadcastFilter = new IntentFilter();
broadcastFilter.addAction(CONNECTIVITY_ACTION);
broadcastFilter.addAction(CONNECTIVITY_TEST_ALARM);
- broadcastFilter.addAction(INET_CONDITION_ACTION);
broadcastFilter.addAction(NETWORK_CONDITIONS_MEASURED);
registerReceiver(mReceiver, broadcastFilter);
diff --git a/apps/DevelopmentSettings/Android.bp b/apps/DevelopmentSettings/Android.bp
index ab19383c3..5743b398c 100644
--- a/apps/DevelopmentSettings/Android.bp
+++ b/apps/DevelopmentSettings/Android.bp
@@ -1,3 +1,22 @@
+package {
+ default_applicable_licenses: [
+ "development_apps_DevelopmentSettings_license",
+ ],
+}
+
+// Added automatically by a large-scale-change
+// See: http://go/android-license-faq
+license {
+ name: "development_apps_DevelopmentSettings_license",
+ visibility: [":__subpackages__"],
+ license_kinds: [
+ "SPDX-license-identifier-Apache-2.0",
+ ],
+ license_text: [
+ "NOTICE",
+ ],
+}
+
android_app {
name: "DevelopmentSettings",
sdk_version: "current",
diff --git a/apps/DumpViewer/app/src/main/Android.mk b/apps/DumpViewer/app/src/main/Android.mk
index c38fe9381..92c0c296e 100644
--- a/apps/DumpViewer/app/src/main/Android.mk
+++ b/apps/DumpViewer/app/src/main/Android.mk
@@ -25,6 +25,8 @@ LOCAL_STATIC_ANDROID_LIBRARIES := \
androidx.recyclerview_recyclerview
LOCAL_PACKAGE_NAME := DumpViewer
+LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
+LOCAL_LICENSE_CONDITIONS := notice
LOCAL_SDK_VERSION := 26
include $(BUILD_PACKAGE)
diff --git a/apps/Fallback/Android.bp b/apps/Fallback/Android.bp
index 7107ec8cb..516f7cf0e 100644
--- a/apps/Fallback/Android.bp
+++ b/apps/Fallback/Android.bp
@@ -1,3 +1,20 @@
+package {
+ default_applicable_licenses: ["development_apps_Fallback_license"],
+}
+
+// Added automatically by a large-scale-change
+// See: http://go/android-license-faq
+license {
+ name: "development_apps_Fallback_license",
+ visibility: [":__subpackages__"],
+ license_kinds: [
+ "SPDX-license-identifier-Apache-2.0",
+ ],
+ license_text: [
+ "NOTICE",
+ ],
+}
+
android_app {
name: "Fallback",
srcs: ["**/*.java"],
diff --git a/apps/GestureBuilder/Android.bp b/apps/GestureBuilder/Android.bp
index b7f2cb768..6cea312ee 100644
--- a/apps/GestureBuilder/Android.bp
+++ b/apps/GestureBuilder/Android.bp
@@ -14,6 +14,23 @@
// limitations under the License.
//
+package {
+ default_applicable_licenses: ["development_apps_GestureBuilder_license"],
+}
+
+// Added automatically by a large-scale-change
+// See: http://go/android-license-faq
+license {
+ name: "development_apps_GestureBuilder_license",
+ visibility: [":__subpackages__"],
+ license_kinds: [
+ "SPDX-license-identifier-Apache-2.0",
+ ],
+ license_text: [
+ "NOTICE",
+ ],
+}
+
android_test {
name: "GestureBuilder",
srcs: ["**/*.java"],
diff --git a/apps/GestureBuilder/res/values/strings.xml b/apps/GestureBuilder/res/values/strings.xml
index fba09c40e..ea1b40d5f 100644
--- a/apps/GestureBuilder/res/values/strings.xml
+++ b/apps/GestureBuilder/res/values/strings.xml
@@ -40,7 +40,7 @@
<skip />
<!-- Label, prompt asking the user to enter the name of the gesture -->
<string name="prompt_gesture_name">Name</string>
- <!-- Error message, informs the user he needs to enter a name before saving a gesture -->
+ <!-- Error message, informs the user they need to enter a name before saving a gesture -->
<string name="error_missing_name">You must enter a name</string>
<!-- success message, tells the user where the gesture was saved -->
<string name="save_success">Gesture saved in %s</string>
diff --git a/apps/NinePatchLab/Android.bp b/apps/NinePatchLab/Android.bp
index 57e550978..baaf2631a 100644
--- a/apps/NinePatchLab/Android.bp
+++ b/apps/NinePatchLab/Android.bp
@@ -1,3 +1,20 @@
+package {
+ default_applicable_licenses: ["development_apps_NinePatchLab_license"],
+}
+
+// Added automatically by a large-scale-change
+// See: http://go/android-license-faq
+license {
+ name: "development_apps_NinePatchLab_license",
+ visibility: [":__subpackages__"],
+ license_kinds: [
+ "SPDX-license-identifier-Apache-2.0",
+ ],
+ license_text: [
+ "NOTICE",
+ ],
+}
+
android_test {
name: "NinePatchLab",
srcs: ["**/*.java"],
diff --git a/apps/PushApiAuthenticator/Android.bp b/apps/PushApiAuthenticator/Android.bp
index edab9a1a7..48ffea03a 100644
--- a/apps/PushApiAuthenticator/Android.bp
+++ b/apps/PushApiAuthenticator/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app_certificate {
name: "development_apps_pushapiauthenticator",
certificate: "cert",
diff --git a/apps/PushApiTestAppOne/Android.bp b/apps/PushApiTestAppOne/Android.bp
index b74fcef6d..d4fda4f0e 100644
--- a/apps/PushApiTestAppOne/Android.bp
+++ b/apps/PushApiTestAppOne/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app_certificate {
name: "development_apps_pushapitestappone_cert",
certificate: "cert",
diff --git a/apps/PushApiTestAppTwo/Android.bp b/apps/PushApiTestAppTwo/Android.bp
index b1ce9c4ac..5d37a44d3 100644
--- a/apps/PushApiTestAppTwo/Android.bp
+++ b/apps/PushApiTestAppTwo/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app_certificate {
name: "development_apps_pushapitestapptwo_cert",
certificate: "cert",
diff --git a/apps/SdkSetup/Android.bp b/apps/SdkSetup/Android.bp
index ac45411e3..4c8d2307b 100644
--- a/apps/SdkSetup/Android.bp
+++ b/apps/SdkSetup/Android.bp
@@ -1,3 +1,20 @@
+package {
+ default_applicable_licenses: ["development_apps_SdkSetup_license"],
+}
+
+// Added automatically by a large-scale-change
+// See: http://go/android-license-faq
+license {
+ name: "development_apps_SdkSetup_license",
+ visibility: [":__subpackages__"],
+ license_kinds: [
+ "SPDX-license-identifier-Apache-2.0",
+ ],
+ license_text: [
+ "NOTICE",
+ ],
+}
+
android_app {
name: "SdkSetup",
privileged: true,
@@ -17,4 +34,4 @@ prebuilt_etc {
sub_dir: "permissions",
src: "com.android.sdksetup.xml",
filename_from_src: true,
-} \ No newline at end of file
+}
diff --git a/apps/SdkSetup/AndroidManifest.xml b/apps/SdkSetup/AndroidManifest.xml
index 76ef9ff31..66cca2256 100644
--- a/apps/SdkSetup/AndroidManifest.xml
+++ b/apps/SdkSetup/AndroidManifest.xml
@@ -25,9 +25,11 @@
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_SYSTEM_SETTINGS" />
<uses-permission android:name="android.permission.SET_KEYBOARD_LAYOUT" />
+ <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<application>
<activity android:name="DefaultActivity"
android:excludeFromRecents="true">
+ android:exported="true">
<intent-filter android:priority="3">
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.HOME" />
diff --git a/apps/SdkSetup/src/com/android/sdksetup/DefaultActivity.java b/apps/SdkSetup/src/com/android/sdksetup/DefaultActivity.java
index d2062f0e4..4d6bf6b7d 100644
--- a/apps/SdkSetup/src/com/android/sdksetup/DefaultActivity.java
+++ b/apps/SdkSetup/src/com/android/sdksetup/DefaultActivity.java
@@ -23,6 +23,8 @@ import android.content.pm.PackageManager;
import android.hardware.input.InputManager;
import android.hardware.input.KeyboardLayout;
import android.location.LocationManager;
+import android.net.wifi.WifiManager;
+import android.net.wifi.WifiConfiguration;
import android.provider.Settings;
import android.os.Bundle;
import android.os.RemoteException;
@@ -30,6 +32,7 @@ import android.os.ServiceManager;
import android.os.SystemProperties;
import android.os.Build;
import android.telephony.TelephonyManager;
+import android.util.Log;
import android.view.InputDevice;
/**
@@ -37,7 +40,8 @@ import android.view.InputDevice;
*
*/
public class DefaultActivity extends Activity {
-
+ private static final String TAG = "SdkSetup";
+ private static final int ADD_NETWORK_FAIL = -1;
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
@@ -45,7 +49,8 @@ public class DefaultActivity extends Activity {
// Edit Settings only for Emulator
if (Build.IS_EMULATOR) {
// Set physical keyboard layout based on the system property set by emulator host.
- String layoutName = SystemProperties.get("qemu.keyboard_layout");
+ String layoutName = SystemProperties.get("vendor.qemu.keyboard_layout");
+ String displaySettingsName = SystemProperties.get("ro.boot.qemu.display.settings.xml");
String deviceName = "qwerty2";
InputDevice device = getKeyboardDevice(deviceName);
if (device != null && !layoutName.isEmpty()) {
@@ -69,10 +74,28 @@ public class DefaultActivity extends Activity {
Settings.Global.putInt(getContentResolver(), Settings.Global.ADB_ENABLED, 1);
+ // Disable offload wifi tethering
+ Settings.Global.putInt(getContentResolver(), Settings.Global.TETHER_OFFLOAD_DISABLED, 1);
+
TelephonyManager mTelephony = getApplicationContext().getSystemService(TelephonyManager.class);
mTelephony.setPreferredNetworkTypeBitmask(TelephonyManager.NETWORK_TYPE_BITMASK_NR);
+ if ("freeform".equals(displaySettingsName)) {
+ Settings.Global.putInt(getContentResolver(), "sf", 1);
+ Settings.Global.putString(getContentResolver(), Settings.Global.DEVELOPMENT_ENABLE_FREEFORM_WINDOWS_SUPPORT, "1");
+ Settings.Global.putString(getContentResolver(), Settings.Global.DEVELOPMENT_FORCE_RESIZABLE_ACTIVITIES, "1");
+ Settings.Global.putString(getContentResolver(), Settings.Global.DEVELOPMENT_WM_DISPLAY_SETTINGS_PATH, "vendor/etc/display_settings_freeform.xml");
+ }
}
+ // Add network with SSID "AndroidWifi"
+ WifiConfiguration config = new WifiConfiguration();
+ config.SSID = "\"AndroidWifi\"";
+ config.setSecurityParams(WifiConfiguration.SECURITY_TYPE_OPEN);
+ WifiManager mWifiManager = getApplicationContext().getSystemService(WifiManager.class);
+ int netId = mWifiManager.addNetwork(config);
+ if (netId == ADD_NETWORK_FAIL || mWifiManager.enableNetwork(netId, true)) {
+ Log.e(TAG, "Unable to add Wi-Fi network AndroidWifi.");
+ }
// remove this activity from the package manager.
PackageManager pm = getPackageManager();
ComponentName name = new ComponentName(this, DefaultActivity.class);
diff --git a/apps/SettingInjectorSample/Android.bp b/apps/SettingInjectorSample/Android.bp
index 33cb42e43..d70ee0209 100644
--- a/apps/SettingInjectorSample/Android.bp
+++ b/apps/SettingInjectorSample/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_test {
name: "SettingInjectorSample",
// Only compile source java files in this apk.
diff --git a/apps/WidgetPreview/Android.bp b/apps/WidgetPreview/Android.bp
index 080080f92..65fa278f2 100644
--- a/apps/WidgetPreview/Android.bp
+++ b/apps/WidgetPreview/Android.bp
@@ -14,6 +14,10 @@
// limitations under the License.
//
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "WidgetPreview",
srcs: ["**/*.java"],
diff --git a/apps/launchperf/Android.bp b/apps/launchperf/Android.bp
index 861980bd8..cc19f4bc1 100644
--- a/apps/launchperf/Android.bp
+++ b/apps/launchperf/Android.bp
@@ -1,3 +1,20 @@
+package {
+ default_applicable_licenses: ["development_apps_launchperf_license"],
+}
+
+// Added automatically by a large-scale-change
+// See: http://go/android-license-faq
+license {
+ name: "development_apps_launchperf_license",
+ visibility: [":__subpackages__"],
+ license_kinds: [
+ "SPDX-license-identifier-Apache-2.0",
+ ],
+ license_text: [
+ "NOTICE",
+ ],
+}
+
android_test {
name: "launchperf",
srcs: ["**/*.java"],
diff --git a/build/Android.mk b/build/Android.mk
index 8e361e982..441363847 100644
--- a/build/Android.mk
+++ b/build/Android.mk
@@ -58,10 +58,7 @@ $(sample_props) : $(HOST_OUT)/development/samples/%_source.properties : $(TOPDIR
# ===== SDK jar file of stubs =====
# A.k.a the "current" version of the public SDK (android.jar inside the SDK package).
full_target := $(call intermediates-dir-for,JAVA_LIBRARIES,android_stubs_current,,COMMON)/classes.jar
-full_src_target := $(OUT_DOCS)/api-stubs-docs-stubs.srcjar
-
-.PHONY: android_stubs
-android_stubs: $(full_target) $(full_src_target)
+full_src_target := $(call intermediates-dir-for,ETC,frameworks-base-api-current.srcjar)/frameworks-base-api-current.srcjar
# android.jar is what we put in the SDK package.
android_jar_intermediates := $(call intermediates-dir-for,PACKAGING,android_jar,,COMMON)
@@ -128,39 +125,3 @@ $(call dist-for-goals,sdk win_sdk,$(full_target):data/annotations.zip)
# ============ SDK AIDL ============
$(eval $(call copy-one-file,$(FRAMEWORK_AIDL),$(TARGET_OUT_COMMON_INTERMEDIATES)/PACKAGING/framework.aidl))
ALL_SDK_FILES += $(TARGET_OUT_COMMON_INTERMEDIATES)/PACKAGING/framework.aidl
-
-# ============ System SDK ============
-full_target := $(call intermediates-dir-for,JAVA_LIBRARIES,android_system_stubs_current,,COMMON)/classes.jar
-
-.PHONY: android_system_stubs
-android_system_stubs: $(full_target)
-
-# Build and store the android_system.jar.
-$(call dist-for-goals,sdk win_sdk,$(full_target):android_system.jar)
-$(call dist-for-goals,sdk win_sdk,$(full_target):apistubs/android/system/android.jar)
-
-# ============ Test SDK ============
-full_target := $(call intermediates-dir-for,JAVA_LIBRARIES,android_test_stubs_current,,COMMON)/classes.jar
-
-.PHONY: android_test_stubs
-android_test_stubs: $(full_target)
-
-# Build and store the android_test.jar.
-$(call dist-for-goals,sdk win_sdk,$(full_target):android_test.jar)
-$(call dist-for-goals,sdk win_sdk,$(full_target):apistubs/android/test/android.jar)
-
-# ============ Module Lib SDK ============
-full_target := $(call intermediates-dir-for,JAVA_LIBRARIES,android_module_lib_stubs_current,,COMMON)/classes.jar
-
-.PHONY: android_module_lib_stubs
-android_module_lib_stubs: $(full_target)
-
-$(call dist-for-goals,sdk win_sdk,$(full_target):apistubs/android/module-lib/android.jar)
-
-# ============ System server SDK ============
-full_target := $(call intermediates-dir-for,JAVA_LIBRARIES,android_system_server_stubs_current,,COMMON)/classes.jar
-
-.PHONY: android_system_server_stubs
-android_system_server_stubs: $(full_target)
-
-$(call dist-for-goals,sdk win_sdk,$(full_target):apistubs/android/system-server/android.jar)
diff --git a/build/sdk-android-arm64-v8a.atree b/build/sdk-android-arm64-v8a.atree
index 5cf331b2d..feaca42f6 100644
--- a/build/sdk-android-arm64-v8a.atree
+++ b/build/sdk-android-arm64-v8a.atree
@@ -14,7 +14,8 @@
# limitations under the License.
#
-prebuilts/qemu-kernel/${TARGET_ARCH}/4.4/kernel-qemu2 system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/kernel-ranchu
+kernel/prebuilts/5.10/arm64/kernel-5.10-gz system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/kernel-ranchu
+device/generic/goldfish/data/etc/encryptionkey.img system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/encryptionkey.img
# version files for the SDK updater, from development.git
${HOST_OUT}/development/sys-img-${TARGET_CPU_ABI}/images_arm64-v8a_source.properties system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/source.properties
diff --git a/build/sdk-android-x86.atree b/build/sdk-android-x86.atree
index 913fce0b8..02b82fec1 100644
--- a/build/sdk-android-x86.atree
+++ b/build/sdk-android-x86.atree
@@ -14,7 +14,7 @@
# limitations under the License.
#
-prebuilts/qemu-kernel/x86_64/5.4/kernel-qemu2 system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/kernel-ranchu-64
+kernel/prebuilts/5.10/x86_64/kernel-5.10 system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/kernel-ranchu-64
device/generic/goldfish/data/etc/encryptionkey.img system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/encryptionkey.img
# version files for the SDK updater, from development.git
diff --git a/build/sdk-android-x86_64.atree b/build/sdk-android-x86_64.atree
index 0b2202ed1..7672c0079 100644
--- a/build/sdk-android-x86_64.atree
+++ b/build/sdk-android-x86_64.atree
@@ -14,7 +14,7 @@
# limitations under the License.
#
-prebuilts/qemu-kernel/${TARGET_ARCH}/5.4/kernel-qemu2 system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/kernel-ranchu
+kernel/prebuilts/5.10/x86_64/kernel-5.10 system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/kernel-ranchu
device/generic/goldfish/data/etc/encryptionkey.img system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/encryptionkey.img
# version files for the SDK updater, from development.git
diff --git a/build/sdk-windows-x86.atree b/build/sdk-windows-x86.atree
index 043ae1a2b..f59ec34a0 100644
--- a/build/sdk-windows-x86.atree
+++ b/build/sdk-windows-x86.atree
@@ -41,7 +41,13 @@ bin/mke2fs.exe strip platform-tools/mke2fs.exe
rm platform-tools/sload_f2fs
rm platform-tools/make_f2fs
+rm platform-tools/make_f2fs_casefold
+
+# libc++.so not needed on Windows, and that's the only thing here
+rm platform-tools/lib64
+
bin/make_f2fs.exe strip platform-tools/make_f2fs.exe
+bin/make_f2fs_casefold.exe strip platform-tools/make_f2fs_casefold.exe
lib/AdbWinUsbApi.dll platform-tools/AdbWinUsbApi.dll
lib/AdbWinApi.dll platform-tools/AdbWinApi.dll
@@ -80,6 +86,12 @@ bin/aapt2.exe strip build-tools/${PLATFORM_NAME}/aapt2
rm build-tools/${PLATFORM_NAME}/lib64/libaapt2_jni.so
lib/libaapt2_jni.dll strip build-tools/${PLATFORM_NAME}/libaapt2_jni.dll
+# Also include a 64-bit version of libaapt2_jni.dll for use by 64-bit JVMs.
+lib64/libaapt2_jni.dll strip build-tools/${PLATFORM_NAME}/lib64/libaapt2_jni.dll
+
+# Also include the 64-bit libwinpthread-1.dll needed by libaapt2_jni.dll.
+prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8/x86_64-w64-mingw32/bin/libwinpthread-1.dll strip build-tools/${PLATFORM_NAME}/lib64/libwinpthread-1.dll
+
rm build-tools/${PLATFORM_NAME}/split-select
bin/split-select.exe strip build-tools/${PLATFORM_NAME}/split-select.exe
@@ -92,8 +104,6 @@ tools/apksig/etc/apksigner.bat build-tools/${PLATFORM_NAME}/apksi
rm build-tools/${PLATFORM_NAME}/zipalign
bin/zipalign.exe strip build-tools/${PLATFORM_NAME}/zipalign.exe
-rm build-tools/${PLATFORM_NAME}/dx
-dalvik/dx/etc/dx.bat build-tools/${PLATFORM_NAME}/dx.bat
rm build-tools/${PLATFORM_NAME}/dexdump
bin/dexdump.exe strip build-tools/${PLATFORM_NAME}/dexdump.exe
diff --git a/build/sdk.atree b/build/sdk.atree
index 8fb30d53d..b6d8e257d 100644
--- a/build/sdk.atree
+++ b/build/sdk.atree
@@ -43,6 +43,7 @@ bin/mke2fs strip platform-tools/mke2fs
bin/mke2fs.conf platform-tools/mke2fs.conf
bin/e2fsdroid strip platform-tools/e2fsdroid
bin/make_f2fs strip platform-tools/make_f2fs
+bin/make_f2fs_casefold strip platform-tools/make_f2fs_casefold
bin/sload_f2fs strip platform-tools/sload_f2fs
bin/sqlite3 strip platform-tools/sqlite3
bin/dmtracedump strip platform-tools/dmtracedump
@@ -128,13 +129,11 @@ prebuilts/sdk/renderscript/lib/x86_64/librsrt_x86_64.bc build-tools/${PLATFO
bin/apksigner build-tools/${PLATFORM_NAME}/apksigner
framework/apksigner.jar build-tools/${PLATFORM_NAME}/lib/apksigner.jar
-# dx
-bin/dx build-tools/${PLATFORM_NAME}/dx
-framework/dx.jar build-tools/${PLATFORM_NAME}/lib/dx.jar
+# dexdump
bin/dexdump build-tools/${PLATFORM_NAME}/dexdump
# d8
-prebuilts/r8/buildtools/d8-master.jar build-tools/${PLATFORM_NAME}/lib/d8.jar
+prebuilts/r8/r8.jar build-tools/${PLATFORM_NAME}/lib/d8.jar
prebuilts/r8/d8 build-tools/${PLATFORM_NAME}/d8
# multi-dex
@@ -176,6 +175,8 @@ ${OUT_DIR}/target/common/obj/JAVA_LIBRARIES/android.test.runner.stubs_intermedia
# the aidl precompiled include
${OUT_DIR}/target/common/obj/PACKAGING/framework.aidl platforms/${PLATFORM_NAME}/framework.aidl
+# the libbinder_ndk C++ library files associated with the AIDL compiler
+frameworks/native/libs/binder/ndk/include_cpp/ platforms/${PLATFORM_NAME}/optional/libbinder_ndk_cpp/
# emulator skins from sdk.git
development/tools/emulator/skins/QVGA platforms/${PLATFORM_NAME}/skins/QVGA
diff --git a/build/tools/mk_sdk_repo_xml.sh b/build/tools/mk_sdk_repo_xml.sh
index 97f8abab9..b0f480ce8 100755
--- a/build/tools/mk_sdk_repo_xml.sh
+++ b/build/tools/mk_sdk_repo_xml.sh
@@ -383,13 +383,13 @@ while [[ -n "$1" ]]; do
if [[ $FIRST ]]; then
FIRST=""
- if unzip -t "$SRC" | grep -qs "source.properties" ; then
+ if unzip -l "$SRC" | grep -qs "source.properties" ; then
# Extract Source Properties
# unzip: -j=flat (no dirs), -q=quiet, -o=overwrite, -d=dest dir
unzip -j -q -o -d "$TMP_DIR" "$SRC" "*/source.properties"
PROPS="$TMP_DIR/source.properties"
- elif unzip -t "$SRC" | grep -qs "manifest.ini" ; then
+ elif unzip -l "$SRC" | grep -qs "manifest.ini" ; then
unzip -j -q -o -d "$TMP_DIR" "$SRC" "*/manifest.ini"
PROPS="$TMP_DIR/manifest.ini"
diff --git a/build/tools/windows_sdk.mk b/build/tools/windows_sdk.mk
index d510851a4..45e2f5bd7 100644
--- a/build/tools/windows_sdk.mk
+++ b/build/tools/windows_sdk.mk
@@ -41,8 +41,15 @@ WIN_TARGETS := \
zipalign \
split-select
+# b/150355628 - we want the 64-bit libaapt2_jni for loading as JNI in 64-bit JVMs.
+WIN_TARGETS += \
+ libaapt2_jni_64
+
WIN_TARGETS := $(foreach t,$(WIN_TARGETS),$(ALL_MODULES.host_cross_$(t).INSTALLED))
+WIN_TARGETS += prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8/x86_64-w64-mingw32/bin/libwinpthread-1.dll
+WIN_TARGETS += prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8/x86_64-w64-mingw32/lib32/libwinpthread-1.dll
+
# MAIN_SDK_NAME/DIR is set in build/core/Makefile
WIN_SDK_NAME := $(subst $(HOST_OS)-$(SDK_HOST_ARCH),windows,$(MAIN_SDK_NAME))
WIN_SDK_DIR := $(subst $(HOST_OS)-$(SDK_HOST_ARCH),windows,$(MAIN_SDK_DIR))
diff --git a/cmds/monkey/Android.bp b/cmds/monkey/Android.bp
new file mode 100644
index 000000000..2b67032f2
--- /dev/null
+++ b/cmds/monkey/Android.bp
@@ -0,0 +1,25 @@
+// Copyright 2008 The Android Open Source Project
+//
+
+package {
+ default_applicable_licenses: ["development_cmds_monkey_license"],
+}
+
+// See: http://go/android-license-faq
+license {
+ name: "development_cmds_monkey_license",
+ visibility: [":__subpackages__"],
+ license_kinds: [
+ "SPDX-license-identifier-Apache-2.0",
+ ],
+ license_text: [
+ "NOTICE",
+ ],
+}
+
+//###############################################################
+java_binary {
+ name: "monkey",
+ srcs: ["**/*.java"],
+ wrapper: "monkey",
+}
diff --git a/cmds/monkey/Android.mk b/cmds/monkey/Android.mk
deleted file mode 100644
index 90dd3cd2a..000000000
--- a/cmds/monkey/Android.mk
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 2008 The Android Open Source Project
-#
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-LOCAL_SRC_FILES := $(call all-subdir-java-files)
-LOCAL_MODULE := monkeylib
-LOCAL_MODULE_STEM := monkey
-include $(BUILD_JAVA_LIBRARY)
-
-################################################################
-include $(CLEAR_VARS)
-LOCAL_MODULE := monkey
-LOCAL_MODULE_CLASS := EXECUTABLES
-LOCAL_SRC_FILES := monkey
-LOCAL_REQUIRED_MODULES := monkeylib
-include $(BUILD_PREBUILT)
diff --git a/cmds/monkey/src/com/android/commands/monkey/Monkey.java b/cmds/monkey/src/com/android/commands/monkey/Monkey.java
index 85ce18d71..e76a89dde 100644
--- a/cmds/monkey/src/com/android/commands/monkey/Monkey.java
+++ b/cmds/monkey/src/com/android/commands/monkey/Monkey.java
@@ -178,10 +178,10 @@ public class Monkey {
/** If set, only match error if this text appears in the description text. */
private String mMatchDescription;
- /** Package blacklist file. */
+ /** Package denylist file. */
private String mPkgBlacklistFile;
- /** Package whitelist file. */
+ /** Package allowlist file. */
private String mPkgWhitelistFile;
/** Categories we are allowed to launch **/
@@ -966,7 +966,7 @@ public class Monkey {
}
/**
- * Load package blacklist or whitelist (if specified).
+ * Load package denylist or allowlist (if specified).
*
* @return Returns false if any error occurs.
*/
diff --git a/cmds/monkey/src/com/android/commands/monkey/MonkeyNetworkMonitor.java b/cmds/monkey/src/com/android/commands/monkey/MonkeyNetworkMonitor.java
index d612c345d..2f227793f 100644
--- a/cmds/monkey/src/com/android/commands/monkey/MonkeyNetworkMonitor.java
+++ b/cmds/monkey/src/com/android/commands/monkey/MonkeyNetworkMonitor.java
@@ -85,8 +85,8 @@ public class MonkeyNetworkMonitor extends IIntentReceiver.Stub {
public void register(IActivityManager am) throws RemoteException {
if (LDEBUG) Logger.out.println("registering Receiver");
- am.registerReceiverWithFeature(null, null, null, this, filter, null, UserHandle.USER_ALL,
- 0);
+ am.registerReceiverWithFeature(null, null, null, null, this, filter, null,
+ UserHandle.USER_ALL, 0);
}
public void unregister(IActivityManager am) throws RemoteException {
diff --git a/cmds/monkey/src/com/android/commands/monkey/MonkeyPermissionEvent.java b/cmds/monkey/src/com/android/commands/monkey/MonkeyPermissionEvent.java
index c051835f8..c650aee99 100644
--- a/cmds/monkey/src/com/android/commands/monkey/MonkeyPermissionEvent.java
+++ b/cmds/monkey/src/com/android/commands/monkey/MonkeyPermissionEvent.java
@@ -19,10 +19,10 @@ package com.android.commands.monkey;
import android.app.ActivityManager;
import android.app.AppGlobals;
import android.app.IActivityManager;
+import android.content.pm.IPackageManager;
import android.content.pm.PackageManager;
import android.content.pm.PermissionInfo;
import android.os.RemoteException;
-import android.os.ServiceManager;
import android.permission.IPermissionManager;
import android.view.IWindowManager;
@@ -38,11 +38,12 @@ public class MonkeyPermissionEvent extends MonkeyEvent {
@Override
public int injectEvent(IWindowManager iwm, IActivityManager iam, int verbose) {
+ final IPackageManager packageManager = AppGlobals.getPackageManager();
final IPermissionManager permissionManager = AppGlobals.getPermissionManager();
final int currentUser = ActivityManager.getCurrentUser();
try {
// determine if we should grant or revoke permission
- int perm = permissionManager.checkPermission(mPermissionInfo.name, mPkg, currentUser);
+ int perm = packageManager.checkPermission(mPermissionInfo.name, mPkg, currentUser);
boolean grant = perm == PackageManager.PERMISSION_DENIED;
// log before calling pm in case we hit an error
Logger.out.println(String.format(":Permission %s %s to package %s",
diff --git a/cmds/monkey/src/com/android/commands/monkey/MonkeyPermissionUtil.java b/cmds/monkey/src/com/android/commands/monkey/MonkeyPermissionUtil.java
index 6df024413..21be743f0 100644
--- a/cmds/monkey/src/com/android/commands/monkey/MonkeyPermissionUtil.java
+++ b/cmds/monkey/src/com/android/commands/monkey/MonkeyPermissionUtil.java
@@ -106,7 +106,7 @@ public class MonkeyPermissionUtil {
}
private boolean shouldTargetPermission(String pkg, PermissionInfo pi) throws RemoteException {
- int flags = mPermManager.getPermissionFlags(pi.name, pkg, UserHandle.myUserId());
+ int flags = mPermManager.getPermissionFlags(pkg, pi.name, UserHandle.myUserId());
int fixedPermFlags = PackageManager.FLAG_PERMISSION_SYSTEM_FIXED
| PackageManager.FLAG_PERMISSION_POLICY_FIXED;
return pi.group != null && pi.protectionLevel == PermissionInfo.PROTECTION_DANGEROUS
diff --git a/gsi/build_with_kernel/empty.mk b/gsi/build_with_kernel/empty.mk
new file mode 100644
index 000000000..cd4031a11
--- /dev/null
+++ b/gsi/build_with_kernel/empty.mk
@@ -0,0 +1 @@
+# an empty makefile
diff --git a/gsi/gsi_util/Android.bp b/gsi/gsi_util/Android.bp
index abc08f5ec..bdd8fa71c 100644
--- a/gsi/gsi_util/Android.bp
+++ b/gsi/gsi_util/Android.bp
@@ -12,6 +12,10 @@
// See the License for the specific language governing permissions and
// limitations under the License.
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
python_binary_host {
name: "gsi_util",
srcs: [
diff --git a/gsi/repack_super_image/Android.bp b/gsi/repack_super_image/Android.bp
index afbde0963..1f1c7e2aa 100644
--- a/gsi/repack_super_image/Android.bp
+++ b/gsi/repack_super_image/Android.bp
@@ -12,6 +12,10 @@
// See the License for the specific language governing permissions and
// limitations under the License.
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
python_binary_host {
name: "repack_super_image",
main: "repack_super_image.py",
diff --git a/host/windows/Android.bp b/host/windows/Android.bp
index 55f94075d..11c714b02 100644
--- a/host/windows/Android.bp
+++ b/host/windows/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
cc_defaults {
name: "AdbWinApi_defaults",
@@ -18,6 +22,7 @@ cc_prebuilt_library_shared {
export_include_dirs: ["usb/api"],
srcs: ["prebuilt/usb/AdbWinApi.dll"],
+ windows_import_lib: "prebuilt/usb/AdbWinApi.lib",
}
cc_prebuilt_library_shared {
diff --git a/host/windows/usb/android_winusb.inf b/host/windows/usb/android_winusb.inf
index 04cc4692c..dcf4c287c 100755
--- a/host/windows/usb/android_winusb.inf
+++ b/host/windows/usb/android_winusb.inf
@@ -57,6 +57,18 @@ HKR,,Icon,,-1
%SingleAdbInterface% = USB_Install, USB\VID_18D1&PID_9001
%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_9001&MI_01
+;Google Glass EE1
+
+%SingleAdbInterface% = USB_Install, USB\VID_18D1&PID_9003
+%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_9003&MI_01
+%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_9004
+
+;Google Glass EE2
+
+%SingleAdbInterface% = USB_Install, USB\VID_18D1&PID_9005
+%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_9005&MI_00
+%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_9006
+
;Project Tango (generic)
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_4D00
%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4D02&MI_01
@@ -100,6 +112,18 @@ HKR,,Icon,,-1
%SingleAdbInterface% = USB_Install, USB\VID_18D1&PID_9001
%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_9001&MI_01
+;Google Glass EE1
+
+%SingleAdbInterface% = USB_Install, USB\VID_18D1&PID_9003
+%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_9003&MI_01
+%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_9004
+
+;Google Glass EE2
+
+%SingleAdbInterface% = USB_Install, USB\VID_18D1&PID_9005
+%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_9005&MI_00
+%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_9006
+
;Project Tango (generic)
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_4D00
%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4D02&MI_01
diff --git a/ide/clion/frameworks/base/CMakeLists.txt b/ide/clion/frameworks/base/CMakeLists.txt
index 70566c493..14b8fb347 100644
--- a/ide/clion/frameworks/base/CMakeLists.txt
+++ b/ide/clion/frameworks/base/CMakeLists.txt
@@ -9,4 +9,3 @@ add_subdirectory(libs/hwui/hwui_unit_tests-arm64-android)
# JNI
add_subdirectory(core/jni/libandroid_runtime-arm64-android)
-add_subdirectory(core/jni/libandroid_graphics-arm64-android)
diff --git a/ide/clion/frameworks/native/CMakeLists.txt b/ide/clion/frameworks/native/CMakeLists.txt
index 869910ff6..2b65c154b 100644
--- a/ide/clion/frameworks/native/CMakeLists.txt
+++ b/ide/clion/frameworks/native/CMakeLists.txt
@@ -2,13 +2,14 @@ cmake_minimum_required(VERSION 3.6)
project(native)
add_subdirectory(libs/gui/libgui-arm64-android)
add_subdirectory(libs/ui/libui-arm64-android)
+add_subdirectory(libs/renderengine/librenderengine-arm64-android)
add_subdirectory(services/surfaceflinger/surfaceflinger-arm64-android)
add_subdirectory(services/surfaceflinger/CompositionEngine/libcompositionengine_mocks-arm64-android)
add_subdirectory(services/surfaceflinger/CompositionEngine/libcompositionengine_test-arm64-android)
add_subdirectory(services/surfaceflinger/CompositionEngine/libcompositionengine-arm64-android)
+add_subdirectory(services/surfaceflinger/FrameTimeline/libframetimeline-arm64-android)
add_subdirectory(services/surfaceflinger/TimeStats/timestatsproto/libtimestats_proto-arm64-android)
add_subdirectory(services/surfaceflinger/TimeStats/libtimestats-arm64-android)
-add_subdirectory(services/surfaceflinger/libsurfaceflinger-arm64-android)
add_subdirectory(services/surfaceflinger/layerproto/liblayers_proto-arm64-android)
add_subdirectory(services/surfaceflinger/tests/IPC_test-arm64-android)
add_subdirectory(services/surfaceflinger/tests/fakehwc/sffakehwc_test-arm64-android)
diff --git a/ndk/.gitignore b/ndk/.gitignore
deleted file mode 100644
index fcbf4d236..000000000
--- a/ndk/.gitignore
+++ /dev/null
@@ -1,12 +0,0 @@
-samples/*/libs/
-samples/*/obj/
-samples/*/bin/
-samples/*/gen/
-platforms/android-*/samples/*/obj
-platforms/android-*/samples/*/libs
-tests/*/libs
-tests/*/obj/
-tests/*/bin/
-tests/*/gen/
-local.properties
-build.xml
diff --git a/ndk/zlib/NOTICE b/ndk/zlib/NOTICE
deleted file mode 100644
index 563ecddda..000000000
--- a/ndk/zlib/NOTICE
+++ /dev/null
@@ -1,20 +0,0 @@
- (C) 1995-2012 Jean-loup Gailly and Mark Adler
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-
- Jean-loup Gailly Mark Adler
- jloup@gzip.org madler@alumni.caltech.edu
diff --git a/ndk/zlib/zconf.h b/ndk/zlib/zconf.h
deleted file mode 100644
index 55d46c1f8..000000000
--- a/ndk/zlib/zconf.h
+++ /dev/null
@@ -1,506 +0,0 @@
-/* zconf.h -- configuration of the zlib compression library
- * Copyright (C) 1995-2012 Jean-loup Gailly.
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* @(#) $Id$ */
-
-#ifndef ZCONF_H
-#define ZCONF_H
-
-/*
- * If you *really* need a unique prefix for all types and library functions,
- * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it.
- * Even better than compiling with -DZ_PREFIX would be to use configure to set
- * this permanently in zconf.h using "./configure --zprefix".
- */
-#ifdef Z_PREFIX /* may be set to #if 1 by ./configure */
-# define Z_PREFIX_SET
-
-/* all linked symbols */
-# define _dist_code z__dist_code
-# define _length_code z__length_code
-# define _tr_align z__tr_align
-# define _tr_flush_block z__tr_flush_block
-# define _tr_init z__tr_init
-# define _tr_stored_block z__tr_stored_block
-# define _tr_tally z__tr_tally
-# define adler32 z_adler32
-# define adler32_combine z_adler32_combine
-# define adler32_combine64 z_adler32_combine64
-# ifndef Z_SOLO
-# define compress z_compress
-# define compress2 z_compress2
-# define compressBound z_compressBound
-# endif
-# define crc32 z_crc32
-# define crc32_combine z_crc32_combine
-# define crc32_combine64 z_crc32_combine64
-# define deflate z_deflate
-# define deflateBound z_deflateBound
-# define deflateCopy z_deflateCopy
-# define deflateEnd z_deflateEnd
-# define deflateInit2_ z_deflateInit2_
-# define deflateInit_ z_deflateInit_
-# define deflateParams z_deflateParams
-# define deflatePending z_deflatePending
-# define deflatePrime z_deflatePrime
-# define deflateReset z_deflateReset
-# define deflateResetKeep z_deflateResetKeep
-# define deflateSetDictionary z_deflateSetDictionary
-# define deflateSetHeader z_deflateSetHeader
-# define deflateTune z_deflateTune
-# define deflate_copyright z_deflate_copyright
-# define get_crc_table z_get_crc_table
-# ifndef Z_SOLO
-# define gz_error z_gz_error
-# define gz_intmax z_gz_intmax
-# define gz_strwinerror z_gz_strwinerror
-# define gzbuffer z_gzbuffer
-# define gzclearerr z_gzclearerr
-# define gzclose z_gzclose
-# define gzclose_r z_gzclose_r
-# define gzclose_w z_gzclose_w
-# define gzdirect z_gzdirect
-# define gzdopen z_gzdopen
-# define gzeof z_gzeof
-# define gzerror z_gzerror
-# define gzflush z_gzflush
-# define gzgetc z_gzgetc
-# define gzgetc_ z_gzgetc_
-# define gzgets z_gzgets
-# define gzoffset z_gzoffset
-# define gzoffset64 z_gzoffset64
-# define gzopen z_gzopen
-# define gzopen64 z_gzopen64
-# ifdef _WIN32
-# define gzopen_w z_gzopen_w
-# endif
-# define gzprintf z_gzprintf
-# define gzputc z_gzputc
-# define gzputs z_gzputs
-# define gzread z_gzread
-# define gzrewind z_gzrewind
-# define gzseek z_gzseek
-# define gzseek64 z_gzseek64
-# define gzsetparams z_gzsetparams
-# define gztell z_gztell
-# define gztell64 z_gztell64
-# define gzungetc z_gzungetc
-# define gzwrite z_gzwrite
-# endif
-# define inflate z_inflate
-# define inflateBack z_inflateBack
-# define inflateBackEnd z_inflateBackEnd
-# define inflateBackInit_ z_inflateBackInit_
-# define inflateCopy z_inflateCopy
-# define inflateEnd z_inflateEnd
-# define inflateGetHeader z_inflateGetHeader
-# define inflateInit2_ z_inflateInit2_
-# define inflateInit_ z_inflateInit_
-# define inflateMark z_inflateMark
-# define inflatePrime z_inflatePrime
-# define inflateReset z_inflateReset
-# define inflateReset2 z_inflateReset2
-# define inflateSetDictionary z_inflateSetDictionary
-# define inflateSync z_inflateSync
-# define inflateSyncPoint z_inflateSyncPoint
-# define inflateUndermine z_inflateUndermine
-# define inflateResetKeep z_inflateResetKeep
-# define inflate_copyright z_inflate_copyright
-# define inflate_fast z_inflate_fast
-# define inflate_table z_inflate_table
-# ifndef Z_SOLO
-# define uncompress z_uncompress
-# endif
-# define zError z_zError
-# ifndef Z_SOLO
-# define zcalloc z_zcalloc
-# define zcfree z_zcfree
-# endif
-# define zlibCompileFlags z_zlibCompileFlags
-# define zlibVersion z_zlibVersion
-
-/* all zlib typedefs in zlib.h and zconf.h */
-# define Byte z_Byte
-# define Bytef z_Bytef
-# define alloc_func z_alloc_func
-# define charf z_charf
-# define free_func z_free_func
-# ifndef Z_SOLO
-# define gzFile z_gzFile
-# endif
-# define gz_header z_gz_header
-# define gz_headerp z_gz_headerp
-# define in_func z_in_func
-# define intf z_intf
-# define out_func z_out_func
-# define uInt z_uInt
-# define uIntf z_uIntf
-# define uLong z_uLong
-# define uLongf z_uLongf
-# define voidp z_voidp
-# define voidpc z_voidpc
-# define voidpf z_voidpf
-
-/* all zlib structs in zlib.h and zconf.h */
-# define gz_header_s z_gz_header_s
-# define internal_state z_internal_state
-
-#endif
-
-#if defined(__MSDOS__) && !defined(MSDOS)
-# define MSDOS
-#endif
-#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2)
-# define OS2
-#endif
-#if defined(_WINDOWS) && !defined(WINDOWS)
-# define WINDOWS
-#endif
-#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__)
-# ifndef WIN32
-# define WIN32
-# endif
-#endif
-#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32)
-# if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__)
-# ifndef SYS16BIT
-# define SYS16BIT
-# endif
-# endif
-#endif
-
-/*
- * Compile with -DMAXSEG_64K if the alloc function cannot allocate more
- * than 64k bytes at a time (needed on systems with 16-bit int).
- */
-#ifdef SYS16BIT
-# define MAXSEG_64K
-#endif
-#ifdef MSDOS
-# define UNALIGNED_OK
-#endif
-
-#ifdef __STDC_VERSION__
-# ifndef STDC
-# define STDC
-# endif
-# if __STDC_VERSION__ >= 199901L
-# ifndef STDC99
-# define STDC99
-# endif
-# endif
-#endif
-#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus))
-# define STDC
-#endif
-#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__))
-# define STDC
-#endif
-#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32))
-# define STDC
-#endif
-#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__))
-# define STDC
-#endif
-
-#if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */
-# define STDC
-#endif
-
-#ifndef STDC
-# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */
-# define const /* note: need a more gentle solution here */
-# endif
-#endif
-
-#if defined(ZLIB_CONST) && !defined(z_const)
-# define z_const const
-#else
-# define z_const
-#endif
-
-/* Some Mac compilers merge all .h files incorrectly: */
-#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__)
-# define NO_DUMMY_DECL
-#endif
-
-/* Maximum value for memLevel in deflateInit2 */
-#ifndef MAX_MEM_LEVEL
-# ifdef MAXSEG_64K
-# define MAX_MEM_LEVEL 8
-# else
-# define MAX_MEM_LEVEL 9
-# endif
-#endif
-
-/* Maximum value for windowBits in deflateInit2 and inflateInit2.
- * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files
- * created by gzip. (Files created by minigzip can still be extracted by
- * gzip.)
- */
-#ifndef MAX_WBITS
-# define MAX_WBITS 15 /* 32K LZ77 window */
-#endif
-
-/* The memory requirements for deflate are (in bytes):
- (1 << (windowBits+2)) + (1 << (memLevel+9))
- that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values)
- plus a few kilobytes for small objects. For example, if you want to reduce
- the default memory requirements from 256K to 128K, compile with
- make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7"
- Of course this will generally degrade compression (there's no free lunch).
-
- The memory requirements for inflate are (in bytes) 1 << windowBits
- that is, 32K for windowBits=15 (default value) plus a few kilobytes
- for small objects.
-*/
-
- /* Type declarations */
-
-#ifndef OF /* function prototypes */
-# ifdef STDC
-# define OF(args) args
-# else
-# define OF(args) ()
-# endif
-#endif
-
-#ifndef Z_ARG /* function prototypes for stdarg */
-# if defined(STDC) || defined(Z_HAVE_STDARG_H)
-# define Z_ARG(args) args
-# else
-# define Z_ARG(args) ()
-# endif
-#endif
-
-/* The following definitions for FAR are needed only for MSDOS mixed
- * model programming (small or medium model with some far allocations).
- * This was tested only with MSC; for other MSDOS compilers you may have
- * to define NO_MEMCPY in zutil.h. If you don't need the mixed model,
- * just define FAR to be empty.
- */
-#ifdef SYS16BIT
-# if defined(M_I86SM) || defined(M_I86MM)
- /* MSC small or medium model */
-# define SMALL_MEDIUM
-# ifdef _MSC_VER
-# define FAR _far
-# else
-# define FAR far
-# endif
-# endif
-# if (defined(__SMALL__) || defined(__MEDIUM__))
- /* Turbo C small or medium model */
-# define SMALL_MEDIUM
-# ifdef __BORLANDC__
-# define FAR _far
-# else
-# define FAR far
-# endif
-# endif
-#endif
-
-#if defined(WINDOWS) || defined(WIN32)
- /* If building or using zlib as a DLL, define ZLIB_DLL.
- * This is not mandatory, but it offers a little performance increase.
- */
-# ifdef ZLIB_DLL
-# if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500))
-# ifdef ZLIB_INTERNAL
-# define ZEXTERN extern __declspec(dllexport)
-# else
-# define ZEXTERN extern __declspec(dllimport)
-# endif
-# endif
-# endif /* ZLIB_DLL */
- /* If building or using zlib with the WINAPI/WINAPIV calling convention,
- * define ZLIB_WINAPI.
- * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI.
- */
-# ifdef ZLIB_WINAPI
-# ifdef FAR
-# undef FAR
-# endif
-# include <windows.h>
- /* No need for _export, use ZLIB.DEF instead. */
- /* For complete Windows compatibility, use WINAPI, not __stdcall. */
-# define ZEXPORT WINAPI
-# ifdef WIN32
-# define ZEXPORTVA WINAPIV
-# else
-# define ZEXPORTVA FAR CDECL
-# endif
-# endif
-#endif
-
-#if defined (__BEOS__)
-# ifdef ZLIB_DLL
-# ifdef ZLIB_INTERNAL
-# define ZEXPORT __declspec(dllexport)
-# define ZEXPORTVA __declspec(dllexport)
-# else
-# define ZEXPORT __declspec(dllimport)
-# define ZEXPORTVA __declspec(dllimport)
-# endif
-# endif
-#endif
-
-#ifndef ZEXTERN
-# define ZEXTERN extern
-#endif
-#ifndef ZEXPORT
-# define ZEXPORT
-#endif
-#ifndef ZEXPORTVA
-# define ZEXPORTVA
-#endif
-
-#ifndef FAR
-# define FAR
-#endif
-
-#if !defined(__MACTYPES__)
-typedef unsigned char Byte; /* 8 bits */
-#endif
-typedef unsigned int uInt; /* 16 bits or more */
-typedef unsigned long uLong; /* 32 bits or more */
-
-#ifdef SMALL_MEDIUM
- /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */
-# define Bytef Byte FAR
-#else
- typedef Byte FAR Bytef;
-#endif
-typedef char FAR charf;
-typedef int FAR intf;
-typedef uInt FAR uIntf;
-typedef uLong FAR uLongf;
-
-#ifdef STDC
- typedef void const *voidpc;
- typedef void FAR *voidpf;
- typedef void *voidp;
-#else
- typedef Byte const *voidpc;
- typedef Byte FAR *voidpf;
- typedef Byte *voidp;
-#endif
-
-#define Z_U4 unsigned /* ./configure put the #define Z_U4 here */
-
-#if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC)
-# include <limits.h>
-# if (UINT_MAX == 0xffffffffUL)
-# define Z_U4 unsigned
-# else
-# if (ULONG_MAX == 0xffffffffUL)
-# define Z_U4 unsigned long
-# else
-# if (USHRT_MAX == 0xffffffffUL)
-# define Z_U4 unsigned short
-# endif
-# endif
-# endif
-#endif
-
-#ifdef Z_U4
- typedef Z_U4 z_crc_t;
-#else
- typedef unsigned long z_crc_t;
-#endif
-
-#if 1 /* was set to #if 1 by ./configure */
-# define Z_HAVE_UNISTD_H
-#endif
-
-#if 1 /* was set to #if 1 by ./configure */
-# define Z_HAVE_STDARG_H
-#endif
-
-#ifdef STDC
-# ifndef Z_SOLO
-# include <sys/types.h> /* for off_t */
-# endif
-#endif
-
-#ifdef _WIN32
-# include <stddef.h> /* for wchar_t */
-#endif
-
-/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and
- * "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even
- * though the former does not conform to the LFS document), but considering
- * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as
- * equivalently requesting no 64-bit operations
- */
-#if defined(LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1
-# undef _LARGEFILE64_SOURCE
-#endif
-
-#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H)
-# define Z_HAVE_UNISTD_H
-#endif
-#ifndef Z_SOLO
-# if defined(Z_HAVE_UNISTD_H) || defined(LARGEFILE64_SOURCE)
-# include <unistd.h> /* for SEEK_*, off_t, and _LFS64_LARGEFILE */
-# ifdef VMS
-# include <unixio.h> /* for off_t */
-# endif
-# ifndef z_off_t
-# define z_off_t off_t
-# endif
-# endif
-#endif
-
-#if defined(_LFS64_LARGEFILE) && _LFS64_LARGEFILE-0
-# define Z_LFS64
-#endif
-
-#if defined(_LARGEFILE64_SOURCE) && defined(Z_LFS64)
-# define Z_LARGE64
-#endif
-
-#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS-0 == 64 && defined(Z_LFS64)
-# define Z_WANT64
-#endif
-
-#if !defined(SEEK_SET) && !defined(Z_SOLO)
-# define SEEK_SET 0 /* Seek from beginning of file. */
-# define SEEK_CUR 1 /* Seek from current position. */
-# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */
-#endif
-
-#ifndef z_off_t
-# define z_off_t long
-#endif
-
-#if !defined(_WIN32) && defined(Z_LARGE64)
-# define z_off64_t off64_t
-#else
-# if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO)
-# define z_off64_t __int64
-# else
-# define z_off64_t z_off_t
-# endif
-#endif
-
-/* MVS linker does not support external names larger than 8 bytes */
-#if defined(__MVS__)
- #pragma map(deflateInit_,"DEIN")
- #pragma map(deflateInit2_,"DEIN2")
- #pragma map(deflateEnd,"DEEND")
- #pragma map(deflateBound,"DEBND")
- #pragma map(inflateInit_,"ININ")
- #pragma map(inflateInit2_,"ININ2")
- #pragma map(inflateEnd,"INEND")
- #pragma map(inflateSync,"INSY")
- #pragma map(inflateSetDictionary,"INSEDI")
- #pragma map(compressBound,"CMBND")
- #pragma map(inflate_table,"INTABL")
- #pragma map(inflate_fast,"INFA")
- #pragma map(inflate_copyright,"INCOPY")
-#endif
-
-#endif /* ZCONF_H */
diff --git a/ndk/zlib/zlib.h b/ndk/zlib/zlib.h
deleted file mode 100644
index 3edf3acdb..000000000
--- a/ndk/zlib/zlib.h
+++ /dev/null
@@ -1,1744 +0,0 @@
-/* zlib.h -- interface of the 'zlib' general purpose compression library
- version 1.2.7, May 2nd, 2012
-
- Copyright (C) 1995-2012 Jean-loup Gailly and Mark Adler
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-
- Jean-loup Gailly Mark Adler
- jloup@gzip.org madler@alumni.caltech.edu
-
-
- The data format used by the zlib library is described by RFCs (Request for
- Comments) 1950 to 1952 in the files http://tools.ietf.org/html/rfc1950
- (zlib format), rfc1951 (deflate format) and rfc1952 (gzip format).
-*/
-
-#ifndef ZLIB_H
-#define ZLIB_H
-
-#include "zconf.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define ZLIB_VERSION "1.2.7"
-#define ZLIB_VERNUM 0x1270
-#define ZLIB_VER_MAJOR 1
-#define ZLIB_VER_MINOR 2
-#define ZLIB_VER_REVISION 7
-#define ZLIB_VER_SUBREVISION 0
-
-/*
- The 'zlib' compression library provides in-memory compression and
- decompression functions, including integrity checks of the uncompressed data.
- This version of the library supports only one compression method (deflation)
- but other algorithms will be added later and will have the same stream
- interface.
-
- Compression can be done in a single step if the buffers are large enough,
- or can be done by repeated calls of the compression function. In the latter
- case, the application must provide more input and/or consume the output
- (providing more output space) before each call.
-
- The compressed data format used by default by the in-memory functions is
- the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped
- around a deflate stream, which is itself documented in RFC 1951.
-
- The library also supports reading and writing files in gzip (.gz) format
- with an interface similar to that of stdio using the functions that start
- with "gz". The gzip format is different from the zlib format. gzip is a
- gzip wrapper, documented in RFC 1952, wrapped around a deflate stream.
-
- This library can optionally read and write gzip streams in memory as well.
-
- The zlib format was designed to be compact and fast for use in memory
- and on communications channels. The gzip format was designed for single-
- file compression on file systems, has a larger header than zlib to maintain
- directory information, and uses a different, slower check method than zlib.
-
- The library does not install any signal handler. The decoder checks
- the consistency of the compressed data, so the library should never crash
- even in case of corrupted input.
-*/
-
-typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size));
-typedef void (*free_func) OF((voidpf opaque, voidpf address));
-
-struct internal_state;
-
-typedef struct z_stream_s {
- z_const Bytef *next_in; /* next input byte */
- uInt avail_in; /* number of bytes available at next_in */
- uLong total_in; /* total number of input bytes read so far */
-
- Bytef *next_out; /* next output byte should be put there */
- uInt avail_out; /* remaining free space at next_out */
- uLong total_out; /* total number of bytes output so far */
-
- z_const char *msg; /* last error message, NULL if no error */
- struct internal_state FAR *state; /* not visible by applications */
-
- alloc_func zalloc; /* used to allocate the internal state */
- free_func zfree; /* used to free the internal state */
- voidpf opaque; /* private data object passed to zalloc and zfree */
-
- int data_type; /* best guess about the data type: binary or text */
- uLong adler; /* adler32 value of the uncompressed data */
- uLong reserved; /* reserved for future use */
-} z_stream;
-
-typedef z_stream FAR *z_streamp;
-
-/*
- gzip header information passed to and from zlib routines. See RFC 1952
- for more details on the meanings of these fields.
-*/
-typedef struct gz_header_s {
- int text; /* true if compressed data believed to be text */
- uLong time; /* modification time */
- int xflags; /* extra flags (not used when writing a gzip file) */
- int os; /* operating system */
- Bytef *extra; /* pointer to extra field or Z_NULL if none */
- uInt extra_len; /* extra field length (valid if extra != Z_NULL) */
- uInt extra_max; /* space at extra (only when reading header) */
- Bytef *name; /* pointer to zero-terminated file name or Z_NULL */
- uInt name_max; /* space at name (only when reading header) */
- Bytef *comment; /* pointer to zero-terminated comment or Z_NULL */
- uInt comm_max; /* space at comment (only when reading header) */
- int hcrc; /* true if there was or will be a header crc */
- int done; /* true when done reading gzip header (not used
- when writing a gzip file) */
-} gz_header;
-
-typedef gz_header FAR *gz_headerp;
-
-/*
- The application must update next_in and avail_in when avail_in has dropped
- to zero. It must update next_out and avail_out when avail_out has dropped
- to zero. The application must initialize zalloc, zfree and opaque before
- calling the init function. All other fields are set by the compression
- library and must not be updated by the application.
-
- The opaque value provided by the application will be passed as the first
- parameter for calls of zalloc and zfree. This can be useful for custom
- memory management. The compression library attaches no meaning to the
- opaque value.
-
- zalloc must return Z_NULL if there is not enough memory for the object.
- If zlib is used in a multi-threaded application, zalloc and zfree must be
- thread safe.
-
- On 16-bit systems, the functions zalloc and zfree must be able to allocate
- exactly 65536 bytes, but will not be required to allocate more than this if
- the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS, pointers
- returned by zalloc for objects of exactly 65536 bytes *must* have their
- offset normalized to zero. The default allocation function provided by this
- library ensures this (see zutil.c). To reduce memory requirements and avoid
- any allocation of 64K objects, at the expense of compression ratio, compile
- the library with -DMAX_WBITS=14 (see zconf.h).
-
- The fields total_in and total_out can be used for statistics or progress
- reports. After compression, total_in holds the total size of the
- uncompressed data and may be saved for use in the decompressor (particularly
- if the decompressor wants to decompress everything in a single step).
-*/
-
- /* constants */
-
-#define Z_NO_FLUSH 0
-#define Z_PARTIAL_FLUSH 1
-#define Z_SYNC_FLUSH 2
-#define Z_FULL_FLUSH 3
-#define Z_FINISH 4
-#define Z_BLOCK 5
-#define Z_TREES 6
-/* Allowed flush values; see deflate() and inflate() below for details */
-
-#define Z_OK 0
-#define Z_STREAM_END 1
-#define Z_NEED_DICT 2
-#define Z_ERRNO (-1)
-#define Z_STREAM_ERROR (-2)
-#define Z_DATA_ERROR (-3)
-#define Z_MEM_ERROR (-4)
-#define Z_BUF_ERROR (-5)
-#define Z_VERSION_ERROR (-6)
-/* Return codes for the compression/decompression functions. Negative values
- * are errors, positive values are used for special but normal events.
- */
-
-#define Z_NO_COMPRESSION 0
-#define Z_BEST_SPEED 1
-#define Z_BEST_COMPRESSION 9
-#define Z_DEFAULT_COMPRESSION (-1)
-/* compression levels */
-
-#define Z_FILTERED 1
-#define Z_HUFFMAN_ONLY 2
-#define Z_RLE 3
-#define Z_FIXED 4
-#define Z_DEFAULT_STRATEGY 0
-/* compression strategy; see deflateInit2() below for details */
-
-#define Z_BINARY 0
-#define Z_TEXT 1
-#define Z_ASCII Z_TEXT /* for compatibility with 1.2.2 and earlier */
-#define Z_UNKNOWN 2
-/* Possible values of the data_type field (though see inflate()) */
-
-#define Z_DEFLATED 8
-/* The deflate compression method (the only one supported in this version) */
-
-#define Z_NULL 0 /* for initializing zalloc, zfree, opaque */
-
-#define zlib_version zlibVersion()
-/* for compatibility with versions < 1.0.2 */
-
-
- /* basic functions */
-
-ZEXTERN const char * ZEXPORT zlibVersion OF((void));
-/* The application can compare zlibVersion and ZLIB_VERSION for consistency.
- If the first character differs, the library code actually used is not
- compatible with the zlib.h header file used by the application. This check
- is automatically made by deflateInit and inflateInit.
- */
-
-/*
-ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level));
-
- Initializes the internal stream state for compression. The fields
- zalloc, zfree and opaque must be initialized before by the caller. If
- zalloc and zfree are set to Z_NULL, deflateInit updates them to use default
- allocation functions.
-
- The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9:
- 1 gives best speed, 9 gives best compression, 0 gives no compression at all
- (the input data is simply copied a block at a time). Z_DEFAULT_COMPRESSION
- requests a default compromise between speed and compression (currently
- equivalent to level 6).
-
- deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough
- memory, Z_STREAM_ERROR if level is not a valid compression level, or
- Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible
- with the version assumed by the caller (ZLIB_VERSION). msg is set to null
- if there is no error message. deflateInit does not perform any compression:
- this will be done by deflate().
-*/
-
-
-ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
-/*
- deflate compresses as much data as possible, and stops when the input
- buffer becomes empty or the output buffer becomes full. It may introduce
- some output latency (reading input without producing any output) except when
- forced to flush.
-
- The detailed semantics are as follows. deflate performs one or both of the
- following actions:
-
- - Compress more input starting at next_in and update next_in and avail_in
- accordingly. If not all input can be processed (because there is not
- enough room in the output buffer), next_in and avail_in are updated and
- processing will resume at this point for the next call of deflate().
-
- - Provide more output starting at next_out and update next_out and avail_out
- accordingly. This action is forced if the parameter flush is non zero.
- Forcing flush frequently degrades the compression ratio, so this parameter
- should be set only when necessary (in interactive applications). Some
- output may be provided even if flush is not set.
-
- Before the call of deflate(), the application should ensure that at least
- one of the actions is possible, by providing more input and/or consuming more
- output, and updating avail_in or avail_out accordingly; avail_out should
- never be zero before the call. The application can consume the compressed
- output when it wants, for example when the output buffer is full (avail_out
- == 0), or after each call of deflate(). If deflate returns Z_OK and with
- zero avail_out, it must be called again after making room in the output
- buffer because there might be more output pending.
-
- Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to
- decide how much data to accumulate before producing output, in order to
- maximize compression.
-
- If the parameter flush is set to Z_SYNC_FLUSH, all pending output is
- flushed to the output buffer and the output is aligned on a byte boundary, so
- that the decompressor can get all input data available so far. (In
- particular avail_in is zero after the call if enough output space has been
- provided before the call.) Flushing may degrade compression for some
- compression algorithms and so it should be used only when necessary. This
- completes the current deflate block and follows it with an empty stored block
- that is three bits plus filler bits to the next byte, followed by four bytes
- (00 00 ff ff).
-
- If flush is set to Z_PARTIAL_FLUSH, all pending output is flushed to the
- output buffer, but the output is not aligned to a byte boundary. All of the
- input data so far will be available to the decompressor, as for Z_SYNC_FLUSH.
- This completes the current deflate block and follows it with an empty fixed
- codes block that is 10 bits long. This assures that enough bytes are output
- in order for the decompressor to finish the block before the empty fixed code
- block.
-
- If flush is set to Z_BLOCK, a deflate block is completed and emitted, as
- for Z_SYNC_FLUSH, but the output is not aligned on a byte boundary, and up to
- seven bits of the current block are held to be written as the next byte after
- the next deflate block is completed. In this case, the decompressor may not
- be provided enough bits at this point in order to complete decompression of
- the data provided so far to the compressor. It may need to wait for the next
- block to be emitted. This is for advanced applications that need to control
- the emission of deflate blocks.
-
- If flush is set to Z_FULL_FLUSH, all output is flushed as with
- Z_SYNC_FLUSH, and the compression state is reset so that decompression can
- restart from this point if previous compressed data has been damaged or if
- random access is desired. Using Z_FULL_FLUSH too often can seriously degrade
- compression.
-
- If deflate returns with avail_out == 0, this function must be called again
- with the same value of the flush parameter and more output space (updated
- avail_out), until the flush is complete (deflate returns with non-zero
- avail_out). In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that
- avail_out is greater than six to avoid repeated flush markers due to
- avail_out == 0 on return.
-
- If the parameter flush is set to Z_FINISH, pending input is processed,
- pending output is flushed and deflate returns with Z_STREAM_END if there was
- enough output space; if deflate returns with Z_OK, this function must be
- called again with Z_FINISH and more output space (updated avail_out) but no
- more input data, until it returns with Z_STREAM_END or an error. After
- deflate has returned Z_STREAM_END, the only possible operations on the stream
- are deflateReset or deflateEnd.
-
- Z_FINISH can be used immediately after deflateInit if all the compression
- is to be done in a single step. In this case, avail_out must be at least the
- value returned by deflateBound (see below). Then deflate is guaranteed to
- return Z_STREAM_END. If not enough output space is provided, deflate will
- not return Z_STREAM_END, and it must be called again as described above.
-
- deflate() sets strm->adler to the adler32 checksum of all input read
- so far (that is, total_in bytes).
-
- deflate() may update strm->data_type if it can make a good guess about
- the input data type (Z_BINARY or Z_TEXT). In doubt, the data is considered
- binary. This field is only for information purposes and does not affect the
- compression algorithm in any manner.
-
- deflate() returns Z_OK if some progress has been made (more input
- processed or more output produced), Z_STREAM_END if all input has been
- consumed and all output has been produced (only when flush is set to
- Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example
- if next_in or next_out was Z_NULL), Z_BUF_ERROR if no progress is possible
- (for example avail_in or avail_out was zero). Note that Z_BUF_ERROR is not
- fatal, and deflate() can be called again with more input and more output
- space to continue compressing.
-*/
-
-
-ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm));
-/*
- All dynamically allocated data structures for this stream are freed.
- This function discards any unprocessed input and does not flush any pending
- output.
-
- deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the
- stream state was inconsistent, Z_DATA_ERROR if the stream was freed
- prematurely (some input or output was discarded). In the error case, msg
- may be set but then points to a static string (which must not be
- deallocated).
-*/
-
-
-/*
-ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm));
-
- Initializes the internal stream state for decompression. The fields
- next_in, avail_in, zalloc, zfree and opaque must be initialized before by
- the caller. If next_in is not Z_NULL and avail_in is large enough (the
- exact value depends on the compression method), inflateInit determines the
- compression method from the zlib header and allocates all data structures
- accordingly; otherwise the allocation will be deferred to the first call of
- inflate. If zalloc and zfree are set to Z_NULL, inflateInit updates them to
- use default allocation functions.
-
- inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough
- memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
- version assumed by the caller, or Z_STREAM_ERROR if the parameters are
- invalid, such as a null pointer to the structure. msg is set to null if
- there is no error message. inflateInit does not perform any decompression
- apart from possibly reading the zlib header if present: actual decompression
- will be done by inflate(). (So next_in and avail_in may be modified, but
- next_out and avail_out are unused and unchanged.) The current implementation
- of inflateInit() does not process any header information -- that is deferred
- until inflate() is called.
-*/
-
-
-ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
-/*
- inflate decompresses as much data as possible, and stops when the input
- buffer becomes empty or the output buffer becomes full. It may introduce
- some output latency (reading input without producing any output) except when
- forced to flush.
-
- The detailed semantics are as follows. inflate performs one or both of the
- following actions:
-
- - Decompress more input starting at next_in and update next_in and avail_in
- accordingly. If not all input can be processed (because there is not
- enough room in the output buffer), next_in is updated and processing will
- resume at this point for the next call of inflate().
-
- - Provide more output starting at next_out and update next_out and avail_out
- accordingly. inflate() provides as much output as possible, until there is
- no more input data or no more space in the output buffer (see below about
- the flush parameter).
-
- Before the call of inflate(), the application should ensure that at least
- one of the actions is possible, by providing more input and/or consuming more
- output, and updating the next_* and avail_* values accordingly. The
- application can consume the uncompressed output when it wants, for example
- when the output buffer is full (avail_out == 0), or after each call of
- inflate(). If inflate returns Z_OK and with zero avail_out, it must be
- called again after making room in the output buffer because there might be
- more output pending.
-
- The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH, Z_FINISH,
- Z_BLOCK, or Z_TREES. Z_SYNC_FLUSH requests that inflate() flush as much
- output as possible to the output buffer. Z_BLOCK requests that inflate()
- stop if and when it gets to the next deflate block boundary. When decoding
- the zlib or gzip format, this will cause inflate() to return immediately
- after the header and before the first block. When doing a raw inflate,
- inflate() will go ahead and process the first block, and will return when it
- gets to the end of that block, or when it runs out of data.
-
- The Z_BLOCK option assists in appending to or combining deflate streams.
- Also to assist in this, on return inflate() will set strm->data_type to the
- number of unused bits in the last byte taken from strm->next_in, plus 64 if
- inflate() is currently decoding the last block in the deflate stream, plus
- 128 if inflate() returned immediately after decoding an end-of-block code or
- decoding the complete header up to just before the first byte of the deflate
- stream. The end-of-block will not be indicated until all of the uncompressed
- data from that block has been written to strm->next_out. The number of
- unused bits may in general be greater than seven, except when bit 7 of
- data_type is set, in which case the number of unused bits will be less than
- eight. data_type is set as noted here every time inflate() returns for all
- flush options, and so can be used to determine the amount of currently
- consumed input in bits.
-
- The Z_TREES option behaves as Z_BLOCK does, but it also returns when the
- end of each deflate block header is reached, before any actual data in that
- block is decoded. This allows the caller to determine the length of the
- deflate block header for later use in random access within a deflate block.
- 256 is added to the value of strm->data_type when inflate() returns
- immediately after reaching the end of the deflate block header.
-
- inflate() should normally be called until it returns Z_STREAM_END or an
- error. However if all decompression is to be performed in a single step (a
- single call of inflate), the parameter flush should be set to Z_FINISH. In
- this case all pending input is processed and all pending output is flushed;
- avail_out must be large enough to hold all of the uncompressed data for the
- operation to complete. (The size of the uncompressed data may have been
- saved by the compressor for this purpose.) The use of Z_FINISH is not
- required to perform an inflation in one step. However it may be used to
- inform inflate that a faster approach can be used for the single inflate()
- call. Z_FINISH also informs inflate to not maintain a sliding window if the
- stream completes, which reduces inflate's memory footprint. If the stream
- does not complete, either because not all of the stream is provided or not
- enough output space is provided, then a sliding window will be allocated and
- inflate() can be called again to continue the operation as if Z_NO_FLUSH had
- been used.
-
- In this implementation, inflate() always flushes as much output as
- possible to the output buffer, and always uses the faster approach on the
- first call. So the effects of the flush parameter in this implementation are
- on the return value of inflate() as noted below, when inflate() returns early
- when Z_BLOCK or Z_TREES is used, and when inflate() avoids the allocation of
- memory for a sliding window when Z_FINISH is used.
-
- If a preset dictionary is needed after this call (see inflateSetDictionary
- below), inflate sets strm->adler to the Adler-32 checksum of the dictionary
- chosen by the compressor and returns Z_NEED_DICT; otherwise it sets
- strm->adler to the Adler-32 checksum of all output produced so far (that is,
- total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described
- below. At the end of the stream, inflate() checks that its computed adler32
- checksum is equal to that saved by the compressor and returns Z_STREAM_END
- only if the checksum is correct.
-
- inflate() can decompress and check either zlib-wrapped or gzip-wrapped
- deflate data. The header type is detected automatically, if requested when
- initializing with inflateInit2(). Any information contained in the gzip
- header is not retained, so applications that need that information should
- instead use raw inflate, see inflateInit2() below, or inflateBack() and
- perform their own processing of the gzip header and trailer. When processing
- gzip-wrapped deflate data, strm->adler32 is set to the CRC-32 of the output
- producted so far. The CRC-32 is checked against the gzip trailer.
-
- inflate() returns Z_OK if some progress has been made (more input processed
- or more output produced), Z_STREAM_END if the end of the compressed data has
- been reached and all uncompressed output has been produced, Z_NEED_DICT if a
- preset dictionary is needed at this point, Z_DATA_ERROR if the input data was
- corrupted (input stream not conforming to the zlib format or incorrect check
- value), Z_STREAM_ERROR if the stream structure was inconsistent (for example
- next_in or next_out was Z_NULL), Z_MEM_ERROR if there was not enough memory,
- Z_BUF_ERROR if no progress is possible or if there was not enough room in the
- output buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and
- inflate() can be called again with more input and more output space to
- continue decompressing. If Z_DATA_ERROR is returned, the application may
- then call inflateSync() to look for a good compression block if a partial
- recovery of the data is desired.
-*/
-
-
-ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm));
-/*
- All dynamically allocated data structures for this stream are freed.
- This function discards any unprocessed input and does not flush any pending
- output.
-
- inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state
- was inconsistent. In the error case, msg may be set but then points to a
- static string (which must not be deallocated).
-*/
-
-
- /* Advanced functions */
-
-/*
- The following functions are needed only in some special applications.
-*/
-
-/*
-ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,
- int level,
- int method,
- int windowBits,
- int memLevel,
- int strategy));
-
- This is another version of deflateInit with more compression options. The
- fields next_in, zalloc, zfree and opaque must be initialized before by the
- caller.
-
- The method parameter is the compression method. It must be Z_DEFLATED in
- this version of the library.
-
- The windowBits parameter is the base two logarithm of the window size
- (the size of the history buffer). It should be in the range 8..15 for this
- version of the library. Larger values of this parameter result in better
- compression at the expense of memory usage. The default value is 15 if
- deflateInit is used instead.
-
- windowBits can also be -8..-15 for raw deflate. In this case, -windowBits
- determines the window size. deflate() will then generate raw deflate data
- with no zlib header or trailer, and will not compute an adler32 check value.
-
- windowBits can also be greater than 15 for optional gzip encoding. Add
- 16 to windowBits to write a simple gzip header and trailer around the
- compressed data instead of a zlib wrapper. The gzip header will have no
- file name, no extra data, no comment, no modification time (set to zero), no
- header crc, and the operating system will be set to 255 (unknown). If a
- gzip stream is being written, strm->adler is a crc32 instead of an adler32.
-
- The memLevel parameter specifies how much memory should be allocated
- for the internal compression state. memLevel=1 uses minimum memory but is
- slow and reduces compression ratio; memLevel=9 uses maximum memory for
- optimal speed. The default value is 8. See zconf.h for total memory usage
- as a function of windowBits and memLevel.
-
- The strategy parameter is used to tune the compression algorithm. Use the
- value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a
- filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no
- string match), or Z_RLE to limit match distances to one (run-length
- encoding). Filtered data consists mostly of small values with a somewhat
- random distribution. In this case, the compression algorithm is tuned to
- compress them better. The effect of Z_FILTERED is to force more Huffman
- coding and less string matching; it is somewhat intermediate between
- Z_DEFAULT_STRATEGY and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as
- fast as Z_HUFFMAN_ONLY, but give better compression for PNG image data. The
- strategy parameter only affects the compression ratio but not the
- correctness of the compressed output even if it is not set appropriately.
- Z_FIXED prevents the use of dynamic Huffman codes, allowing for a simpler
- decoder for special applications.
-
- deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
- memory, Z_STREAM_ERROR if any parameter is invalid (such as an invalid
- method), or Z_VERSION_ERROR if the zlib library version (zlib_version) is
- incompatible with the version assumed by the caller (ZLIB_VERSION). msg is
- set to null if there is no error message. deflateInit2 does not perform any
- compression: this will be done by deflate().
-*/
-
-ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm,
- const Bytef *dictionary,
- uInt dictLength));
-/*
- Initializes the compression dictionary from the given byte sequence
- without producing any compressed output. When using the zlib format, this
- function must be called immediately after deflateInit, deflateInit2 or
- deflateReset, and before any call of deflate. When doing raw deflate, this
- function must be called either before any call of deflate, or immediately
- after the completion of a deflate block, i.e. after all input has been
- consumed and all output has been delivered when using any of the flush
- options Z_BLOCK, Z_PARTIAL_FLUSH, Z_SYNC_FLUSH, or Z_FULL_FLUSH. The
- compressor and decompressor must use exactly the same dictionary (see
- inflateSetDictionary).
-
- The dictionary should consist of strings (byte sequences) that are likely
- to be encountered later in the data to be compressed, with the most commonly
- used strings preferably put towards the end of the dictionary. Using a
- dictionary is most useful when the data to be compressed is short and can be
- predicted with good accuracy; the data can then be compressed better than
- with the default empty dictionary.
-
- Depending on the size of the compression data structures selected by
- deflateInit or deflateInit2, a part of the dictionary may in effect be
- discarded, for example if the dictionary is larger than the window size
- provided in deflateInit or deflateInit2. Thus the strings most likely to be
- useful should be put at the end of the dictionary, not at the front. In
- addition, the current implementation of deflate will use at most the window
- size minus 262 bytes of the provided dictionary.
-
- Upon return of this function, strm->adler is set to the adler32 value
- of the dictionary; the decompressor may later use this value to determine
- which dictionary has been used by the compressor. (The adler32 value
- applies to the whole dictionary even if only a subset of the dictionary is
- actually used by the compressor.) If a raw deflate was requested, then the
- adler32 value is not computed and strm->adler is not set.
-
- deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a
- parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is
- inconsistent (for example if deflate has already been called for this stream
- or if not at a block boundary for raw deflate). deflateSetDictionary does
- not perform any compression: this will be done by deflate().
-*/
-
-ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest,
- z_streamp source));
-/*
- Sets the destination stream as a complete copy of the source stream.
-
- This function can be useful when several compression strategies will be
- tried, for example when there are several ways of pre-processing the input
- data with a filter. The streams that will be discarded should then be freed
- by calling deflateEnd. Note that deflateCopy duplicates the internal
- compression state which can be quite large, so this strategy is slow and can
- consume lots of memory.
-
- deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
- enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
- (such as zalloc being Z_NULL). msg is left unchanged in both source and
- destination.
-*/
-
-ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm));
-/*
- This function is equivalent to deflateEnd followed by deflateInit,
- but does not free and reallocate all the internal compression state. The
- stream will keep the same compression level and any other attributes that
- may have been set by deflateInit2.
-
- deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
- stream state was inconsistent (such as zalloc or state being Z_NULL).
-*/
-
-ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm,
- int level,
- int strategy));
-/*
- Dynamically update the compression level and compression strategy. The
- interpretation of level and strategy is as in deflateInit2. This can be
- used to switch between compression and straight copy of the input data, or
- to switch to a different kind of input data requiring a different strategy.
- If the compression level is changed, the input available so far is
- compressed with the old level (and may be flushed); the new level will take
- effect only at the next call of deflate().
-
- Before the call of deflateParams, the stream state must be set as for
- a call of deflate(), since the currently available input may have to be
- compressed and flushed. In particular, strm->avail_out must be non-zero.
-
- deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source
- stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR if
- strm->avail_out was zero.
-*/
-
-ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm,
- int good_length,
- int max_lazy,
- int nice_length,
- int max_chain));
-/*
- Fine tune deflate's internal compression parameters. This should only be
- used by someone who understands the algorithm used by zlib's deflate for
- searching for the best matching string, and even then only by the most
- fanatic optimizer trying to squeeze out the last compressed bit for their
- specific input data. Read the deflate.c source code for the meaning of the
- max_lazy, good_length, nice_length, and max_chain parameters.
-
- deflateTune() can be called after deflateInit() or deflateInit2(), and
- returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream.
- */
-
-ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm,
- uLong sourceLen));
-/*
- deflateBound() returns an upper bound on the compressed size after
- deflation of sourceLen bytes. It must be called after deflateInit() or
- deflateInit2(), and after deflateSetHeader(), if used. This would be used
- to allocate an output buffer for deflation in a single pass, and so would be
- called before deflate(). If that first deflate() call is provided the
- sourceLen input bytes, an output buffer allocated to the size returned by
- deflateBound(), and the flush value Z_FINISH, then deflate() is guaranteed
- to return Z_STREAM_END. Note that it is possible for the compressed size to
- be larger than the value returned by deflateBound() if flush options other
- than Z_FINISH or Z_NO_FLUSH are used.
-*/
-
-ZEXTERN int ZEXPORT deflatePending OF((z_streamp strm,
- unsigned *pending,
- int *bits));
-/*
- deflatePending() returns the number of bytes and bits of output that have
- been generated, but not yet provided in the available output. The bytes not
- provided would be due to the available output space having being consumed.
- The number of bits of output not provided are between 0 and 7, where they
- await more bits to join them in order to fill out a full byte. If pending
- or bits are Z_NULL, then those values are not set.
-
- deflatePending returns Z_OK if success, or Z_STREAM_ERROR if the source
- stream state was inconsistent.
- */
-
-ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm,
- int bits,
- int value));
-/*
- deflatePrime() inserts bits in the deflate output stream. The intent
- is that this function is used to start off the deflate output with the bits
- leftover from a previous deflate stream when appending to it. As such, this
- function can only be used for raw deflate, and must be used before the first
- deflate() call after a deflateInit2() or deflateReset(). bits must be less
- than or equal to 16, and that many of the least significant bits of value
- will be inserted in the output.
-
- deflatePrime returns Z_OK if success, Z_BUF_ERROR if there was not enough
- room in the internal buffer to insert the bits, or Z_STREAM_ERROR if the
- source stream state was inconsistent.
-*/
-
-ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm,
- gz_headerp head));
-/*
- deflateSetHeader() provides gzip header information for when a gzip
- stream is requested by deflateInit2(). deflateSetHeader() may be called
- after deflateInit2() or deflateReset() and before the first call of
- deflate(). The text, time, os, extra field, name, and comment information
- in the provided gz_header structure are written to the gzip header (xflag is
- ignored -- the extra flags are set according to the compression level). The
- caller must assure that, if not Z_NULL, name and comment are terminated with
- a zero byte, and that if extra is not Z_NULL, that extra_len bytes are
- available there. If hcrc is true, a gzip header crc is included. Note that
- the current versions of the command-line version of gzip (up through version
- 1.3.x) do not support header crc's, and will report that it is a "multi-part
- gzip file" and give up.
-
- If deflateSetHeader is not used, the default gzip header has text false,
- the time set to zero, and os set to 255, with no extra, name, or comment
- fields. The gzip header is returned to the default state by deflateReset().
-
- deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source
- stream state was inconsistent.
-*/
-
-/*
-ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
- int windowBits));
-
- This is another version of inflateInit with an extra parameter. The
- fields next_in, avail_in, zalloc, zfree and opaque must be initialized
- before by the caller.
-
- The windowBits parameter is the base two logarithm of the maximum window
- size (the size of the history buffer). It should be in the range 8..15 for
- this version of the library. The default value is 15 if inflateInit is used
- instead. windowBits must be greater than or equal to the windowBits value
- provided to deflateInit2() while compressing, or it must be equal to 15 if
- deflateInit2() was not used. If a compressed stream with a larger window
- size is given as input, inflate() will return with the error code
- Z_DATA_ERROR instead of trying to allocate a larger window.
-
- windowBits can also be zero to request that inflate use the window size in
- the zlib header of the compressed stream.
-
- windowBits can also be -8..-15 for raw inflate. In this case, -windowBits
- determines the window size. inflate() will then process raw deflate data,
- not looking for a zlib or gzip header, not generating a check value, and not
- looking for any check values for comparison at the end of the stream. This
- is for use with other formats that use the deflate compressed data format
- such as zip. Those formats provide their own check values. If a custom
- format is developed using the raw deflate format for compressed data, it is
- recommended that a check value such as an adler32 or a crc32 be applied to
- the uncompressed data as is done in the zlib, gzip, and zip formats. For
- most applications, the zlib format should be used as is. Note that comments
- above on the use in deflateInit2() applies to the magnitude of windowBits.
-
- windowBits can also be greater than 15 for optional gzip decoding. Add
- 32 to windowBits to enable zlib and gzip decoding with automatic header
- detection, or add 16 to decode only the gzip format (the zlib format will
- return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is a
- crc32 instead of an adler32.
-
- inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
- memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
- version assumed by the caller, or Z_STREAM_ERROR if the parameters are
- invalid, such as a null pointer to the structure. msg is set to null if
- there is no error message. inflateInit2 does not perform any decompression
- apart from possibly reading the zlib header if present: actual decompression
- will be done by inflate(). (So next_in and avail_in may be modified, but
- next_out and avail_out are unused and unchanged.) The current implementation
- of inflateInit2() does not process any header information -- that is
- deferred until inflate() is called.
-*/
-
-ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
- const Bytef *dictionary,
- uInt dictLength));
-/*
- Initializes the decompression dictionary from the given uncompressed byte
- sequence. This function must be called immediately after a call of inflate,
- if that call returned Z_NEED_DICT. The dictionary chosen by the compressor
- can be determined from the adler32 value returned by that call of inflate.
- The compressor and decompressor must use exactly the same dictionary (see
- deflateSetDictionary). For raw inflate, this function can be called at any
- time to set the dictionary. If the provided dictionary is smaller than the
- window and there is already data in the window, then the provided dictionary
- will amend what's there. The application must insure that the dictionary
- that was used for compression is provided.
-
- inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a
- parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is
- inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the
- expected one (incorrect adler32 value). inflateSetDictionary does not
- perform any decompression: this will be done by subsequent calls of
- inflate().
-*/
-
-ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm));
-/*
- Skips invalid compressed data until a possible full flush point (see above
- for the description of deflate with Z_FULL_FLUSH) can be found, or until all
- available input is skipped. No output is provided.
-
- inflateSync searches for a 00 00 FF FF pattern in the compressed data.
- All full flush points have this pattern, but not all occurences of this
- pattern are full flush points.
-
- inflateSync returns Z_OK if a possible full flush point has been found,
- Z_BUF_ERROR if no more input was provided, Z_DATA_ERROR if no flush point
- has been found, or Z_STREAM_ERROR if the stream structure was inconsistent.
- In the success case, the application may save the current current value of
- total_in which indicates where valid compressed data was found. In the
- error case, the application may repeatedly call inflateSync, providing more
- input each time, until success or end of the input data.
-*/
-
-ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest,
- z_streamp source));
-/*
- Sets the destination stream as a complete copy of the source stream.
-
- This function can be useful when randomly accessing a large stream. The
- first pass through the stream can periodically record the inflate state,
- allowing restarting inflate at those points when randomly accessing the
- stream.
-
- inflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
- enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
- (such as zalloc being Z_NULL). msg is left unchanged in both source and
- destination.
-*/
-
-ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm));
-/*
- This function is equivalent to inflateEnd followed by inflateInit,
- but does not free and reallocate all the internal decompression state. The
- stream will keep attributes that may have been set by inflateInit2.
-
- inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
- stream state was inconsistent (such as zalloc or state being Z_NULL).
-*/
-
-ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm,
- int windowBits));
-/*
- This function is the same as inflateReset, but it also permits changing
- the wrap and window size requests. The windowBits parameter is interpreted
- the same as it is for inflateInit2.
-
- inflateReset2 returns Z_OK if success, or Z_STREAM_ERROR if the source
- stream state was inconsistent (such as zalloc or state being Z_NULL), or if
- the windowBits parameter is invalid.
-*/
-
-ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm,
- int bits,
- int value));
-/*
- This function inserts bits in the inflate input stream. The intent is
- that this function is used to start inflating at a bit position in the
- middle of a byte. The provided bits will be used before any bytes are used
- from next_in. This function should only be used with raw inflate, and
- should be used before the first inflate() call after inflateInit2() or
- inflateReset(). bits must be less than or equal to 16, and that many of the
- least significant bits of value will be inserted in the input.
-
- If bits is negative, then the input stream bit buffer is emptied. Then
- inflatePrime() can be called again to put bits in the buffer. This is used
- to clear out bits leftover after feeding inflate a block description prior
- to feeding inflate codes.
-
- inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source
- stream state was inconsistent.
-*/
-
-ZEXTERN long ZEXPORT inflateMark OF((z_streamp strm));
-/*
- This function returns two values, one in the lower 16 bits of the return
- value, and the other in the remaining upper bits, obtained by shifting the
- return value down 16 bits. If the upper value is -1 and the lower value is
- zero, then inflate() is currently decoding information outside of a block.
- If the upper value is -1 and the lower value is non-zero, then inflate is in
- the middle of a stored block, with the lower value equaling the number of
- bytes from the input remaining to copy. If the upper value is not -1, then
- it is the number of bits back from the current bit position in the input of
- the code (literal or length/distance pair) currently being processed. In
- that case the lower value is the number of bytes already emitted for that
- code.
-
- A code is being processed if inflate is waiting for more input to complete
- decoding of the code, or if it has completed decoding but is waiting for
- more output space to write the literal or match data.
-
- inflateMark() is used to mark locations in the input data for random
- access, which may be at bit positions, and to note those cases where the
- output of a code may span boundaries of random access blocks. The current
- location in the input stream can be determined from avail_in and data_type
- as noted in the description for the Z_BLOCK flush parameter for inflate.
-
- inflateMark returns the value noted above or -1 << 16 if the provided
- source stream state was inconsistent.
-*/
-
-ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm,
- gz_headerp head));
-/*
- inflateGetHeader() requests that gzip header information be stored in the
- provided gz_header structure. inflateGetHeader() may be called after
- inflateInit2() or inflateReset(), and before the first call of inflate().
- As inflate() processes the gzip stream, head->done is zero until the header
- is completed, at which time head->done is set to one. If a zlib stream is
- being decoded, then head->done is set to -1 to indicate that there will be
- no gzip header information forthcoming. Note that Z_BLOCK or Z_TREES can be
- used to force inflate() to return immediately after header processing is
- complete and before any actual data is decompressed.
-
- The text, time, xflags, and os fields are filled in with the gzip header
- contents. hcrc is set to true if there is a header CRC. (The header CRC
- was valid if done is set to one.) If extra is not Z_NULL, then extra_max
- contains the maximum number of bytes to write to extra. Once done is true,
- extra_len contains the actual extra field length, and extra contains the
- extra field, or that field truncated if extra_max is less than extra_len.
- If name is not Z_NULL, then up to name_max characters are written there,
- terminated with a zero unless the length is greater than name_max. If
- comment is not Z_NULL, then up to comm_max characters are written there,
- terminated with a zero unless the length is greater than comm_max. When any
- of extra, name, or comment are not Z_NULL and the respective field is not
- present in the header, then that field is set to Z_NULL to signal its
- absence. This allows the use of deflateSetHeader() with the returned
- structure to duplicate the header. However if those fields are set to
- allocated memory, then the application will need to save those pointers
- elsewhere so that they can be eventually freed.
-
- If inflateGetHeader is not used, then the header information is simply
- discarded. The header is always checked for validity, including the header
- CRC if present. inflateReset() will reset the process to discard the header
- information. The application would need to call inflateGetHeader() again to
- retrieve the header from the next gzip stream.
-
- inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source
- stream state was inconsistent.
-*/
-
-/*
-ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits,
- unsigned char FAR *window));
-
- Initialize the internal stream state for decompression using inflateBack()
- calls. The fields zalloc, zfree and opaque in strm must be initialized
- before the call. If zalloc and zfree are Z_NULL, then the default library-
- derived memory allocation routines are used. windowBits is the base two
- logarithm of the window size, in the range 8..15. window is a caller
- supplied buffer of that size. Except for special applications where it is
- assured that deflate was used with small window sizes, windowBits must be 15
- and a 32K byte window must be supplied to be able to decompress general
- deflate streams.
-
- See inflateBack() for the usage of these routines.
-
- inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of
- the parameters are invalid, Z_MEM_ERROR if the internal state could not be
- allocated, or Z_VERSION_ERROR if the version of the library does not match
- the version of the header file.
-*/
-
-typedef unsigned (*in_func) OF((void FAR *, unsigned char FAR * FAR *));
-typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned));
-
-ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm,
- in_func in, void FAR *in_desc,
- out_func out, void FAR *out_desc));
-/*
- inflateBack() does a raw inflate with a single call using a call-back
- interface for input and output. This is more efficient than inflate() for
- file i/o applications in that it avoids copying between the output and the
- sliding window by simply making the window itself the output buffer. This
- function trusts the application to not change the output buffer passed by
- the output function, at least until inflateBack() returns.
-
- inflateBackInit() must be called first to allocate the internal state
- and to initialize the state with the user-provided window buffer.
- inflateBack() may then be used multiple times to inflate a complete, raw
- deflate stream with each call. inflateBackEnd() is then called to free the
- allocated state.
-
- A raw deflate stream is one with no zlib or gzip header or trailer.
- This routine would normally be used in a utility that reads zip or gzip
- files and writes out uncompressed files. The utility would decode the
- header and process the trailer on its own, hence this routine expects only
- the raw deflate stream to decompress. This is different from the normal
- behavior of inflate(), which expects either a zlib or gzip header and
- trailer around the deflate stream.
-
- inflateBack() uses two subroutines supplied by the caller that are then
- called by inflateBack() for input and output. inflateBack() calls those
- routines until it reads a complete deflate stream and writes out all of the
- uncompressed data, or until it encounters an error. The function's
- parameters and return types are defined above in the in_func and out_func
- typedefs. inflateBack() will call in(in_desc, &buf) which should return the
- number of bytes of provided input, and a pointer to that input in buf. If
- there is no input available, in() must return zero--buf is ignored in that
- case--and inflateBack() will return a buffer error. inflateBack() will call
- out(out_desc, buf, len) to write the uncompressed data buf[0..len-1]. out()
- should return zero on success, or non-zero on failure. If out() returns
- non-zero, inflateBack() will return with an error. Neither in() nor out()
- are permitted to change the contents of the window provided to
- inflateBackInit(), which is also the buffer that out() uses to write from.
- The length written by out() will be at most the window size. Any non-zero
- amount of input may be provided by in().
-
- For convenience, inflateBack() can be provided input on the first call by
- setting strm->next_in and strm->avail_in. If that input is exhausted, then
- in() will be called. Therefore strm->next_in must be initialized before
- calling inflateBack(). If strm->next_in is Z_NULL, then in() will be called
- immediately for input. If strm->next_in is not Z_NULL, then strm->avail_in
- must also be initialized, and then if strm->avail_in is not zero, input will
- initially be taken from strm->next_in[0 .. strm->avail_in - 1].
-
- The in_desc and out_desc parameters of inflateBack() is passed as the
- first parameter of in() and out() respectively when they are called. These
- descriptors can be optionally used to pass any information that the caller-
- supplied in() and out() functions need to do their job.
-
- On return, inflateBack() will set strm->next_in and strm->avail_in to
- pass back any unused input that was provided by the last in() call. The
- return values of inflateBack() can be Z_STREAM_END on success, Z_BUF_ERROR
- if in() or out() returned an error, Z_DATA_ERROR if there was a format error
- in the deflate stream (in which case strm->msg is set to indicate the nature
- of the error), or Z_STREAM_ERROR if the stream was not properly initialized.
- In the case of Z_BUF_ERROR, an input or output error can be distinguished
- using strm->next_in which will be Z_NULL only if in() returned an error. If
- strm->next_in is not Z_NULL, then the Z_BUF_ERROR was due to out() returning
- non-zero. (in() will always be called before out(), so strm->next_in is
- assured to be defined if out() returns non-zero.) Note that inflateBack()
- cannot return Z_OK.
-*/
-
-ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm));
-/*
- All memory allocated by inflateBackInit() is freed.
-
- inflateBackEnd() returns Z_OK on success, or Z_STREAM_ERROR if the stream
- state was inconsistent.
-*/
-
-ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void));
-/* Return flags indicating compile-time options.
-
- Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other:
- 1.0: size of uInt
- 3.2: size of uLong
- 5.4: size of voidpf (pointer)
- 7.6: size of z_off_t
-
- Compiler, assembler, and debug options:
- 8: DEBUG
- 9: ASMV or ASMINF -- use ASM code
- 10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention
- 11: 0 (reserved)
-
- One-time table building (smaller code, but not thread-safe if true):
- 12: BUILDFIXED -- build static block decoding tables when needed
- 13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed
- 14,15: 0 (reserved)
-
- Library content (indicates missing functionality):
- 16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking
- deflate code when not needed)
- 17: NO_GZIP -- deflate can't write gzip streams, and inflate can't detect
- and decode gzip streams (to avoid linking crc code)
- 18-19: 0 (reserved)
-
- Operation variations (changes in library functionality):
- 20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate
- 21: FASTEST -- deflate algorithm with only one, lowest compression level
- 22,23: 0 (reserved)
-
- The sprintf variant used by gzprintf (zero is best):
- 24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format
- 25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure!
- 26: 0 = returns value, 1 = void -- 1 means inferred string length returned
-
- Remainder:
- 27-31: 0 (reserved)
- */
-
-#ifndef Z_SOLO
-
- /* utility functions */
-
-/*
- The following utility functions are implemented on top of the basic
- stream-oriented functions. To simplify the interface, some default options
- are assumed (compression level and memory usage, standard memory allocation
- functions). The source code of these utility functions can be modified if
- you need special options.
-*/
-
-ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen,
- const Bytef *source, uLong sourceLen));
-/*
- Compresses the source buffer into the destination buffer. sourceLen is
- the byte length of the source buffer. Upon entry, destLen is the total size
- of the destination buffer, which must be at least the value returned by
- compressBound(sourceLen). Upon exit, destLen is the actual size of the
- compressed buffer.
-
- compress returns Z_OK if success, Z_MEM_ERROR if there was not
- enough memory, Z_BUF_ERROR if there was not enough room in the output
- buffer.
-*/
-
-ZEXTERN int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen,
- const Bytef *source, uLong sourceLen,
- int level));
-/*
- Compresses the source buffer into the destination buffer. The level
- parameter has the same meaning as in deflateInit. sourceLen is the byte
- length of the source buffer. Upon entry, destLen is the total size of the
- destination buffer, which must be at least the value returned by
- compressBound(sourceLen). Upon exit, destLen is the actual size of the
- compressed buffer.
-
- compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
- memory, Z_BUF_ERROR if there was not enough room in the output buffer,
- Z_STREAM_ERROR if the level parameter is invalid.
-*/
-
-ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen));
-/*
- compressBound() returns an upper bound on the compressed size after
- compress() or compress2() on sourceLen bytes. It would be used before a
- compress() or compress2() call to allocate the destination buffer.
-*/
-
-ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen,
- const Bytef *source, uLong sourceLen));
-/*
- Decompresses the source buffer into the destination buffer. sourceLen is
- the byte length of the source buffer. Upon entry, destLen is the total size
- of the destination buffer, which must be large enough to hold the entire
- uncompressed data. (The size of the uncompressed data must have been saved
- previously by the compressor and transmitted to the decompressor by some
- mechanism outside the scope of this compression library.) Upon exit, destLen
- is the actual size of the uncompressed buffer.
-
- uncompress returns Z_OK if success, Z_MEM_ERROR if there was not
- enough memory, Z_BUF_ERROR if there was not enough room in the output
- buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete. In
- the case where there is not enough room, uncompress() will fill the output
- buffer with the uncompressed data up to that point.
-*/
-
- /* gzip file access functions */
-
-/*
- This library supports reading and writing files in gzip (.gz) format with
- an interface similar to that of stdio, using the functions that start with
- "gz". The gzip format is different from the zlib format. gzip is a gzip
- wrapper, documented in RFC 1952, wrapped around a deflate stream.
-*/
-
-typedef struct gzFile_s *gzFile; /* semi-opaque gzip file descriptor */
-
-/*
-ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode));
-
- Opens a gzip (.gz) file for reading or writing. The mode parameter is as
- in fopen ("rb" or "wb") but can also include a compression level ("wb9") or
- a strategy: 'f' for filtered data as in "wb6f", 'h' for Huffman-only
- compression as in "wb1h", 'R' for run-length encoding as in "wb1R", or 'F'
- for fixed code compression as in "wb9F". (See the description of
- deflateInit2 for more information about the strategy parameter.) 'T' will
- request transparent writing or appending with no compression and not using
- the gzip format.
-
- "a" can be used instead of "w" to request that the gzip stream that will
- be written be appended to the file. "+" will result in an error, since
- reading and writing to the same gzip file is not supported. The addition of
- "x" when writing will create the file exclusively, which fails if the file
- already exists. On systems that support it, the addition of "e" when
- reading or writing will set the flag to close the file on an execve() call.
-
- These functions, as well as gzip, will read and decode a sequence of gzip
- streams in a file. The append function of gzopen() can be used to create
- such a file. (Also see gzflush() for another way to do this.) When
- appending, gzopen does not test whether the file begins with a gzip stream,
- nor does it look for the end of the gzip streams to begin appending. gzopen
- will simply append a gzip stream to the existing file.
-
- gzopen can be used to read a file which is not in gzip format; in this
- case gzread will directly read from the file without decompression. When
- reading, this will be detected automatically by looking for the magic two-
- byte gzip header.
-
- gzopen returns NULL if the file could not be opened, if there was
- insufficient memory to allocate the gzFile state, or if an invalid mode was
- specified (an 'r', 'w', or 'a' was not provided, or '+' was provided).
- errno can be checked to determine if the reason gzopen failed was that the
- file could not be opened.
-*/
-
-ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode));
-/*
- gzdopen associates a gzFile with the file descriptor fd. File descriptors
- are obtained from calls like open, dup, creat, pipe or fileno (if the file
- has been previously opened with fopen). The mode parameter is as in gzopen.
-
- The next call of gzclose on the returned gzFile will also close the file
- descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor
- fd. If you want to keep fd open, use fd = dup(fd_keep); gz = gzdopen(fd,
- mode);. The duplicated descriptor should be saved to avoid a leak, since
- gzdopen does not close fd if it fails. If you are using fileno() to get the
- file descriptor from a FILE *, then you will have to use dup() to avoid
- double-close()ing the file descriptor. Both gzclose() and fclose() will
- close the associated file descriptor, so they need to have different file
- descriptors.
-
- gzdopen returns NULL if there was insufficient memory to allocate the
- gzFile state, if an invalid mode was specified (an 'r', 'w', or 'a' was not
- provided, or '+' was provided), or if fd is -1. The file descriptor is not
- used until the next gz* read, write, seek, or close operation, so gzdopen
- will not detect if fd is invalid (unless fd is -1).
-*/
-
-ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size));
-/*
- Set the internal buffer size used by this library's functions. The
- default buffer size is 8192 bytes. This function must be called after
- gzopen() or gzdopen(), and before any other calls that read or write the
- file. The buffer memory allocation is always deferred to the first read or
- write. Two buffers are allocated, either both of the specified size when
- writing, or one of the specified size and the other twice that size when
- reading. A larger buffer size of, for example, 64K or 128K bytes will
- noticeably increase the speed of decompression (reading).
-
- The new buffer size also affects the maximum length for gzprintf().
-
- gzbuffer() returns 0 on success, or -1 on failure, such as being called
- too late.
-*/
-
-ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));
-/*
- Dynamically update the compression level or strategy. See the description
- of deflateInit2 for the meaning of these parameters.
-
- gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not
- opened for writing.
-*/
-
-ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len));
-/*
- Reads the given number of uncompressed bytes from the compressed file. If
- the input file is not in gzip format, gzread copies the given number of
- bytes into the buffer directly from the file.
-
- After reaching the end of a gzip stream in the input, gzread will continue
- to read, looking for another gzip stream. Any number of gzip streams may be
- concatenated in the input file, and will all be decompressed by gzread().
- If something other than a gzip stream is encountered after a gzip stream,
- that remaining trailing garbage is ignored (and no error is returned).
-
- gzread can be used to read a gzip file that is being concurrently written.
- Upon reaching the end of the input, gzread will return with the available
- data. If the error code returned by gzerror is Z_OK or Z_BUF_ERROR, then
- gzclearerr can be used to clear the end of file indicator in order to permit
- gzread to be tried again. Z_OK indicates that a gzip stream was completed
- on the last gzread. Z_BUF_ERROR indicates that the input file ended in the
- middle of a gzip stream. Note that gzread does not return -1 in the event
- of an incomplete gzip stream. This error is deferred until gzclose(), which
- will return Z_BUF_ERROR if the last gzread ended in the middle of a gzip
- stream. Alternatively, gzerror can be used before gzclose to detect this
- case.
-
- gzread returns the number of uncompressed bytes actually read, less than
- len for end of file, or -1 for error.
-*/
-
-ZEXTERN int ZEXPORT gzwrite OF((gzFile file,
- voidpc buf, unsigned len));
-/*
- Writes the given number of uncompressed bytes into the compressed file.
- gzwrite returns the number of uncompressed bytes written or 0 in case of
- error.
-*/
-
-ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...));
-/*
- Converts, formats, and writes the arguments to the compressed file under
- control of the format string, as in fprintf. gzprintf returns the number of
- uncompressed bytes actually written, or 0 in case of error. The number of
- uncompressed bytes written is limited to 8191, or one less than the buffer
- size given to gzbuffer(). The caller should assure that this limit is not
- exceeded. If it is exceeded, then gzprintf() will return an error (0) with
- nothing written. In this case, there may also be a buffer overflow with
- unpredictable consequences, which is possible only if zlib was compiled with
- the insecure functions sprintf() or vsprintf() because the secure snprintf()
- or vsnprintf() functions were not available. This can be determined using
- zlibCompileFlags().
-*/
-
-ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s));
-/*
- Writes the given null-terminated string to the compressed file, excluding
- the terminating null character.
-
- gzputs returns the number of characters written, or -1 in case of error.
-*/
-
-ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len));
-/*
- Reads bytes from the compressed file until len-1 characters are read, or a
- newline character is read and transferred to buf, or an end-of-file
- condition is encountered. If any characters are read or if len == 1, the
- string is terminated with a null character. If no characters are read due
- to an end-of-file or len < 1, then the buffer is left untouched.
-
- gzgets returns buf which is a null-terminated string, or it returns NULL
- for end-of-file or in case of error. If there was an error, the contents at
- buf are indeterminate.
-*/
-
-ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c));
-/*
- Writes c, converted to an unsigned char, into the compressed file. gzputc
- returns the value that was written, or -1 in case of error.
-*/
-
-ZEXTERN int ZEXPORT gzgetc OF((gzFile file));
-/*
- Reads one byte from the compressed file. gzgetc returns this byte or -1
- in case of end of file or error. This is implemented as a macro for speed.
- As such, it does not do all of the checking the other functions do. I.e.
- it does not check to see if file is NULL, nor whether the structure file
- points to has been clobbered or not.
-*/
-
-ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file));
-/*
- Push one character back onto the stream to be read as the first character
- on the next read. At least one character of push-back is allowed.
- gzungetc() returns the character pushed, or -1 on failure. gzungetc() will
- fail if c is -1, and may fail if a character has been pushed but not read
- yet. If gzungetc is used immediately after gzopen or gzdopen, at least the
- output buffer size of pushed characters is allowed. (See gzbuffer above.)
- The pushed character will be discarded if the stream is repositioned with
- gzseek() or gzrewind().
-*/
-
-ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush));
-/*
- Flushes all pending output into the compressed file. The parameter flush
- is as in the deflate() function. The return value is the zlib error number
- (see function gzerror below). gzflush is only permitted when writing.
-
- If the flush parameter is Z_FINISH, the remaining data is written and the
- gzip stream is completed in the output. If gzwrite() is called again, a new
- gzip stream will be started in the output. gzread() is able to read such
- concatented gzip streams.
-
- gzflush should be called only when strictly necessary because it will
- degrade compression if called too often.
-*/
-
-/*
-ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file,
- z_off_t offset, int whence));
-
- Sets the starting position for the next gzread or gzwrite on the given
- compressed file. The offset represents a number of bytes in the
- uncompressed data stream. The whence parameter is defined as in lseek(2);
- the value SEEK_END is not supported.
-
- If the file is opened for reading, this function is emulated but can be
- extremely slow. If the file is opened for writing, only forward seeks are
- supported; gzseek then compresses a sequence of zeroes up to the new
- starting position.
-
- gzseek returns the resulting offset location as measured in bytes from
- the beginning of the uncompressed stream, or -1 in case of error, in
- particular if the file is opened for writing and the new starting position
- would be before the current position.
-*/
-
-ZEXTERN int ZEXPORT gzrewind OF((gzFile file));
-/*
- Rewinds the given file. This function is supported only for reading.
-
- gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET)
-*/
-
-/*
-ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file));
-
- Returns the starting position for the next gzread or gzwrite on the given
- compressed file. This position represents a number of bytes in the
- uncompressed data stream, and is zero when starting, even if appending or
- reading a gzip stream from the middle of a file using gzdopen().
-
- gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR)
-*/
-
-/*
-ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile file));
-
- Returns the current offset in the file being read or written. This offset
- includes the count of bytes that precede the gzip stream, for example when
- appending or when using gzdopen() for reading. When reading, the offset
- does not include as yet unused buffered input. This information can be used
- for a progress indicator. On error, gzoffset() returns -1.
-*/
-
-ZEXTERN int ZEXPORT gzeof OF((gzFile file));
-/*
- Returns true (1) if the end-of-file indicator has been set while reading,
- false (0) otherwise. Note that the end-of-file indicator is set only if the
- read tried to go past the end of the input, but came up short. Therefore,
- just like feof(), gzeof() may return false even if there is no more data to
- read, in the event that the last read request was for the exact number of
- bytes remaining in the input file. This will happen if the input file size
- is an exact multiple of the buffer size.
-
- If gzeof() returns true, then the read functions will return no more data,
- unless the end-of-file indicator is reset by gzclearerr() and the input file
- has grown since the previous end of file was detected.
-*/
-
-ZEXTERN int ZEXPORT gzdirect OF((gzFile file));
-/*
- Returns true (1) if file is being copied directly while reading, or false
- (0) if file is a gzip stream being decompressed.
-
- If the input file is empty, gzdirect() will return true, since the input
- does not contain a gzip stream.
-
- If gzdirect() is used immediately after gzopen() or gzdopen() it will
- cause buffers to be allocated to allow reading the file to determine if it
- is a gzip file. Therefore if gzbuffer() is used, it should be called before
- gzdirect().
-
- When writing, gzdirect() returns true (1) if transparent writing was
- requested ("wT" for the gzopen() mode), or false (0) otherwise. (Note:
- gzdirect() is not needed when writing. Transparent writing must be
- explicitly requested, so the application already knows the answer. When
- linking statically, using gzdirect() will include all of the zlib code for
- gzip file reading and decompression, which may not be desired.)
-*/
-
-ZEXTERN int ZEXPORT gzclose OF((gzFile file));
-/*
- Flushes all pending output if necessary, closes the compressed file and
- deallocates the (de)compression state. Note that once file is closed, you
- cannot call gzerror with file, since its structures have been deallocated.
- gzclose must not be called more than once on the same file, just as free
- must not be called more than once on the same allocation.
-
- gzclose will return Z_STREAM_ERROR if file is not valid, Z_ERRNO on a
- file operation error, Z_MEM_ERROR if out of memory, Z_BUF_ERROR if the
- last read ended in the middle of a gzip stream, or Z_OK on success.
-*/
-
-ZEXTERN int ZEXPORT gzclose_r OF((gzFile file));
-ZEXTERN int ZEXPORT gzclose_w OF((gzFile file));
-/*
- Same as gzclose(), but gzclose_r() is only for use when reading, and
- gzclose_w() is only for use when writing or appending. The advantage to
- using these instead of gzclose() is that they avoid linking in zlib
- compression or decompression code that is not used when only reading or only
- writing respectively. If gzclose() is used, then both compression and
- decompression code will be included the application when linking to a static
- zlib library.
-*/
-
-ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum));
-/*
- Returns the error message for the last error which occurred on the given
- compressed file. errnum is set to zlib error number. If an error occurred
- in the file system and not in the compression library, errnum is set to
- Z_ERRNO and the application may consult errno to get the exact error code.
-
- The application must not modify the returned string. Future calls to
- this function may invalidate the previously returned string. If file is
- closed, then the string previously returned by gzerror will no longer be
- available.
-
- gzerror() should be used to distinguish errors from end-of-file for those
- functions above that do not distinguish those cases in their return values.
-*/
-
-ZEXTERN void ZEXPORT gzclearerr OF((gzFile file));
-/*
- Clears the error and end-of-file flags for file. This is analogous to the
- clearerr() function in stdio. This is useful for continuing to read a gzip
- file that is being written concurrently.
-*/
-
-#endif /* !Z_SOLO */
-
- /* checksum functions */
-
-/*
- These functions are not related to compression but are exported
- anyway because they might be useful in applications using the compression
- library.
-*/
-
-ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
-/*
- Update a running Adler-32 checksum with the bytes buf[0..len-1] and
- return the updated checksum. If buf is Z_NULL, this function returns the
- required initial value for the checksum.
-
- An Adler-32 checksum is almost as reliable as a CRC32 but can be computed
- much faster.
-
- Usage example:
-
- uLong adler = adler32(0L, Z_NULL, 0);
-
- while (read_buffer(buffer, length) != EOF) {
- adler = adler32(adler, buffer, length);
- }
- if (adler != original_adler) error();
-*/
-
-/*
-ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2,
- z_off_t len2));
-
- Combine two Adler-32 checksums into one. For two sequences of bytes, seq1
- and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for
- each, adler1 and adler2. adler32_combine() returns the Adler-32 checksum of
- seq1 and seq2 concatenated, requiring only adler1, adler2, and len2. Note
- that the z_off_t type (like off_t) is a signed integer. If len2 is
- negative, the result has no meaning or utility.
-*/
-
-ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
-/*
- Update a running CRC-32 with the bytes buf[0..len-1] and return the
- updated CRC-32. If buf is Z_NULL, this function returns the required
- initial value for the crc. Pre- and post-conditioning (one's complement) is
- performed within this function so it shouldn't be done by the application.
-
- Usage example:
-
- uLong crc = crc32(0L, Z_NULL, 0);
-
- while (read_buffer(buffer, length) != EOF) {
- crc = crc32(crc, buffer, length);
- }
- if (crc != original_crc) error();
-*/
-
-/*
-ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2));
-
- Combine two CRC-32 check values into one. For two sequences of bytes,
- seq1 and seq2 with lengths len1 and len2, CRC-32 check values were
- calculated for each, crc1 and crc2. crc32_combine() returns the CRC-32
- check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and
- len2.
-*/
-
-
- /* various hacks, don't look :) */
-
-/* deflateInit and inflateInit are macros to allow checking the zlib version
- * and the compiler's view of z_stream:
- */
-ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level,
- const char *version, int stream_size));
-ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm,
- const char *version, int stream_size));
-ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int level, int method,
- int windowBits, int memLevel,
- int strategy, const char *version,
- int stream_size));
-ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int windowBits,
- const char *version, int stream_size));
-ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits,
- unsigned char FAR *window,
- const char *version,
- int stream_size));
-#define deflateInit(strm, level) \
- deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream))
-#define inflateInit(strm) \
- inflateInit_((strm), ZLIB_VERSION, (int)sizeof(z_stream))
-#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \
- deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\
- (strategy), ZLIB_VERSION, (int)sizeof(z_stream))
-#define inflateInit2(strm, windowBits) \
- inflateInit2_((strm), (windowBits), ZLIB_VERSION, \
- (int)sizeof(z_stream))
-#define inflateBackInit(strm, windowBits, window) \
- inflateBackInit_((strm), (windowBits), (window), \
- ZLIB_VERSION, (int)sizeof(z_stream))
-
-#ifndef Z_SOLO
-
-/* gzgetc() macro and its supporting function and exposed data structure. Note
- * that the real internal state is much larger than the exposed structure.
- * This abbreviated structure exposes just enough for the gzgetc() macro. The
- * user should not mess with these exposed elements, since their names or
- * behavior could change in the future, perhaps even capriciously. They can
- * only be used by the gzgetc() macro. You have been warned.
- */
-struct gzFile_s {
- unsigned have;
- unsigned char *next;
- z_off64_t pos;
-};
-ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */
-#ifdef Z_PREFIX_SET
-# undef z_gzgetc
-# define z_gzgetc(g) \
- ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g))
-#else
-# define gzgetc(g) \
- ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g))
-#endif
-
-/* provide 64-bit offset functions if _LARGEFILE64_SOURCE defined, and/or
- * change the regular functions to 64 bits if _FILE_OFFSET_BITS is 64 (if
- * both are true, the application gets the *64 functions, and the regular
- * functions are changed to 64 bits) -- in case these are set on systems
- * without large file support, _LFS64_LARGEFILE must also be true
- */
-#ifdef Z_LARGE64
- ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *));
- ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int));
- ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile));
- ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile));
- ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off64_t));
- ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off64_t));
-#endif
-
-#if !defined(ZLIB_INTERNAL) && defined(Z_WANT64)
-# ifdef Z_PREFIX_SET
-# define z_gzopen z_gzopen64
-# define z_gzseek z_gzseek64
-# define z_gztell z_gztell64
-# define z_gzoffset z_gzoffset64
-# define z_adler32_combine z_adler32_combine64
-# define z_crc32_combine z_crc32_combine64
-# else
-# define gzopen gzopen64
-# define gzseek gzseek64
-# define gztell gztell64
-# define gzoffset gzoffset64
-# define adler32_combine adler32_combine64
-# define crc32_combine crc32_combine64
-# endif
-# ifndef Z_LARGE64
- ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *));
- ZEXTERN z_off_t ZEXPORT gzseek64 OF((gzFile, z_off_t, int));
- ZEXTERN z_off_t ZEXPORT gztell64 OF((gzFile));
- ZEXTERN z_off_t ZEXPORT gzoffset64 OF((gzFile));
- ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t));
- ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t));
-# endif
-#else
- ZEXTERN gzFile ZEXPORT gzopen OF((const char *, const char *));
- ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile, z_off_t, int));
- ZEXTERN z_off_t ZEXPORT gztell OF((gzFile));
- ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile));
- ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t));
- ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t));
-#endif
-
-#else /* Z_SOLO */
-
- ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t));
- ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t));
-
-#endif /* !Z_SOLO */
-
-/* hack for buggy compilers */
-#if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL)
- struct internal_state {int dummy;};
-#endif
-
-/* undocumented functions */
-ZEXTERN const char * ZEXPORT zError OF((int));
-ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp));
-ZEXTERN const z_crc_t FAR * ZEXPORT get_crc_table OF((void));
-ZEXTERN int ZEXPORT inflateUndermine OF((z_streamp, int));
-ZEXTERN int ZEXPORT inflateResetKeep OF((z_streamp));
-ZEXTERN int ZEXPORT deflateResetKeep OF((z_streamp));
-#if defined(_WIN32) && !defined(Z_SOLO)
-ZEXTERN gzFile ZEXPORT gzopen_w OF((const wchar_t *path,
- const char *mode));
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* ZLIB_H */
diff --git a/python-packages/.gitignore b/python-packages/.gitignore
index a65d04669..a81c8ee12 100644
--- a/python-packages/.gitignore
+++ b/python-packages/.gitignore
@@ -8,7 +8,6 @@ __pycache__/
# Distribution / packaging
.Python
-env/
build/
develop-eggs/
dist/
@@ -20,9 +19,12 @@ lib64/
parts/
sdist/
var/
+wheels/
+share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
+MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
@@ -37,12 +39,17 @@ pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
+.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
-*,cover
+*.cover
+*.py,cover
+.hypothesis/
+.pytest_cache/
+cover/
# Translations
*.mo
@@ -50,9 +57,82 @@ coverage.xml
# Django stuff:
*.log
+local_settings.py
+db.sqlite3
+db.sqlite3-journal
+
+# Flask stuff:
+instance/
+.webassets-cache
+
+# Scrapy stuff:
+.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
+.pybuilder/
target/
+
+# Jupyter Notebook
+.ipynb_checkpoints
+
+# IPython
+profile_default/
+ipython_config.py
+
+# pyenv
+# For a library or package, you might want to ignore these files since the code is
+# intended to run in multiple environments; otherwise, check them in:
+# .python-version
+
+# pipenv
+# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
+# However, in case of collaboration, if having platform-specific dependencies or dependencies
+# having no cross-platform support, pipenv may install dependencies that don't work, or not
+# install all needed dependencies.
+#Pipfile.lock
+
+# PEP 582; used by e.g. github.com/David-OConnor/pyflow
+__pypackages__/
+
+# Celery stuff
+celerybeat-schedule
+celerybeat.pid
+
+# SageMath parsed files
+*.sage.py
+
+# Environments
+.env
+.venv
+env/
+venv/
+ENV/
+env.bak/
+venv.bak/
+
+# Spyder project settings
+.spyderproject
+.spyproject
+
+# Rope project settings
+.ropeproject
+
+# mkdocs documentation
+/site
+
+# mypy
+.mypy_cache/
+.dmypy.json
+dmypy.json
+
+# Pyre type checker
+.pyre/
+
+# pytype static type analyzer
+.pytype/
+
+# Cython debug symbols
+cython_debug/
diff --git a/python-packages/Android.bp b/python-packages/Android.bp
index 57031f502..ec592dbd0 100644
--- a/python-packages/Android.bp
+++ b/python-packages/Android.bp
@@ -12,6 +12,23 @@
// See the License for the specific language governing permissions and
// limitations under the License.
+package {
+ default_applicable_licenses: ["development_python-packages_license"],
+}
+
+// Added automatically by a large-scale-change
+// See: http://go/android-license-faq
+license {
+ name: "development_python-packages_license",
+ visibility: [":__subpackages__"],
+ license_kinds: [
+ "SPDX-license-identifier-Apache-2.0",
+ ],
+ license_text: [
+ "NOTICE",
+ ],
+}
+
python_library_host {
name: "adb_py",
srcs: [
diff --git a/python-packages/adb/device.py b/python-packages/adb/device.py
index e0da8f5a0..3a0415929 100644
--- a/python-packages/adb/device.py
+++ b/python-packages/adb/device.py
@@ -435,7 +435,13 @@ class AndroidDevice(object):
cmd = ['push']
if sync:
cmd.append('--sync')
- cmd.extend([local, remote])
+
+ if isinstance(local, str):
+ cmd.extend([local, remote])
+ else:
+ cmd.extend(local)
+ cmd.append(remote)
+
return self._simple_call(cmd)
def pull(self, remote, local):
diff --git a/python-packages/gdbrunner/__init__.py b/python-packages/gdbrunner/__init__.py
index 0f13e158c..b69069d60 100644
--- a/python-packages/gdbrunner/__init__.py
+++ b/python-packages/gdbrunner/__init__.py
@@ -182,23 +182,40 @@ def start_gdbserver(device, gdbserver_local_path, gdbserver_remote_path,
if target_pid is not None:
gdbserver_cmd += ["--attach", str(target_pid)]
else:
- gdbserver_cmd += run_cmd
+ gdbserver_cmd += ["--"] + run_cmd
forward_gdbserver_port(device, local=port, remote="localfilesystem:{}".format(debug_socket))
if run_as_cmd:
gdbserver_cmd = run_as_cmd + gdbserver_cmd
- gdbserver_output_path = os.path.join(tempfile.gettempdir(),
- "gdbclient.log")
- print("Redirecting gdbserver output to {}".format(gdbserver_output_path))
+ if lldb:
+ gdbserver_output_path = os.path.join(tempfile.gettempdir(),
+ "lldb-client.log")
+ print("Redirecting lldb-server output to {}".format(gdbserver_output_path))
+ else:
+ gdbserver_output_path = os.path.join(tempfile.gettempdir(),
+ "gdbclient.log")
+ print("Redirecting gdbserver output to {}".format(gdbserver_output_path))
gdbserver_output = file(gdbserver_output_path, 'w')
return device.shell_popen(gdbserver_cmd, stdout=gdbserver_output,
stderr=gdbserver_output)
+def get_uid(device):
+ """Gets the uid adbd runs as."""
+ line, _ = device.shell(["id", "-u"])
+ return int(line.strip())
+
+
def forward_gdbserver_port(device, local, remote):
"""Forwards local TCP port `port` to `remote` via `adb forward`."""
+ if get_uid(device) != 0:
+ WARNING = '\033[93m'
+ ENDC = '\033[0m'
+ print(WARNING +
+ "Port forwarding may not work because adbd is not running as root. " +
+ " Run `adb root` to fix." + ENDC)
device.forward("tcp:{}".format(local), remote)
atexit.register(lambda: device.forward_remove("tcp:{}".format(local)))
@@ -362,20 +379,12 @@ def start_gdb(gdb_path, gdb_commands, gdb_flags=None, lldb=False):
creationflags = 0
if sys.platform.startswith("win"):
creationflags = subprocess.CREATE_NEW_CONSOLE
- env = dict(os.environ)
- if lldb:
- bin_dir = os.path.dirname(gdb_path)
- if sys.platform.startswith("win"):
- python_path = os.path.join(bin_dir, "../lib/site-packages")
- else:
- python_path = os.path.join(bin_dir, "../lib/python2.7/site-packages")
- env['PYTHONPATH'] = os.path.normpath(python_path)
- gdb_process = subprocess.Popen(gdb_args, creationflags=creationflags, env=env)
+ gdb_process = subprocess.Popen(gdb_args, creationflags=creationflags)
while gdb_process.returncode is None:
try:
gdb_process.communicate()
except KeyboardInterrupt:
pass
- os.unlink(script_path) \ No newline at end of file
+ os.unlink(script_path)
diff --git a/samples/AccelerometerPlay/Android.bp b/samples/AccelerometerPlay/Android.bp
index a33899431..869efe9be 100644
--- a/samples/AccelerometerPlay/Android.bp
+++ b/samples/AccelerometerPlay/Android.bp
@@ -13,6 +13,25 @@
// limitations under the License.
//
+package {
+ default_applicable_licenses: [
+ "development_samples_AccelerometerPlay_license",
+ ],
+}
+
+// Added automatically by a large-scale-change
+// See: http://go/android-license-faq
+license {
+ name: "development_samples_AccelerometerPlay_license",
+ visibility: [":__subpackages__"],
+ license_kinds: [
+ "SPDX-license-identifier-Apache-2.0",
+ ],
+ license_text: [
+ "NOTICE",
+ ],
+}
+
android_app {
name: "AccelerometerPlay",
// Only compile source java files in this apk.
diff --git a/samples/AdaptiveIconSample/Android.bp b/samples/AdaptiveIconSample/Android.bp
index c0ca25552..30f2b8b90 100644
--- a/samples/AdaptiveIconSample/Android.bp
+++ b/samples/AdaptiveIconSample/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "AdaptiveIconSample",
// Only compile source java files in this apk.
diff --git a/samples/AliasActivity/Android.bp b/samples/AliasActivity/Android.bp
index 8e7f8cbdc..529fa665b 100644
--- a/samples/AliasActivity/Android.bp
+++ b/samples/AliasActivity/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "AliasActivity",
installable: false,
diff --git a/samples/AndroidBeamDemo/Android.bp b/samples/AndroidBeamDemo/Android.bp
index 09df349aa..fdc2748b0 100644
--- a/samples/AndroidBeamDemo/Android.bp
+++ b/samples/AndroidBeamDemo/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_test {
name: "AndroidBeamDemo",
// Only compile source java files in this apk.
diff --git a/samples/ApiDemos/Android.mk b/samples/ApiDemos/Android.mk
index e25abef3a..193422e13 100644
--- a/samples/ApiDemos/Android.mk
+++ b/samples/ApiDemos/Android.mk
@@ -11,11 +11,14 @@ LOCAL_SRC_FILES := \
src/com/example/android/apis/app/ISecondary.aidl \
LOCAL_STATIC_ANDROID_LIBRARIES += \
+ androidx-constraintlayout_constraintlayout \
androidx.legacy_legacy-support-v4
LOCAL_USE_AAPT2 := true
LOCAL_PACKAGE_NAME := ApiDemos
+LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
+LOCAL_LICENSE_CONDITIONS := notice
LOCAL_SDK_VERSION := current
diff --git a/samples/ApiDemos/AndroidManifest.xml b/samples/ApiDemos/AndroidManifest.xml
index 2d2d785dd..8b6e5efc4 100644
--- a/samples/ApiDemos/AndroidManifest.xml
+++ b/samples/ApiDemos/AndroidManifest.xml
@@ -298,6 +298,43 @@
</intent-filter>
</activity>
+ <activity android:name=".app.PictureInPictureAutoEnter"
+ android:label="@string/activity_picture_in_picture_auto_enter"
+ android:resizeableActivity="true"
+ android:supportsPictureInPicture="true"
+ android:theme="@style/Theme.NoActionBar"
+ android:configChanges=
+ "screenSize|smallestScreenSize|screenLayout|orientation">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.SAMPLE_CODE" />
+ </intent-filter>
+ </activity>
+
+ <activity android:name=".app.PictureInPictureSeamlessResize"
+ android:label="@string/activity_picture_in_picture_seamless_resize"
+ android:resizeableActivity="true"
+ android:supportsPictureInPicture="true"
+ android:configChanges=
+ "screenSize|smallestScreenSize|screenLayout|orientation">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.SAMPLE_CODE" />
+ </intent-filter>
+ </activity>
+
+ <activity android:name=".app.PictureInPictureSourceRectHint"
+ android:label="@string/activity_picture_in_picture_source_rect_hint"
+ android:resizeableActivity="true"
+ android:supportsPictureInPicture="true"
+ android:configChanges=
+ "screenSize|smallestScreenSize|screenLayout|orientation">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.SAMPLE_CODE" />
+ </intent-filter>
+ </activity>
+
<activity android:name=".app.MaxAspectRatio$Square"
android:label="@string/activity_max_aspect_ratio_square"
android:resizeableActivity="false"
diff --git a/samples/ApiDemos/res/layout/picture_in_picture_auto_enter.xml b/samples/ApiDemos/res/layout/picture_in_picture_auto_enter.xml
new file mode 100644
index 000000000..09912b5cc
--- /dev/null
+++ b/samples/ApiDemos/res/layout/picture_in_picture_auto_enter.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<!-- Demonstrates Picture-In-Picture with auto enter enabled. -->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical">
+
+ <!-- layout params would be changed programmatically -->
+ <ImageView android:id="@+id/image"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:scaleType="fitXY"
+ android:src="@drawable/sample_1" />
+
+ <Switch android:id="@+id/source_rect_hint_toggle"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_margin="8dp"
+ android:padding="8dp"
+ android:text="@string/activity_picture_in_picture_source_rect_hint_toggle" />
+
+ <Button android:id="@+id/change_orientation"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_margin="8dp"
+ android:padding="8dp"
+ android:text="@string/activity_picture_in_picture_change_orientation" />
+
+</LinearLayout>
diff --git a/samples/ApiDemos/res/layout/picture_in_picture_seamless_resize.xml b/samples/ApiDemos/res/layout/picture_in_picture_seamless_resize.xml
new file mode 100644
index 000000000..47a25b182
--- /dev/null
+++ b/samples/ApiDemos/res/layout/picture_in_picture_seamless_resize.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<!-- Demonstrates Picture-In-Picture's Seamless Resize. -->
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <TextView
+ android:id="@+id/text_view"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:padding="8dp"
+ android:text="@string/activity_picture_in_picture_seamless_resize_demo_text"
+ android:textSize="18sp"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintBottom_toBottomOf="parent"/>
+
+ <Switch
+ android:id="@+id/seamless_resize_switch"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:text="@string/activity_picture_in_picture_seamless_resize_switch"
+ android:checked="false"
+ android:background="@android:color/white"
+ android:padding="8dp"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintBottom_toBottomOf="parent"/>
+
+</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/samples/ApiDemos/res/layout/picture_in_picture_source_rect_hint.xml b/samples/ApiDemos/res/layout/picture_in_picture_source_rect_hint.xml
new file mode 100644
index 000000000..5a4a06dad
--- /dev/null
+++ b/samples/ApiDemos/res/layout/picture_in_picture_source_rect_hint.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<!-- Demonstrates Picture-In-Picture's Source Rect Hint usage. -->
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <FrameLayout
+ android:id="@+id/frame_layout"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintBottom_toTopOf="@id/entry_source_btn">
+
+ <VideoView
+ android:id="@+id/video_view"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_gravity="top"/>
+
+ </FrameLayout>
+
+ <Button
+ android:id="@+id/entry_source_btn"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintBottom_toTopOf="@id/exit_source_btn"/>
+
+ <Button
+ android:id="@+id/exit_source_btn"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintBottom_toBottomOf="parent"/>
+
+</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/samples/ApiDemos/res/values/strings.xml b/samples/ApiDemos/res/values/strings.xml
index 473a3f5e4..a2149a33e 100644
--- a/samples/ApiDemos/res/values/strings.xml
+++ b/samples/ApiDemos/res/values/strings.xml
@@ -63,6 +63,17 @@
<string name="screen_orientation">Screen Orientation</string>
<string name="activity_picture_in_picture">App/Activity/Picture in Picture</string>
+ <string name="activity_picture_in_picture_auto_enter">App/Activity/Picture in Picture Auto Enter</string>
+ <string name="activity_picture_in_picture_source_rect_hint_toggle">Toggle source rect hint</string>
+ <string name="activity_picture_in_picture_seamless_resize">App/Activity/Picture in Picture Seamless Resize</string>
+ <string name="activity_picture_in_picture_source_rect_hint">App/Activity/Picture in Picture Source Rect Hint</string>
+ <string name="activity_picture_in_picture_source_rect_hint_current_position">Current position: %1$s</string>
+ <string name="activity_picture_in_picture_source_rect_hint_position_on_exit">Position on exit: %1$s</string>
+ <string name="activity_picture_in_picture_change_orientation">Change orientation</string>
+ <string name="activity_picture_in_picture_seamless_resize_switch">Turn on Seamless Resize (recommend off)</string>
+ <string name="activity_picture_in_picture_seamless_resize_demo_text">
+ The quick brown fox jumps over the lazy dog.
+ </string>
<string name="activity_max_aspect_ratio_square">App/Activity/Max Aspect Ratio/1:1</string>
<string name="activity_max_aspect_ratio_16to9">App/Activity/Max Aspect Ratio/16:9</string>
<string name="activity_max_aspect_ratio_any">App/Activity/Max Aspect Ratio/Any</string>
diff --git a/samples/ApiDemos/res/values/styles.xml b/samples/ApiDemos/res/values/styles.xml
index bca610141..2da03f041 100644
--- a/samples/ApiDemos/res/values/styles.xml
+++ b/samples/ApiDemos/res/values/styles.xml
@@ -129,4 +129,10 @@
<item name="android:windowAllowEnterTransitionOverlap">false</item>
</style>
+ <!-- A theme without action bar -->
+ <style name="Theme.NoActionBar" parent="android:Theme.Material.Light">
+ <item name="windowActionBar">false</item>
+ <item name="android:windowNoTitle">true</item>
+ </style>
+
</resources>
diff --git a/samples/ApiDemos/src/com/example/android/apis/app/ForegroundService.java b/samples/ApiDemos/src/com/example/android/apis/app/ForegroundService.java
index bc1b46f0f..fb6dd2026 100644
--- a/samples/ApiDemos/src/com/example/android/apis/app/ForegroundService.java
+++ b/samples/ApiDemos/src/com/example/android/apis/app/ForegroundService.java
@@ -34,11 +34,6 @@ import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
-
-
// Need the following import to get access to the app resources, since this
// class is in a sub-package.
@@ -83,15 +78,19 @@ public class ForegroundService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
- if (ACTION_FOREGROUND.equals(intent.getAction())
- || ACTION_FOREGROUND_WAKELOCK.equals(intent.getAction())) {
+ final boolean usingWakelock = ACTION_FOREGROUND_WAKELOCK.equals(intent.getAction());
+ if (ACTION_FOREGROUND.equals(intent.getAction()) || usingWakelock) {
// In this sample, we'll use the same text for the ticker and the expanded notification
CharSequence text = getText(R.string.foreground_service_started);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
new Intent(this, Controller.class), 0);
- // Set the info for the views that show in the notification panel.
+ int showMode = (usingWakelock)
+ ? Notification.FOREGROUND_SERVICE_IMMEDIATE
+ : Notification.FOREGROUND_SERVICE_DEFERRED;
+ // Set the info for the views that show in the notification panel. In the
+ // wakelock flow, also force the notification to display immediately.
Notification notification = new Notification.Builder(this)
.setSmallIcon(R.drawable.stat_sample) // the status icon
.setTicker(text) // the status text
@@ -99,6 +98,7 @@ public class ForegroundService extends Service {
.setContentTitle(getText(R.string.alarm_service_label)) // the label
.setContentText(text) // the contents of the entry
.setContentIntent(contentIntent) // The intent to send when clicked
+ .setForegroundServiceBehavior(showMode)
.build();
startForeground(R.string.foreground_service_started, notification);
diff --git a/samples/ApiDemos/src/com/example/android/apis/app/PictureInPictureAutoEnter.java b/samples/ApiDemos/src/com/example/android/apis/app/PictureInPictureAutoEnter.java
new file mode 100644
index 000000000..05f455828
--- /dev/null
+++ b/samples/ApiDemos/src/com/example/android/apis/app/PictureInPictureAutoEnter.java
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.android.apis.app;
+
+import android.app.Activity;
+import android.app.PictureInPictureParams;
+import android.content.pm.ActivityInfo;
+import android.content.res.Configuration;
+import android.graphics.Rect;
+import android.os.Bundle;
+import android.util.Rational;
+import android.view.View;
+import android.view.WindowManager;
+import android.widget.CompoundButton;
+import android.widget.LinearLayout;
+import android.widget.Switch;
+
+import com.example.android.apis.R;
+
+public class PictureInPictureAutoEnter extends Activity {
+ private final View.OnLayoutChangeListener mOnLayoutChangeListener =
+ (v, oldLeft, oldTop, oldRight, oldBottom, newLeft, newTop, newRight, newBottom) -> {
+ updatePictureInPictureParams();
+ };
+
+ private final CompoundButton.OnCheckedChangeListener mOnCheckedChangeListener =
+ (v, isChecked) -> updatePictureInPictureParams();
+
+ private View mImageView;
+ private View mButtonView;
+ private Switch mSwitchView;
+ private int mLastOrientation = -1;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.picture_in_picture_auto_enter);
+
+ mImageView = findViewById(R.id.image);
+ mImageView.addOnLayoutChangeListener(mOnLayoutChangeListener);
+ mButtonView = findViewById(R.id.change_orientation);
+ mButtonView.setOnClickListener((v) -> {
+ final int orientation = getResources().getConfiguration().orientation;
+ if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
+ setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
+ } else {
+ setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
+ }
+ });
+ mSwitchView = findViewById(R.id.source_rect_hint_toggle);
+ mSwitchView.setOnCheckedChangeListener(mOnCheckedChangeListener);
+
+ // there is a bug that setSourceRectHint(null) does not clear the source rect hint
+ // once there is a non-null source rect hint ever been set. set this to false by default
+ // therefore this demo activity can be used for testing autoEnterPip behavior without
+ // source rect hint when launched for the first time.
+ mSwitchView.setChecked(false);
+
+ updateLayout(getResources().getConfiguration());
+ }
+
+ @Override
+ public void onConfigurationChanged(Configuration newConfiguration) {
+ super.onConfigurationChanged(newConfiguration);
+ if (!isInPictureInPictureMode()) {
+ updateLayout(newConfiguration);
+ }
+ }
+
+ private void updateLayout(Configuration configuration) {
+ if (configuration.orientation == mLastOrientation) return;
+ mLastOrientation = configuration.orientation;
+ final boolean isLandscape = (mLastOrientation == Configuration.ORIENTATION_LANDSCAPE);
+ mButtonView.setVisibility(isLandscape ? View.GONE : View.VISIBLE);
+ mSwitchView.setVisibility(isLandscape ? View.GONE: View.VISIBLE);
+ final LinearLayout.LayoutParams layoutParams;
+ // Toggle the fullscreen mode as well.
+ // TODO(b/188001699) switch to use insets controller once the bug is fixed.
+ final View decorView = getWindow().getDecorView();
+ final int systemUiNavigationBarFlags = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
+ | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
+ if (isLandscape) {
+ layoutParams = new LinearLayout.LayoutParams(
+ LinearLayout.LayoutParams.MATCH_PARENT,
+ LinearLayout.LayoutParams.MATCH_PARENT);
+ getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
+ WindowManager.LayoutParams.FLAG_FULLSCREEN);
+ decorView.setSystemUiVisibility(decorView.getSystemUiVisibility()
+ | systemUiNavigationBarFlags);
+ } else {
+ layoutParams = new LinearLayout.LayoutParams(
+ LinearLayout.LayoutParams.MATCH_PARENT,
+ LinearLayout.LayoutParams.WRAP_CONTENT);
+ getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
+ decorView.setSystemUiVisibility(decorView.getSystemUiVisibility()
+ & ~systemUiNavigationBarFlags);
+ }
+ mImageView.setLayoutParams(layoutParams);
+ }
+
+ private void updatePictureInPictureParams() {
+ // do not bother PictureInPictureParams update when it's already in pip mode.
+ if (isInPictureInPictureMode()) return;
+ final Rect imageViewRect = new Rect();
+ mImageView.getGlobalVisibleRect(imageViewRect);
+ // bail early if mImageView has not been measured yet
+ if (imageViewRect.isEmpty()) return;
+ final Rect sourceRectHint = mSwitchView.isChecked() ? new Rect(imageViewRect) : null;
+ final PictureInPictureParams.Builder builder = new PictureInPictureParams.Builder()
+ .setAutoEnterEnabled(true)
+ .setAspectRatio(new Rational(imageViewRect.width(), imageViewRect.height()))
+ .setSourceRectHint(sourceRectHint);
+ setPictureInPictureParams(builder.build());
+ }
+}
diff --git a/samples/ApiDemos/src/com/example/android/apis/app/PictureInPictureSeamlessResize.java b/samples/ApiDemos/src/com/example/android/apis/app/PictureInPictureSeamlessResize.java
new file mode 100644
index 000000000..61599fa06
--- /dev/null
+++ b/samples/ApiDemos/src/com/example/android/apis/app/PictureInPictureSeamlessResize.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.android.apis.app;
+
+import android.app.Activity;
+import android.app.PictureInPictureParams;
+import android.content.res.Configuration;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Switch;
+
+import com.example.android.apis.R;
+
+public class PictureInPictureSeamlessResize extends Activity {
+
+ private Switch mSwitchView;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ getActionBar().hide();
+ setContentView(R.layout.picture_in_picture_seamless_resize);
+
+ mSwitchView = findViewById(R.id.seamless_resize_switch);
+ mSwitchView.setOnCheckedChangeListener((v, isChecked) -> {
+ onSeamlessResizeCheckedChanged(isChecked);
+ });
+ onSeamlessResizeCheckedChanged(mSwitchView.isChecked());
+ }
+
+ @Override
+ public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode,
+ Configuration newConfig) {
+ mSwitchView.setVisibility(isInPictureInPictureMode ? View.GONE : View.VISIBLE);
+ }
+
+ @Override
+ public boolean onPictureInPictureRequested() {
+ enterPictureInPictureMode(new PictureInPictureParams.Builder().build());
+ return true;
+ }
+
+ private void onSeamlessResizeCheckedChanged(boolean checked) {
+ final PictureInPictureParams.Builder builder = new PictureInPictureParams.Builder()
+ .setSeamlessResizeEnabled(checked);
+ setPictureInPictureParams(builder.build());
+ }
+}
diff --git a/samples/ApiDemos/src/com/example/android/apis/app/PictureInPictureSourceRectHint.java b/samples/ApiDemos/src/com/example/android/apis/app/PictureInPictureSourceRectHint.java
new file mode 100644
index 000000000..365fc170a
--- /dev/null
+++ b/samples/ApiDemos/src/com/example/android/apis/app/PictureInPictureSourceRectHint.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.android.apis.app;
+
+import android.app.Activity;
+import android.app.PictureInPictureParams;
+import android.content.res.Configuration;
+import android.graphics.Rect;
+import android.net.Uri;
+import android.os.Bundle;
+import android.util.Rational;
+import android.view.Gravity;
+import android.view.View;
+import android.widget.Button;
+import android.widget.FrameLayout;
+import android.widget.VideoView;
+
+import com.example.android.apis.R;
+
+public class PictureInPictureSourceRectHint extends Activity {
+
+ private FrameLayout mFrameLayout;
+ private VideoView mVideoView;
+ private Button mEntryButton;
+ private Button mExitButton;
+
+ private int mPositionOnEntry;
+ private int mPositionOnExit;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ getActionBar().hide();
+ setContentView(R.layout.picture_in_picture_source_rect_hint);
+
+ mFrameLayout = findViewById(R.id.frame_layout);
+ mVideoView = findViewById(R.id.video_view);
+ mEntryButton = findViewById(R.id.entry_source_btn);
+ mExitButton = findViewById(R.id.exit_source_btn);
+
+ initPlayer(Uri.parse("android.resource://" + getPackageName() +
+ "/" + R.raw.videoviewdemo));
+
+
+ setEntryState(Gravity.TOP);
+ setExitState(Gravity.TOP);
+
+ mEntryButton.setOnClickListener(v -> {
+ // Toggle the position and update the views.
+ setEntryState(mPositionOnEntry == Gravity.TOP ? Gravity.BOTTOM : Gravity.TOP);
+ });
+ mExitButton.setOnClickListener(v -> {
+ // Toggle the position and update the views.
+ setExitState(mPositionOnExit == Gravity.TOP ? Gravity.BOTTOM : Gravity.TOP);
+ });
+
+ mVideoView.addOnLayoutChangeListener(
+ (v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> {
+ if (left == oldLeft && right == oldRight && top == oldTop
+ && bottom == oldBottom) return;
+
+ setPictureInPictureParams(new PictureInPictureParams.Builder()
+ .setSourceRectHint(getVideoRectHint())
+ .build());
+ });
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ mVideoView.stopPlayback();
+ }
+
+ @Override
+ public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode,
+ Configuration newConfig) {
+ mEntryButton.setVisibility(isInPictureInPictureMode ? View.GONE : View.VISIBLE);
+ mExitButton.setVisibility(isInPictureInPictureMode ? View.GONE : View.VISIBLE);
+
+ final FrameLayout.LayoutParams params;
+ if (isInPictureInPictureMode) {
+ // In PIP mode the video should take up the full width and height.
+ params = new FrameLayout.LayoutParams(
+ FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);
+ } else {
+ // Exiting PIP, return the video to its original size and place it to the preferred
+ // gravity selected before entering PIP mode.
+ params = new FrameLayout.LayoutParams(
+ FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT);
+ params.gravity = mPositionOnExit;
+ // The "exit" gravity becomes the current "entry" gravity, update it and its views.
+ setEntryState(mPositionOnExit);
+ }
+ mVideoView.setLayoutParams(params);
+ }
+
+ @Override
+ public boolean onPictureInPictureRequested() {
+ final Rect hint = getVideoRectHint();
+ enterPictureInPictureMode(new PictureInPictureParams.Builder()
+ .setSourceRectHint(hint)
+ .setAspectRatio(new Rational(hint.width(), hint.height()))
+ .build());
+ return true;
+ }
+
+ private void initPlayer(Uri uri) {
+ mVideoView.setVideoURI(uri);
+ mVideoView.requestFocus();
+ mVideoView.setOnPreparedListener(mp -> {
+ mp.setLooping(true);
+ mVideoView.start();
+ });
+ }
+
+ private Rect getVideoRectHint() {
+ final Rect hint = new Rect();
+ mVideoView.getGlobalVisibleRect(hint);
+ return hint;
+ }
+
+ private void setEntryState(int gravity) {
+ mPositionOnEntry = gravity;
+ mEntryButton.setText(getString(
+ R.string.activity_picture_in_picture_source_rect_hint_current_position,
+ getGravityName(mPositionOnEntry)));
+ final FrameLayout.LayoutParams p = (FrameLayout.LayoutParams) mVideoView.getLayoutParams();
+ p.gravity = mPositionOnEntry;
+ mVideoView.setLayoutParams(p);
+ }
+
+ private void setExitState(int gravity) {
+ mPositionOnExit = gravity;
+ mExitButton.setText(getString(
+ R.string.activity_picture_in_picture_source_rect_hint_position_on_exit,
+ getGravityName(mPositionOnExit)));
+ }
+
+ private String getGravityName(int gravity) {
+ return gravity == Gravity.TOP ? "TOP" : "BOTTOM";
+ }
+}
diff --git a/samples/ApiDemos/src/com/example/android/apis/app/PresentationActivity.java b/samples/ApiDemos/src/com/example/android/apis/app/PresentationActivity.java
index 48ffc444f..b08efacbe 100644
--- a/samples/ApiDemos/src/com/example/android/apis/app/PresentationActivity.java
+++ b/samples/ApiDemos/src/com/example/android/apis/app/PresentationActivity.java
@@ -395,6 +395,7 @@ public class PresentationActivity extends Activity
cb.setTag(display);
cb.setOnCheckedChangeListener(PresentationActivity.this);
cb.setChecked(contents != null);
+ cb.setEnabled((display.getFlags() & Display.FLAG_PRESENTATION) != 0);
TextView tv = (TextView)v.findViewById(R.id.display_id);
tv.setText(v.getContext().getResources().getString(
diff --git a/samples/ApiDemos/src/com/example/android/apis/app/VoiceRecognition.java b/samples/ApiDemos/src/com/example/android/apis/app/VoiceRecognition.java
index 10d9ae0f4..498c305d9 100644
--- a/samples/ApiDemos/src/com/example/android/apis/app/VoiceRecognition.java
+++ b/samples/ApiDemos/src/com/example/android/apis/app/VoiceRecognition.java
@@ -109,7 +109,7 @@ public class VoiceRecognition extends Activity implements OnClickListener {
// Specify the calling package to identify your application
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getClass().getPackage().getName());
- // Display an hint to the user about what he should say.
+ // Display an hint to the user about what they should say.
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Speech recognition demo");
// Given an hint to the recognizer about what the user is going to say
diff --git a/samples/ApiDemos/src/com/example/android/apis/os/HeadlessSmsSendService.java b/samples/ApiDemos/src/com/example/android/apis/os/HeadlessSmsSendService.java
index 1f47fa11b..b33eef243 100644
--- a/samples/ApiDemos/src/com/example/android/apis/os/HeadlessSmsSendService.java
+++ b/samples/ApiDemos/src/com/example/android/apis/os/HeadlessSmsSendService.java
@@ -21,7 +21,7 @@ import android.content.Intent;
import android.os.IBinder;
/**
- * Dummy service to make sure this app can be default SMS app
+ * Placeholder service to make sure this app can be default SMS app
*/
public class HeadlessSmsSendService extends Service {
diff --git a/samples/ApiDemos/src/com/example/android/mmslib/pdu/PduComposer.java b/samples/ApiDemos/src/com/example/android/mmslib/pdu/PduComposer.java
index 242e7eea5..f920a2dc4 100644
--- a/samples/ApiDemos/src/com/example/android/mmslib/pdu/PduComposer.java
+++ b/samples/ApiDemos/src/com/example/android/mmslib/pdu/PduComposer.java
@@ -1012,7 +1012,7 @@ public class PduComposer {
}
if (dataLength != (attachment.getLength() - headerLength)) {
- throw new RuntimeException("BUG: Length sanity check failed");
+ throw new RuntimeException("BUG: Length check failed");
}
mStack.pop();
diff --git a/samples/ApiDemos/tests/Android.mk b/samples/ApiDemos/tests/Android.mk
index b2a94037b..ed37fbe83 100644
--- a/samples/ApiDemos/tests/Android.mk
+++ b/samples/ApiDemos/tests/Android.mk
@@ -16,10 +16,11 @@ LOCAL_SRC_FILES := $(call all-java-files-under, src)
# automatically get all of its classes loaded into our environment.
LOCAL_PACKAGE_NAME := ApiDemosTests
+LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
+LOCAL_LICENSE_CONDITIONS := notice
LOCAL_INSTRUMENTATION_FOR := ApiDemos
LOCAL_SDK_VERSION := current
include $(BUILD_PACKAGE)
-
diff --git a/samples/AppNavigation/Android.bp b/samples/AppNavigation/Android.bp
index 1b360a4c3..1013538b4 100644
--- a/samples/AppNavigation/Android.bp
+++ b/samples/AppNavigation/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_test {
name: "AppNavigation",
srcs: ["src/**/*.java"],
diff --git a/samples/AutofillKeyboard/Android.bp b/samples/AutofillKeyboard/Android.bp
index 57a4249be..099bbb83c 100644
--- a/samples/AutofillKeyboard/Android.bp
+++ b/samples/AutofillKeyboard/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "AutofillKeyboard",
srcs: ["**/*.java"],
diff --git a/samples/AutofillKeyboard/lint-baseline.xml b/samples/AutofillKeyboard/lint-baseline.xml
new file mode 100644
index 000000000..9ba91c53b
--- /dev/null
+++ b/samples/AutofillKeyboard/lint-baseline.xml
@@ -0,0 +1,246 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<issues format="5" by="lint 4.1.0" client="cli" variant="all" version="4.1.0">
+
+ <issue
+ id="NewApi"
+ message="Call requires API level R (current min is 29): `setZOrderedOnTop`"
+ errorLine1=" mScrollableSuggestionsClip.setZOrderedOnTop(false);"
+ errorLine2=" ~~~~~~~~~~~~~~~~">
+ <location
+ file="development/samples/AutofillKeyboard/src/com/example/android/autofillkeyboard/AutofillImeService.java"
+ line="82"
+ column="36"/>
+ </issue>
+
+ <issue
+ id="NewApi"
+ message="Call requires API level R (current min is 29): `setZOrderedOnTop`"
+ errorLine1=" mScrollableSuggestionsClip.setZOrderedOnTop(true);"
+ errorLine2=" ~~~~~~~~~~~~~~~~">
+ <location
+ file="development/samples/AutofillKeyboard/src/com/example/android/autofillkeyboard/AutofillImeService.java"
+ line="88"
+ column="36"/>
+ </issue>
+
+ <issue
+ id="NewApi"
+ message="Call requires API level R (current min is 29): `android.view.inputmethod.InlineSuggestionsResponse#getInlineSuggestions`"
+ errorLine1=" final List&lt;InlineSuggestion> inlineSuggestions = response.getInlineSuggestions();"
+ errorLine2=" ~~~~~~~~~~~~~~~~~~~~">
+ <location
+ file="development/samples/AutofillKeyboard/src/com/example/android/autofillkeyboard/AutofillImeService.java"
+ line="151"
+ column="67"/>
+ </issue>
+
+ <issue
+ id="NewApi"
+ message="Call requires API level R (current min is 29): `newStylesBuilder`"
+ errorLine1=" StylesBuilder stylesBuilder = UiVersions.newStylesBuilder();"
+ errorLine2=" ~~~~~~~~~~~~~~~~">
+ <location
+ file="development/samples/AutofillKeyboard/src/com/example/android/autofillkeyboard/AutofillImeService.java"
+ line="229"
+ column="50"/>
+ </issue>
+
+ <issue
+ id="NewApi"
+ message="Call requires API level R (current min is 29): `newStyleBuilder`"
+ errorLine1=" Style style = InlineSuggestionUi.newStyleBuilder()"
+ errorLine2=" ~~~~~~~~~~~~~~~">
+ <location
+ file="development/samples/AutofillKeyboard/src/com/example/android/autofillkeyboard/AutofillImeService.java"
+ line="230"
+ column="42"/>
+ </issue>
+
+ <issue
+ id="NewApi"
+ message="Call requires API level R (current min is 29): `new android.widget.inline.InlinePresentationSpec.Builder`"
+ errorLine1=" presentationSpecs.add(new InlinePresentationSpec.Builder(new Size(100, getHeight()),"
+ errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+ <location
+ file="development/samples/AutofillKeyboard/src/com/example/android/autofillkeyboard/AutofillImeService.java"
+ line="262"
+ column="31"/>
+ </issue>
+
+ <issue
+ id="NewApi"
+ message="Call requires API level R (current min is 29): `android.widget.inline.InlinePresentationSpec.Builder#build`"
+ errorLine1=" new Size(740, getHeight())).setStyle(stylesBundle).build());"
+ errorLine2=" ~~~~~">
+ <location
+ file="development/samples/AutofillKeyboard/src/com/example/android/autofillkeyboard/AutofillImeService.java"
+ line="263"
+ column="68"/>
+ </issue>
+
+ <issue
+ id="NewApi"
+ message="Call requires API level R (current min is 29): `android.widget.inline.InlinePresentationSpec.Builder#setStyle`"
+ errorLine1=" new Size(740, getHeight())).setStyle(stylesBundle).build());"
+ errorLine2=" ~~~~~~~~">
+ <location
+ file="development/samples/AutofillKeyboard/src/com/example/android/autofillkeyboard/AutofillImeService.java"
+ line="263"
+ column="45"/>
+ </issue>
+
+ <issue
+ id="NewApi"
+ message="Call requires API level R (current min is 29): `new android.widget.inline.InlinePresentationSpec.Builder`"
+ errorLine1=" presentationSpecs.add(new InlinePresentationSpec.Builder(new Size(100, getHeight()),"
+ errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+ <location
+ file="development/samples/AutofillKeyboard/src/com/example/android/autofillkeyboard/AutofillImeService.java"
+ line="264"
+ column="31"/>
+ </issue>
+
+ <issue
+ id="NewApi"
+ message="Call requires API level R (current min is 29): `android.widget.inline.InlinePresentationSpec.Builder#build`"
+ errorLine1=" new Size(740, getHeight())).setStyle(stylesBundle).build());"
+ errorLine2=" ~~~~~">
+ <location
+ file="development/samples/AutofillKeyboard/src/com/example/android/autofillkeyboard/AutofillImeService.java"
+ line="265"
+ column="68"/>
+ </issue>
+
+ <issue
+ id="NewApi"
+ message="Call requires API level R (current min is 29): `android.widget.inline.InlinePresentationSpec.Builder#setStyle`"
+ errorLine1=" new Size(740, getHeight())).setStyle(stylesBundle).build());"
+ errorLine2=" ~~~~~~~~">
+ <location
+ file="development/samples/AutofillKeyboard/src/com/example/android/autofillkeyboard/AutofillImeService.java"
+ line="265"
+ column="45"/>
+ </issue>
+
+ <issue
+ id="NewApi"
+ message="Call requires API level R (current min is 29): `new android.view.inputmethod.InlineSuggestionsRequest.Builder`"
+ errorLine1=" return new InlineSuggestionsRequest.Builder(presentationSpecs)"
+ errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+ <location
+ file="development/samples/AutofillKeyboard/src/com/example/android/autofillkeyboard/AutofillImeService.java"
+ line="267"
+ column="16"/>
+ </issue>
+
+ <issue
+ id="NewApi"
+ message="Call requires API level R (current min is 29): `android.view.inputmethod.InlineSuggestionsRequest.Builder#setMaxSuggestionCount`"
+ errorLine1=" .setMaxSuggestionCount(6)"
+ errorLine2=" ~~~~~~~~~~~~~~~~~~~~~">
+ <location
+ file="development/samples/AutofillKeyboard/src/com/example/android/autofillkeyboard/AutofillImeService.java"
+ line="268"
+ column="18"/>
+ </issue>
+
+ <issue
+ id="NewApi"
+ message="Call requires API level R (current min is 29): `android.view.inputmethod.InlineSuggestionsRequest.Builder#build`"
+ errorLine1=" .build();"
+ errorLine2=" ~~~~~">
+ <location
+ file="development/samples/AutofillKeyboard/src/com/example/android/autofillkeyboard/AutofillImeService.java"
+ line="269"
+ column="18"/>
+ </issue>
+
+ <issue
+ id="NewApi"
+ message="Call requires API level R (current min is 29): `android.view.inputmethod.InlineSuggestionsResponse#getInlineSuggestions`"
+ errorLine1=" &quot;onInlineSuggestionsResponse() called: &quot; + response.getInlineSuggestions().size());"
+ errorLine2=" ~~~~~~~~~~~~~~~~~~~~">
+ <location
+ file="development/samples/AutofillKeyboard/src/com/example/android/autofillkeyboard/AutofillImeService.java"
+ line="284"
+ column="69"/>
+ </issue>
+
+ <issue
+ id="NewApi"
+ message="Call requires API level R (current min is 29): `setBackgroundColor`"
+ errorLine1=" mScrollableSuggestionsClip.setBackgroundColor("
+ errorLine2=" ~~~~~~~~~~~~~~~~~~">
+ <location
+ file="development/samples/AutofillKeyboard/src/com/example/android/autofillkeyboard/AutofillImeService.java"
+ line="301"
+ column="36"/>
+ </issue>
+
+ <issue
+ id="NewApi"
+ message="Cast from `InlineContentView` to `View` requires API level 30 (current min is 29)"
+ errorLine1=" mPinnedSuggestionsStart.addView(suggestionView);"
+ errorLine2=" ~~~~~~~~~~~~~~">
+ <location
+ file="development/samples/AutofillKeyboard/src/com/example/android/autofillkeyboard/AutofillImeService.java"
+ line="312"
+ column="53"/>
+ </issue>
+
+ <issue
+ id="NewApi"
+ message="Cast from `InlineContentView` to `View` requires API level 30 (current min is 29)"
+ errorLine1=" mPinnedSuggestionsEnd.addView(suggestionView);"
+ errorLine2=" ~~~~~~~~~~~~~~">
+ <location
+ file="development/samples/AutofillKeyboard/src/com/example/android/autofillkeyboard/AutofillImeService.java"
+ line="314"
+ column="51"/>
+ </issue>
+
+ <issue
+ id="NewApi"
+ message="Cast from `InlineContentView` to `View` requires API level 30 (current min is 29)"
+ errorLine1=" mScrollableSuggestions.addView(suggestionView);"
+ errorLine2=" ~~~~~~~~~~~~~~">
+ <location
+ file="development/samples/AutofillKeyboard/src/com/example/android/autofillkeyboard/AutofillImeService.java"
+ line="317"
+ column="48"/>
+ </issue>
+
+ <issue
+ id="NewApi"
+ message="Call requires API level R (current min is 29): `android.view.inputmethod.InlineSuggestion#inflate`"
+ errorLine1=" inlineSuggestion.inflate(this, size, executor, suggestionView -> {"
+ errorLine2=" ~~~~~~~">
+ <location
+ file="development/samples/AutofillKeyboard/src/com/example/android/autofillkeyboard/AutofillImeService.java"
+ line="363"
+ column="30"/>
+ </issue>
+
+ <issue
+ id="NewApi"
+ message="Call requires API level R (current min is 29): `android.view.inputmethod.InlineSuggestion#getInfo`"
+ errorLine1=" suggestionView, /*isAction*/ inlineSuggestion.getInfo().isPinned());"
+ errorLine2=" ~~~~~~~">
+ <location
+ file="development/samples/AutofillKeyboard/src/com/example/android/autofillkeyboard/AutofillImeService.java"
+ line="374"
+ column="75"/>
+ </issue>
+
+ <issue
+ id="NewApi"
+ message="Call requires API level R (current min is 29): `android.view.inputmethod.InlineSuggestionInfo#isPinned`"
+ errorLine1=" suggestionView, /*isAction*/ inlineSuggestion.getInfo().isPinned());"
+ errorLine2=" ~~~~~~~~">
+ <location
+ file="development/samples/AutofillKeyboard/src/com/example/android/autofillkeyboard/AutofillImeService.java"
+ line="374"
+ column="85"/>
+ </issue>
+
+</issues>
diff --git a/samples/BackupRestore/Android.bp b/samples/BackupRestore/Android.bp
index b605a8fb5..8aad3f7d2 100644
--- a/samples/BackupRestore/Android.bp
+++ b/samples/BackupRestore/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "BackupRestore",
// Only compile source java files in this apk.
diff --git a/samples/BasicGLSurfaceView/Android.bp b/samples/BasicGLSurfaceView/Android.bp
index 0384cf29c..9298aafbc 100644
--- a/samples/BasicGLSurfaceView/Android.bp
+++ b/samples/BasicGLSurfaceView/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "BasicGLSurfaceView",
// Only compile source java files in this apk.
diff --git a/samples/BasicGLSurfaceView/AndroidManifest.xml b/samples/BasicGLSurfaceView/AndroidManifest.xml
index b0375aacb..14c84b25a 100644
--- a/samples/BasicGLSurfaceView/AndroidManifest.xml
+++ b/samples/BasicGLSurfaceView/AndroidManifest.xml
@@ -25,6 +25,7 @@
<application
android:label="@string/app_name">
<activity android:name="BasicGLSurfaceViewActivity"
+ android:exported="true"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:launchMode="singleTask"
android:configChanges="orientation|keyboardHidden">
diff --git a/samples/BluetoothChat/Android.bp b/samples/BluetoothChat/Android.bp
index f15127e74..6393f6940 100644
--- a/samples/BluetoothChat/Android.bp
+++ b/samples/BluetoothChat/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "BluetoothChat",
// Only compile source java files in this apk.
diff --git a/samples/BrokenKeyDerivation/Android.bp b/samples/BrokenKeyDerivation/Android.bp
index 54bceb8d9..dd6e06f41 100644
--- a/samples/BrokenKeyDerivation/Android.bp
+++ b/samples/BrokenKeyDerivation/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "BrokenKeyDerivation",
// Only compile source java files in this apk.
diff --git a/samples/BrokenKeyDerivation/tests/Android.bp b/samples/BrokenKeyDerivation/tests/Android.bp
index 158ae3d34..94a5c402a 100644
--- a/samples/BrokenKeyDerivation/tests/Android.bp
+++ b/samples/BrokenKeyDerivation/tests/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_test {
name: "BrokenKeyDerivationTests",
srcs: ["**/*.java"],
diff --git a/samples/BusinessCard/Android.bp b/samples/BusinessCard/Android.bp
index 9e6d95337..5e1e3ef2d 100644
--- a/samples/BusinessCard/Android.bp
+++ b/samples/BusinessCard/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "BusinessCard",
// Only compile source java files in this apk.
diff --git a/samples/BusinessCard/AndroidManifest.xml b/samples/BusinessCard/AndroidManifest.xml
index 186e249a0..683ab3f3a 100644
--- a/samples/BusinessCard/AndroidManifest.xml
+++ b/samples/BusinessCard/AndroidManifest.xml
@@ -4,9 +4,9 @@
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
-
+
http://www.apache.org/licenses/LICENSE-2.0
-
+
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -16,14 +16,15 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android.businesscard">
-
+
<!-- IMPORTANT! We want this app to run on Cupcake, Donut, Eclair and beyond -->
<uses-sdk android:minSdkVersion="3"/>
-
+
<uses-permission android:name="android.permission.READ_CONTACTS" />
-
+
<application android:label="@string/businesscard_app">
- <activity android:name="BusinessCardActivity">
+ <activity android:name="BusinessCardActivity"
+ android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
diff --git a/samples/Compass/Android.bp b/samples/Compass/Android.bp
index 68e8a6b84..b2c6a0100 100644
--- a/samples/Compass/Android.bp
+++ b/samples/Compass/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "Compass",
// Only compile source java files in this apk.
diff --git a/samples/ContactManager/Android.bp b/samples/ContactManager/Android.bp
index ea551bed4..1a6a2b6a7 100644
--- a/samples/ContactManager/Android.bp
+++ b/samples/ContactManager/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "ContactManager",
// Only compile source java files in this apk.
diff --git a/samples/CubeLiveWallpaper/Android.bp b/samples/CubeLiveWallpaper/Android.bp
index 6f4df0a46..e5b910f7c 100644
--- a/samples/CubeLiveWallpaper/Android.bp
+++ b/samples/CubeLiveWallpaper/Android.bp
@@ -14,6 +14,25 @@
// limitations under the License.
//
+package {
+ default_applicable_licenses: [
+ "development_samples_CubeLiveWallpaper_license",
+ ],
+}
+
+// Added automatically by a large-scale-change
+// See: http://go/android-license-faq
+license {
+ name: "development_samples_CubeLiveWallpaper_license",
+ visibility: [":__subpackages__"],
+ license_kinds: [
+ "SPDX-license-identifier-Apache-2.0",
+ ],
+ license_text: [
+ "NOTICE",
+ ],
+}
+
android_app {
name: "CubeLiveWallpapers",
srcs: ["**/*.java"],
diff --git a/samples/DataWiper/Android.bp b/samples/DataWiper/Android.bp
index c1e5f5759..8243f7d63 100644
--- a/samples/DataWiper/Android.bp
+++ b/samples/DataWiper/Android.bp
@@ -16,6 +16,10 @@
// We build two apps from the same source
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_test {
name: "DataWiper",
srcs: ["src/**/*.java"],
diff --git a/samples/DeviceAdminWhitelistedAccount/Android.bp b/samples/DeviceAdminWhitelistedAccount/Android.bp
index b58d366f5..164e3609a 100644
--- a/samples/DeviceAdminWhitelistedAccount/Android.bp
+++ b/samples/DeviceAdminWhitelistedAccount/Android.bp
@@ -16,6 +16,10 @@
// We build two apps from the same source
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_test {
name: "DeviceAdminWhitelistedAccount",
srcs: ["src/**/*.java"],
diff --git a/samples/FixedGridLayout/Android.bp b/samples/FixedGridLayout/Android.bp
index 909599909..ae7fec368 100644
--- a/samples/FixedGridLayout/Android.bp
+++ b/samples/FixedGridLayout/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "FixedGridLayout",
srcs: ["**/*.java"],
diff --git a/samples/HelloActivity/Android.bp b/samples/HelloActivity/Android.bp
index 03f26b330..72a99d678 100644
--- a/samples/HelloActivity/Android.bp
+++ b/samples/HelloActivity/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "HelloActivity",
// Only compile source java files in this apk.
diff --git a/samples/HelloActivity/AndroidManifest.xml b/samples/HelloActivity/AndroidManifest.xml
index 9551e54e6..2f01c1010 100644
--- a/samples/HelloActivity/AndroidManifest.xml
+++ b/samples/HelloActivity/AndroidManifest.xml
@@ -22,7 +22,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android.helloactivity">
<application android:label="Hello, Activity!">
- <activity android:name="HelloActivity">
+ <activity android:name="HelloActivity"
+ android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
diff --git a/samples/HelloActivity/tests/Android.bp b/samples/HelloActivity/tests/Android.bp
index f9346caf2..62c5ec28d 100644
--- a/samples/HelloActivity/tests/Android.bp
+++ b/samples/HelloActivity/tests/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_test {
name: "HelloActivityTests",
srcs: ["**/*.java"],
diff --git a/samples/HelloEffects/Android.bp b/samples/HelloEffects/Android.bp
index 23887bb79..f1d949e1c 100644
--- a/samples/HelloEffects/Android.bp
+++ b/samples/HelloEffects/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "HelloEffects",
srcs: ["**/*.java"],
diff --git a/samples/Home/Android.bp b/samples/Home/Android.bp
index 0d1bb775a..c0d8f462b 100644
--- a/samples/Home/Android.bp
+++ b/samples/Home/Android.bp
@@ -1,3 +1,20 @@
+package {
+ default_applicable_licenses: ["development_samples_Home_license"],
+}
+
+// Added automatically by a large-scale-change
+// See: http://go/android-license-faq
+license {
+ name: "development_samples_Home_license",
+ visibility: [":__subpackages__"],
+ license_kinds: [
+ "SPDX-license-identifier-Apache-2.0",
+ ],
+ license_text: [
+ "NOTICE",
+ ],
+}
+
android_app {
name: "Home",
srcs: ["**/*.java"],
diff --git a/samples/HoneycombGallery/Android.bp b/samples/HoneycombGallery/Android.bp
index 238bcd931..f0a3ddafd 100644
--- a/samples/HoneycombGallery/Android.bp
+++ b/samples/HoneycombGallery/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "HoneycombGallery",
// Only compile source java files in this apk.
diff --git a/samples/InlineFillService/Android.bp b/samples/InlineFillService/Android.bp
index f8d65d0c9..ee86da79e 100644
--- a/samples/InlineFillService/Android.bp
+++ b/samples/InlineFillService/Android.bp
@@ -12,6 +12,10 @@
// See the License for the specific language governing permissions and
// limitations under the License.
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "InlineFillService",
srcs: [
@@ -23,4 +27,4 @@ android_app {
"androidx.annotation_annotation",
"androidx.autofill_autofill"
],
-} \ No newline at end of file
+}
diff --git a/samples/InlineFillService/AndroidManifest.xml b/samples/InlineFillService/AndroidManifest.xml
index fa002f1ef..e67fbab6e 100644
--- a/samples/InlineFillService/AndroidManifest.xml
+++ b/samples/InlineFillService/AndroidManifest.xml
@@ -5,6 +5,7 @@
<service
android:name=".InlineFillService"
android:label="Inline Fill Service"
+ android:exported="true"
android:permission="android.permission.BIND_AUTOFILL_SERVICE">
<intent-filter>
<action android:name="android.service.autofill.AutofillService" />
@@ -25,6 +26,11 @@
android:label="Autofill Settings"
android:exported="true"/>
+ <activity
+ android:name=".PasswordsActivity"
+ android:label="Saved Passwords"
+ android:exported="true"/>
+
<activity android:name=".AttributionDialogActivity"
android:label="Autofill Attribution"
android:theme="@android:style/Theme.Material.Light.Dialog.NoActionBar"/>
diff --git a/samples/InlineFillService/res/layout/passwords_activity.xml b/samples/InlineFillService/res/layout/passwords_activity.xml
new file mode 100644
index 000000000..cf4576595
--- /dev/null
+++ b/samples/InlineFillService/res/layout/passwords_activity.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <TextView
+ android:text="passwords"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content">
+ </TextView>
+</LinearLayout>
diff --git a/samples/InlineFillService/res/xml/autofill_service_config.xml b/samples/InlineFillService/res/xml/autofill_service_config.xml
index a2954d26a..5f3d37185 100644
--- a/samples/InlineFillService/res/xml/autofill_service_config.xml
+++ b/samples/InlineFillService/res/xml/autofill_service_config.xml
@@ -15,7 +15,9 @@
-->
<autofill-service xmlns:android="http://schemas.android.com/apk/res/android"
- android:supportsInlineSuggestions="true">
+ android:supportsInlineSuggestions="true"
+ android:settingsActivity="com.example.android.inlinefillservice.SettingsActivity"
+ android:passwordsActivity="com.example.android.inlinefillservice.PasswordsActivity">
<compatibility-package android:name="com.android.chrome" android:maxLongVersionCode="1000000000" />
<compatibility-package android:name="com.chrome.beta" android:maxLongVersionCode="1000000000" />
</autofill-service>
diff --git a/samples/InlineFillService/src/com/example/android/inlinefillservice/AuthActivity.java b/samples/InlineFillService/src/com/example/android/inlinefillservice/AuthActivity.java
index cb9cf880e..9d9ed7aa3 100644
--- a/samples/InlineFillService/src/com/example/android/inlinefillservice/AuthActivity.java
+++ b/samples/InlineFillService/src/com/example/android/inlinefillservice/AuthActivity.java
@@ -114,6 +114,6 @@ public class AuthActivity extends Activity {
}
return PendingIntent.getActivity(context, ++sPendingIntentId, intent,
- PendingIntent.FLAG_CANCEL_CURRENT).getIntentSender();
+ PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_MUTABLE).getIntentSender();
}
}
diff --git a/samples/InlineFillService/src/com/example/android/inlinefillservice/InlineFillService.java b/samples/InlineFillService/src/com/example/android/inlinefillservice/InlineFillService.java
index 6bb9e4fa4..27e6d2f77 100644
--- a/samples/InlineFillService/src/com/example/android/inlinefillservice/InlineFillService.java
+++ b/samples/InlineFillService/src/com/example/android/inlinefillservice/InlineFillService.java
@@ -26,6 +26,8 @@ import android.service.autofill.InlinePresentation;
import android.service.autofill.SaveCallback;
import android.service.autofill.SaveInfo;
import android.service.autofill.SaveRequest;
+import android.service.autofill.SavedDatasetsInfo;
+import android.service.autofill.SavedDatasetsInfoCallback;
import android.util.ArrayMap;
import android.util.Log;
import android.view.autofill.AutofillId;
@@ -35,6 +37,7 @@ import android.widget.RemoteViews;
import androidx.annotation.NonNull;
import java.util.Collection;
+import java.util.Collections;
import java.util.Optional;
/**
@@ -146,4 +149,16 @@ public class InlineFillService extends AutofillService {
Helper.showMessage(getApplicationContext(), "InlineFillService doesn't support Save");
callback.onSuccess();
}
+
+ @Override
+ public void onSavedDatasetsInfoRequest(@NonNull SavedDatasetsInfoCallback callback) {
+ callback.onSuccess(
+ Collections.singleton(
+ new SavedDatasetsInfo(
+ SavedDatasetsInfo.TYPE_PASSWORDS, sNumSavedDatasets)));
+ sNumSavedDatasets++;
+ sNumSavedDatasets %= 3;
+ }
+
+ private static int sNumSavedDatasets = 0;
}
diff --git a/samples/InlineFillService/src/com/example/android/inlinefillservice/InlineRequestHelper.java b/samples/InlineFillService/src/com/example/android/inlinefillservice/InlineRequestHelper.java
index c93771af6..0aff9d226 100644
--- a/samples/InlineFillService/src/com/example/android/inlinefillservice/InlineRequestHelper.java
+++ b/samples/InlineFillService/src/com/example/android/inlinefillservice/InlineRequestHelper.java
@@ -79,7 +79,7 @@ public class InlineRequestHelper {
InlineSuggestionsRequest inlineRequest, int drawable) {
PendingIntent pendingIntent =
PendingIntent.getActivity(context, 0, new Intent(context, SettingsActivity.class),
- PendingIntent.FLAG_UPDATE_CURRENT);
+ PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_MUTABLE);
Dataset.Builder builder =
new Dataset.Builder()
@@ -126,9 +126,8 @@ public class InlineRequestHelper {
Intent intent = new Intent(context, AttributionDialogActivity.class);
intent.putExtra(AttributionDialogActivity.KEY_MSG, msg);
// Should use different request code to avoid the new intent overriding the old one.
- PendingIntent pendingIntent =
- PendingIntent.getActivity(
- context, msg.hashCode(), intent, PendingIntent.FLAG_UPDATE_CURRENT);
+ PendingIntent pendingIntent = PendingIntent.getActivity(context, msg.hashCode(), intent,
+ PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_MUTABLE);
return pendingIntent;
}
diff --git a/samples/InlineFillService/src/com/example/android/inlinefillservice/PasswordsActivity.java b/samples/InlineFillService/src/com/example/android/inlinefillservice/PasswordsActivity.java
new file mode 100644
index 000000000..7c7694636
--- /dev/null
+++ b/samples/InlineFillService/src/com/example/android/inlinefillservice/PasswordsActivity.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.android.inlinefillservice;
+
+import android.app.Activity;
+import android.os.Bundle;
+
+public class PasswordsActivity extends Activity {
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.passwords_activity);
+ }
+}
diff --git a/samples/IntentPlayground/Android.bp b/samples/IntentPlayground/Android.bp
new file mode 100644
index 000000000..3890bb3f4
--- /dev/null
+++ b/samples/IntentPlayground/Android.bp
@@ -0,0 +1,19 @@
+package {
+ // See: http://go/android-license-faq
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+android_test {
+ name: "IntentPlayground",
+ // Only compile source java files in this apk.
+ srcs: ["src/**/*.java"],
+ resource_dirs: ["res"],
+ static_libs: [
+ "com.google.android.material_material",
+ "androidx.appcompat_appcompat",
+ "androidx.recyclerview_recyclerview",
+ "androidx.lifecycle_lifecycle-livedata",
+ "androidx.lifecycle_lifecycle-viewmodel",
+ ],
+ sdk_version: "current",
+}
diff --git a/samples/IntentPlayground/Android.mk b/samples/IntentPlayground/Android.mk
deleted file mode 100644
index d4f9dfbcb..000000000
--- a/samples/IntentPlayground/Android.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := samples tests
-
-# Only compile source java files in this apk.
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
-
-LOCAL_STATIC_ANDROID_LIBRARIES := \
- com.google.android.material_material \
- androidx.appcompat_appcompat \
- androidx.recyclerview_recyclerview \
- androidx.lifecycle_lifecycle-livedata \
- androidx.lifecycle_lifecycle-viewmodel
-
-LOCAL_USE_AAPT2 := true
-
-LOCAL_PACKAGE_NAME := IntentPlayground
-
-LOCAL_SDK_VERSION := current
-
-
-include $(BUILD_PACKAGE)
-
-# Use the following include to make our test apk.
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/samples/IntentPlayground/AndroidManifest.xml b/samples/IntentPlayground/AndroidManifest.xml
index d810d8b11..25e5d28e9 100644
--- a/samples/IntentPlayground/AndroidManifest.xml
+++ b/samples/IntentPlayground/AndroidManifest.xml
@@ -24,13 +24,17 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
- <activity android:name=".RegularActivity">
+ <activity android:name=".RegularActivity" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
+ android:name=".SingleInstancePerTaskActivity"
+ android:launchMode="singleInstancePerTask"
+ />
+ <activity
android:name=".SingleTopActivity"
android:launchMode="singleTop" />
<activity
diff --git a/samples/IntentPlayground/src/com/example/android/intentplayground/FlagUtils.java b/samples/IntentPlayground/src/com/example/android/intentplayground/FlagUtils.java
index fdad2f624..662f24895 100644
--- a/samples/IntentPlayground/src/com/example/android/intentplayground/FlagUtils.java
+++ b/samples/IntentPlayground/src/com/example/android/intentplayground/FlagUtils.java
@@ -288,6 +288,9 @@ class FlagUtils {
case ActivityInfo.LAUNCH_SINGLE_TOP:
lm += "singleTop";
break;
+ case ActivityInfo.LAUNCH_SINGLE_INSTANCE_PER_TASK:
+ lm += "singleInstancePerTask";
+ break;
case ActivityInfo.LAUNCH_MULTIPLE:
default:
lm += "standard";
diff --git a/samples/IntentPlayground/src/com/example/android/intentplayground/SingleInstancePerTaskActivity.java b/samples/IntentPlayground/src/com/example/android/intentplayground/SingleInstancePerTaskActivity.java
new file mode 100644
index 000000000..a5db6d644
--- /dev/null
+++ b/samples/IntentPlayground/src/com/example/android/intentplayground/SingleInstancePerTaskActivity.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.android.intentplayground;
+
+/**
+ * An activity with launchMode="singleInstancePerTask" set in AndroidManifest.xml.
+ */
+public class SingleInstancePerTaskActivity extends BaseActivity {} \ No newline at end of file
diff --git a/samples/JetBoy/Android.bp b/samples/JetBoy/Android.bp
index 9600510f5..40a8fda1b 100644
--- a/samples/JetBoy/Android.bp
+++ b/samples/JetBoy/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "JETBoy",
srcs: ["**/*.java"],
diff --git a/samples/KeyChainDemo/Android.bp b/samples/KeyChainDemo/Android.bp
index da407b250..ac098758d 100644
--- a/samples/KeyChainDemo/Android.bp
+++ b/samples/KeyChainDemo/Android.bp
@@ -1,3 +1,12 @@
+package {
+ // See: http://go/android-license-faq
+ // A large-scale-change added 'default_applicable_licenses' to import
+ // all of the 'license_kinds' from "development_license"
+ // to get the below license kinds:
+ // legacy_restricted
+ default_applicable_licenses: ["development_license"],
+}
+
android_app {
name: "KeyChainDemo",
// Only compile source java files in this apk.
diff --git a/samples/LceDemo/Android.bp b/samples/LceDemo/Android.bp
index 2140d36e0..a193acc72 100644
--- a/samples/LceDemo/Android.bp
+++ b/samples/LceDemo/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "LceDemo",
// Only compile source java files in this apk.
diff --git a/samples/LunarLander/Android.bp b/samples/LunarLander/Android.bp
index 382f312d8..576401f18 100644
--- a/samples/LunarLander/Android.bp
+++ b/samples/LunarLander/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "LunarLander",
// Only compile source java files in this apk.
diff --git a/samples/LunarLander/tests/Android.bp b/samples/LunarLander/tests/Android.bp
index 0adb26b68..6799dc341 100644
--- a/samples/LunarLander/tests/Android.bp
+++ b/samples/LunarLander/tests/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_test {
name: "LunarLanderTests",
srcs: ["**/*.java"],
diff --git a/tools/hosttestlib/Android.bp b/samples/MultiClientInputMethod/Android.bp
index e95e34310..32c6ae006 100644
--- a/tools/hosttestlib/Android.bp
+++ b/samples/MultiClientInputMethod/Android.bp
@@ -1,4 +1,5 @@
-// Copyright (C) 2009 The Android Open Source Project
+//
+// Copyright (C) 2018 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -11,15 +12,20 @@
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
+//
-java_library_host {
- name: "hosttestlib",
-
- // Only compile source java files in this lib.
- srcs: ["src/**/*.java"],
+package {
+ // See: http://go/android-license-faq
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
- libs: [
- "ddmlib-prebuilt",
- "junit",
- ],
+android_app {
+ name: "MultiClientInputMethod",
+ srcs: ["**/*.java"],
+ platform_apis: true,
+ certificate: "platform",
+ privileged: true,
+ dex_preopt: {
+ enabled: false,
+ },
}
diff --git a/samples/MultiClientInputMethod/Android.mk b/samples/MultiClientInputMethod/Android.mk
deleted file mode 100755
index 7a16e09c0..000000000
--- a/samples/MultiClientInputMethod/Android.mk
+++ /dev/null
@@ -1,32 +0,0 @@
-#
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := $(call all-subdir-java-files)
-
-LOCAL_PACKAGE_NAME := MultiClientInputMethod
-
-LOCAL_PRIVATE_PLATFORM_APIS := true
-LOCAL_CERTIFICATE := platform
-LOCAL_PRIVILEGED_MODULE := true
-
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_PACKAGE)
diff --git a/samples/MultiClientInputMethod/src/com/example/android/multiclientinputmethod/ClientCallbackImpl.java b/samples/MultiClientInputMethod/src/com/example/android/multiclientinputmethod/ClientCallbackImpl.java
index 6f5d89d5a..23e2757de 100644
--- a/samples/MultiClientInputMethod/src/com/example/android/multiclientinputmethod/ClientCallbackImpl.java
+++ b/samples/MultiClientInputMethod/src/com/example/android/multiclientinputmethod/ClientCallbackImpl.java
@@ -164,10 +164,10 @@ final class ClientCallbackImpl implements MultiClientInputMethodServiceDelegate.
mDelegate.setActive(mClientId, true /* active */);
}
if (inputConnection == null || editorInfo == null) {
- // Dummy InputConnection case.
+ // Placeholder InputConnection case.
if (window.getClientId() == mClientId) {
// Special hack for temporary focus changes (e.g. notification shade).
- // If we have already established a connection to this client, and if a dummy
+ // If we have already established a connection to this client, and if a placeholder
// InputConnection is notified, just ignore this event.
} else {
window.onDummyStartInput(mClientId, targetWindowHandle);
@@ -198,13 +198,6 @@ final class ClientCallbackImpl implements MultiClientInputMethodServiceDelegate.
}
@Override
- public void onToggleSoftInput(int showFlags, int hideFlags) {
- // TODO: Implement
- Log.w(TAG, "onToggleSoftInput is not yet implemented. clientId=" + mClientId
- + " showFlags=" + showFlags + " hideFlags=" + hideFlags);
- }
-
- @Override
public void onUpdateCursorAnchorInfo(CursorAnchorInfo info) {
}
diff --git a/samples/MultiDisplay/Android.bp b/samples/MultiDisplay/Android.bp
new file mode 100644
index 000000000..da2fbc4b9
--- /dev/null
+++ b/samples/MultiDisplay/Android.bp
@@ -0,0 +1,32 @@
+//
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+package {
+ // See: http://go/android-license-faq
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+android_app {
+ name: "MultiDisplay",
+ // Only compile source java files in this apk.
+ srcs: ["src/**/*.java"],
+ static_libs: [
+ "com.google.android.material_material",
+ "androidx.lifecycle_lifecycle-livedata",
+ "androidx.lifecycle_lifecycle-viewmodel",
+ ],
+ sdk_version: "current",
+}
diff --git a/samples/MultiDisplay/Android.mk b/samples/MultiDisplay/Android.mk
deleted file mode 100644
index 5b78b7119..000000000
--- a/samples/MultiDisplay/Android.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-#
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := samples
-
-# Only compile source java files in this apk.
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_STATIC_ANDROID_LIBRARIES += \
- com.google.android.material_material \
- androidx.lifecycle_lifecycle-livedata \
- androidx.lifecycle_lifecycle-viewmodel
-
-LOCAL_PACKAGE_NAME := MultiDisplay
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_PACKAGE)
diff --git a/samples/MultiResolution/Android.bp b/samples/MultiResolution/Android.bp
index 878be59e8..e84897ac8 100644
--- a/samples/MultiResolution/Android.bp
+++ b/samples/MultiResolution/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "MultiResolution",
// Only compile source java files in this apk.
diff --git a/samples/MultiWindow/Android.bp b/samples/MultiWindow/Android.bp
index 12f160f9b..4ef084860 100644
--- a/samples/MultiWindow/Android.bp
+++ b/samples/MultiWindow/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "MultiWindow",
// Only compile source java files in this apk.
diff --git a/samples/NotePad/Android.bp b/samples/NotePad/Android.bp
index adbe9ea38..68e1a49ef 100644
--- a/samples/NotePad/Android.bp
+++ b/samples/NotePad/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "NotePad",
// Only compile source java files in this apk.
diff --git a/samples/Obb/Android.bp b/samples/Obb/Android.bp
index 65a5861e1..0c2d8f5bd 100644
--- a/samples/Obb/Android.bp
+++ b/samples/Obb/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "ObbApp",
// Only compile source java files in this apk.
diff --git a/samples/RSSReader/Android.bp b/samples/RSSReader/Android.bp
index 671519baa..f782ac93d 100644
--- a/samples/RSSReader/Android.bp
+++ b/samples/RSSReader/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "RSSReader",
srcs: ["**/*.java"],
diff --git a/samples/RSSReader/src/com/example/android/rssreader/RssReader.java b/samples/RSSReader/src/com/example/android/rssreader/RssReader.java
index b3772bc09..768bbe3ca 100644
--- a/samples/RSSReader/src/com/example/android/rssreader/RssReader.java
+++ b/samples/RSSReader/src/com/example/android/rssreader/RssReader.java
@@ -284,7 +284,7 @@ public class RssReader extends ListActivity {
mAdapter.add(mItem);
}
- // NOTE: Performance idea -- would be more efficient to have he option
+ // NOTE: Performance idea -- would be more efficient to have the option
// to add multiple items at once, so you get less "update storm" in the UI
// compared to adding things one at a time.
}
diff --git a/samples/ReceiveContentDemo/Android.bp b/samples/ReceiveContentDemo/Android.bp
new file mode 100644
index 000000000..3c7f12e26
--- /dev/null
+++ b/samples/ReceiveContentDemo/Android.bp
@@ -0,0 +1,19 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+android_app {
+ name: "ReceiveContentDemo",
+ srcs: ["src/**/*.java"],
+ static_libs: [
+ "guava",
+ "jsr305",
+ "androidx.appcompat_appcompat",
+ "androidx.recyclerview_recyclerview",
+ "com.google.android.material_material",
+ ],
+ sdk_version: "current",
+ dex_preopt: {
+ enabled: false,
+ },
+}
diff --git a/samples/ReceiveContentDemo/AndroidManifest.xml b/samples/ReceiveContentDemo/AndroidManifest.xml
new file mode 100644
index 000000000..6b51ac423
--- /dev/null
+++ b/samples/ReceiveContentDemo/AndroidManifest.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2020 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.example.android.receivecontent">
+
+ <application
+ android:label="@string/app_name"
+ android:theme="@style/AppTheme">
+ <activity
+ android:name="com.example.android.receivecontent.ReceiveContentDemoActivity"
+ android:exported="true">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+
+ <provider
+ android:name="androidx.core.content.FileProvider"
+ android:authorities="com.example.android.receivecontent.fileprovider"
+ android:exported="false"
+ android:grantUriPermissions="true">
+ <meta-data
+ android:name="android.support.FILE_PROVIDER_PATHS"
+ android:resource="@xml/file_paths" />
+ </provider>
+ </application>
+</manifest>
diff --git a/samples/ReceiveContentDemo/README.md b/samples/ReceiveContentDemo/README.md
new file mode 100644
index 000000000..936cb4afc
--- /dev/null
+++ b/samples/ReceiveContentDemo/README.md
@@ -0,0 +1,7 @@
+Sample app that demonstrates how to implement support for receiving content (e.g. images) via paste
+from the long-press menu, drag-and-drop, etc.
+
+To build and run:
+```$bash
+m ReceiveContentDemo && adb install out/target/product/blueline/system/app/ReceiveContentDemo/ReceiveContentDemo.apk
+```
diff --git a/samples/ReceiveContentDemo/res/drawable/container_background.xml b/samples/ReceiveContentDemo/res/drawable/container_background.xml
new file mode 100644
index 000000000..4b4d37291
--- /dev/null
+++ b/samples/ReceiveContentDemo/res/drawable/container_background.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2020 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
+ <solid android:color="@color/white"/>
+ <stroke android:width="1dp" android:color="@color/gray" />
+ <corners android:radius="10dp"/>
+ <padding
+ android:bottom="1dp"
+ android:left="1dp"
+ android:right="1dp"
+ android:top="1dp"/>
+</shape>
diff --git a/samples/ReceiveContentDemo/res/drawable/thumbnail_background.xml b/samples/ReceiveContentDemo/res/drawable/thumbnail_background.xml
new file mode 100644
index 000000000..354029afc
--- /dev/null
+++ b/samples/ReceiveContentDemo/res/drawable/thumbnail_background.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2020 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+ android:shape="rectangle">
+ <corners android:radius="5dp" />
+</shape>
diff --git a/samples/ReceiveContentDemo/res/layout/activity_main.xml b/samples/ReceiveContentDemo/res/layout/activity_main.xml
new file mode 100644
index 000000000..3c6835bf9
--- /dev/null
+++ b/samples/ReceiveContentDemo/res/layout/activity_main.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2020 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:id="@+id/layout_root"
+ android:orientation="vertical"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <com.google.android.material.appbar.AppBarLayout
+ android:id="@+id/appbar"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+
+ <androidx.appcompat.widget.Toolbar
+ android:id="@+id/app_toolbar"
+ android:layout_width="match_parent"
+ android:layout_height="?attr/actionBarSize"/>
+ </com.google.android.material.appbar.AppBarLayout>
+
+ <LinearLayout
+ android:id="@+id/container"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:layout_margin="18dp"
+ android:padding="2dp"
+ android:background="@drawable/container_background">
+
+ <LinearLayout
+ android:id="@+id/attachments"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal">
+
+ <androidx.recyclerview.widget.RecyclerView
+ android:id="@+id/attachments_recycler_view"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_marginHorizontal="6dp"
+ android:orientation="horizontal"
+ app:layoutManager="LinearLayoutManager" />
+ </LinearLayout>
+
+ <EditText
+ android:id="@+id/text_input"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginHorizontal="8dp"
+ android:layout_marginVertical="2dp"
+ android:gravity="bottom"
+ android:text="@string/text_input_default_text" />
+ </LinearLayout>
+</LinearLayout>
diff --git a/samples/ReceiveContentDemo/res/layout/attachment.xml b/samples/ReceiveContentDemo/res/layout/attachment.xml
new file mode 100644
index 000000000..0d9792712
--- /dev/null
+++ b/samples/ReceiveContentDemo/res/layout/attachment.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2020 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<ImageView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/attachment_thumbnail"
+ android:layout_width="72dp"
+ android:layout_height="72dp"
+ android:layout_marginHorizontal="8dp"
+ android:layout_marginVertical="16dp"
+ android:scaleType="centerCrop"
+ android:background="@drawable/thumbnail_background"/>
diff --git a/samples/ReceiveContentDemo/res/menu/app_menu.xml b/samples/ReceiveContentDemo/res/menu/app_menu.xml
new file mode 100644
index 000000000..52f9cc678
--- /dev/null
+++ b/samples/ReceiveContentDemo/res/menu/app_menu.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2020 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+ <item
+ android:id="@+id/action_clear_attachments"
+ android:title="@string/app_menu_item_clear_attachments" />
+</menu>
diff --git a/samples/ReceiveContentDemo/res/values/colors.xml b/samples/ReceiveContentDemo/res/values/colors.xml
new file mode 100644
index 000000000..376199d65
--- /dev/null
+++ b/samples/ReceiveContentDemo/res/values/colors.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2020 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources>
+ <color name="gray">#5f6368</color>
+ <color name="white">#ffffff</color>
+</resources>
diff --git a/samples/ReceiveContentDemo/res/values/strings.xml b/samples/ReceiveContentDemo/res/values/strings.xml
new file mode 100644
index 000000000..f7d1bfe05
--- /dev/null
+++ b/samples/ReceiveContentDemo/res/values/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2020 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources>
+ <string name="app_name">Android: Receive Content Demo</string>
+ <string name="app_menu_item_clear_attachments">Clear attachments</string>
+ <string name="text_input_default_text">Try inserting text, images and other content
+ using copy/paste or drag-and-drop</string>
+</resources>
diff --git a/samples/ReceiveContentDemo/res/values/styles.xml b/samples/ReceiveContentDemo/res/values/styles.xml
new file mode 100644
index 000000000..73ed947e4
--- /dev/null
+++ b/samples/ReceiveContentDemo/res/values/styles.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2020 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources>
+ <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
+ </style>
+</resources>
diff --git a/samples/ReceiveContentDemo/res/xml/file_paths.xml b/samples/ReceiveContentDemo/res/xml/file_paths.xml
new file mode 100644
index 000000000..ffb103e61
--- /dev/null
+++ b/samples/ReceiveContentDemo/res/xml/file_paths.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2020 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<paths xmlns:android="http://schemas.android.com/apk/res/android">
+ <files-path name="my_attachments" path="attachments/"/>
+</paths>
diff --git a/samples/ReceiveContentDemo/src/com/example/android/receivecontent/AttachmentsRecyclerViewAdapter.java b/samples/ReceiveContentDemo/src/com/example/android/receivecontent/AttachmentsRecyclerViewAdapter.java
new file mode 100644
index 000000000..9e25d0fe0
--- /dev/null
+++ b/samples/ReceiveContentDemo/src/com/example/android/receivecontent/AttachmentsRecyclerViewAdapter.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.android.receivecontent;
+
+import android.net.Uri;
+import android.view.LayoutInflater;
+import android.view.ViewGroup;
+
+import androidx.annotation.NonNull;
+import androidx.appcompat.widget.AppCompatImageView;
+import androidx.recyclerview.widget.RecyclerView;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+final class AttachmentsRecyclerViewAdapter extends
+ RecyclerView.Adapter<AttachmentsRecyclerViewAdapter.MyViewHolder> {
+
+ static final class MyViewHolder extends RecyclerView.ViewHolder {
+ public AppCompatImageView mAttachmentThumbnailView;
+
+ MyViewHolder(AppCompatImageView attachmentThumbnailView) {
+ super(attachmentThumbnailView);
+ mAttachmentThumbnailView = attachmentThumbnailView;
+ }
+ }
+
+ private final List<Uri> mAttachments;
+
+ AttachmentsRecyclerViewAdapter(List<Uri> attachments) {
+ mAttachments = new ArrayList<>(attachments);
+ }
+
+ public void addAttachment(Uri uri) {
+ mAttachments.add(uri);
+ }
+
+ public void addAttachments(Collection<Uri> uris) {
+ mAttachments.addAll(uris);
+ }
+
+ public void clearAttachments() {
+ mAttachments.clear();
+ }
+
+ @Override
+ public int getItemCount() {
+ return mAttachments.size();
+ }
+
+ @NonNull
+ @Override
+ public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+ AppCompatImageView view = (AppCompatImageView) LayoutInflater.from(parent.getContext())
+ .inflate(R.layout.attachment, parent, false);
+ return new MyViewHolder(view);
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
+ Uri uri = mAttachments.get(position);
+ holder.mAttachmentThumbnailView.setImageURI(uri);
+ holder.mAttachmentThumbnailView.setClipToOutline(true);
+ }
+}
diff --git a/samples/ReceiveContentDemo/src/com/example/android/receivecontent/AttachmentsRepo.java b/samples/ReceiveContentDemo/src/com/example/android/receivecontent/AttachmentsRepo.java
new file mode 100644
index 000000000..228db9351
--- /dev/null
+++ b/samples/ReceiveContentDemo/src/com/example/android/receivecontent/AttachmentsRepo.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.android.receivecontent;
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.net.Uri;
+import android.util.Log;
+import android.webkit.MimeTypeMap;
+
+import androidx.annotation.NonNull;
+import androidx.core.content.FileProvider;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.io.ByteStreams;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.UUID;
+
+/**
+ * Stores attachments as files in the app's private storage directory (see
+ * {@link Context#getDataDir()}, {@link Context#getFilesDir()}, etc).
+ */
+final class AttachmentsRepo {
+
+ // This matches the name declared in AndroidManifest.xml
+ private static final String FILE_PROVIDER_AUTHORITY =
+ "com.example.android.receivecontent.fileprovider";
+
+ private final Context mContext;
+ private final File mAttachmentsDir;
+
+ AttachmentsRepo(@NonNull Context context) {
+ mContext = context;
+ mAttachmentsDir = new File(mContext.getFilesDir(), "attachments");
+ }
+
+ /**
+ * Reads the content at the given URI and writes it to private storage. Then returns a content
+ * URI referencing the newly written file.
+ */
+ @NonNull
+ public Uri write(@NonNull Uri uri) {
+ ContentResolver contentResolver = mContext.getContentResolver();
+ String mimeType = contentResolver.getType(uri);
+ String ext = MimeTypeMap.getSingleton().getExtensionFromMimeType(mimeType);
+ try (InputStream is = contentResolver.openInputStream(uri)) {
+ if (is == null) {
+ throw new IllegalArgumentException(String.valueOf(uri));
+ }
+ mAttachmentsDir.mkdirs();
+ String fileName = "a-" + UUID.randomUUID().toString() + "." + ext;
+ File newAttachment = new File(mAttachmentsDir, fileName);
+ try (OutputStream os = new FileOutputStream(newAttachment);) {
+ ByteStreams.copy(is, os);
+ }
+ Log.i(Logcat.TAG,
+ "Wrote file [" + fileName + "]: " + newAttachment.length() + " bytes");
+ return getUriForFile(newAttachment);
+ } catch (IOException e) {
+ throw new IllegalStateException(e);
+ }
+
+ }
+
+ public void deleteAll() {
+ File[] files = mAttachmentsDir.listFiles();
+ if (files == null) {
+ return;
+ }
+ for (File file : files) {
+ file.delete();
+ }
+ }
+
+ @NonNull
+ public ImmutableList<Uri> getAllUris() {
+ File[] files = mAttachmentsDir.listFiles();
+ if (files == null || files.length == 0) {
+ return ImmutableList.of();
+ }
+ ImmutableList.Builder<Uri> uris = ImmutableList.builderWithExpectedSize(files.length);
+ for (File file : files) {
+ uris.add(getUriForFile(file));
+ }
+ return uris.build();
+ }
+
+ @NonNull
+ private Uri getUriForFile(@NonNull File file) {
+ return FileProvider.getUriForFile(mContext, FILE_PROVIDER_AUTHORITY, file);
+ }
+}
diff --git a/samples/ReceiveContentDemo/src/com/example/android/receivecontent/Logcat.java b/samples/ReceiveContentDemo/src/com/example/android/receivecontent/Logcat.java
new file mode 100644
index 000000000..2bafa31e7
--- /dev/null
+++ b/samples/ReceiveContentDemo/src/com/example/android/receivecontent/Logcat.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.android.receivecontent;
+
+final class Logcat {
+ private Logcat() {}
+
+ public static final String TAG = "ReceiveContentDemo";
+}
diff --git a/samples/ReceiveContentDemo/src/com/example/android/receivecontent/MyExecutors.java b/samples/ReceiveContentDemo/src/com/example/android/receivecontent/MyExecutors.java
new file mode 100644
index 000000000..9dbef3b3a
--- /dev/null
+++ b/samples/ReceiveContentDemo/src/com/example/android/receivecontent/MyExecutors.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.android.receivecontent;
+
+import android.os.Handler;
+import android.os.Looper;
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+
+import com.google.common.util.concurrent.ListeningScheduledExecutorService;
+import com.google.common.util.concurrent.MoreExecutors;
+
+import java.util.concurrent.Executor;
+import java.util.concurrent.Executors;
+
+final class MyExecutors {
+ private MyExecutors() {}
+
+ private static final ListeningScheduledExecutorService BG =
+ MoreExecutors.listeningDecorator(Executors.newSingleThreadScheduledExecutor());
+
+ private static final Handler MAIN_HANDLER = new Handler(Looper.getMainLooper());
+ private static final Executor MAIN_EXECUTOR =
+ runnable -> {
+ if (!MAIN_HANDLER.post(runnable)) {
+ Log.e(Logcat.TAG, "Failed to post runnable on main thread");
+ }
+ };
+
+ @NonNull
+ public static ListeningScheduledExecutorService bg() {
+ return BG;
+ }
+
+ @NonNull
+ public static Executor main() {
+ return MAIN_EXECUTOR;
+ }
+}
diff --git a/samples/ReceiveContentDemo/src/com/example/android/receivecontent/MyReceiver.java b/samples/ReceiveContentDemo/src/com/example/android/receivecontent/MyReceiver.java
new file mode 100644
index 000000000..37612eeb1
--- /dev/null
+++ b/samples/ReceiveContentDemo/src/com/example/android/receivecontent/MyReceiver.java
@@ -0,0 +1,144 @@
+/*
+ * Copyright 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.android.receivecontent;
+
+import android.content.ClipDescription;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.res.AssetFileDescriptor;
+import android.net.Uri;
+import android.util.Log;
+import android.util.Pair;
+import android.view.ContentInfo;
+import android.view.OnReceiveContentListener;
+import android.view.View;
+import android.widget.Toast;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.google.common.util.concurrent.FutureCallback;
+import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.ListenableFuture;
+
+import java.io.FileNotFoundException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Sample {@link OnReceiveContentListener} implementation that accepts all URIs, and delegates
+ * handling for all other content to the platform.
+ */
+final class MyReceiver implements OnReceiveContentListener {
+ public static final String[] SUPPORTED_MIME_TYPES = new String[]{"image/*"};
+
+ private final AttachmentsRepo mAttachmentsRepo;
+ private final AttachmentsRecyclerViewAdapter mAttachmentsRecyclerViewAdapter;
+
+ MyReceiver(@NonNull AttachmentsRepo attachmentsRepo,
+ @NonNull AttachmentsRecyclerViewAdapter attachmentsRecyclerViewAdapter) {
+ mAttachmentsRepo = attachmentsRepo;
+ mAttachmentsRecyclerViewAdapter = attachmentsRecyclerViewAdapter;
+ }
+
+ @Nullable
+ @Override
+ public ContentInfo onReceiveContent(@NonNull View view,
+ @NonNull ContentInfo contentInfo) {
+ // Split the incoming content into two groups: content URIs and everything else.
+ // This way we can implement custom handling for URIs and delegate the rest.
+ Pair<ContentInfo, ContentInfo> split = Utils.partition(contentInfo,
+ item -> item.getUri() != null);
+ ContentInfo uriContent = split.first;
+ ContentInfo remaining = split.second;
+ if (uriContent != null) {
+ receive(view.getContext(), uriContent);
+ }
+ // Return anything that we didn't handle ourselves. This preserves the default platform
+ // behavior for text and anything else for which we are not implementing custom handling.
+ return remaining;
+ }
+
+ /**
+ * Handles incoming content URIs. If the content is an image, stores it as an attachment in the
+ * app's private storage. If the content is any other type, simply shows a toast with the type
+ * of the content and its size in bytes.
+ *
+ * <p><strong>Important:</strong> It is significant that we pass along the {@code payload}
+ * object to the worker thread that will process the content, because URI permissions are tied
+ * to the payload object's lifecycle. If that object is not passed along, it could be garbage
+ * collected and permissions would be revoked prematurely (before we have a chance to process
+ * the content).
+ */
+ private void receive(@NonNull Context context, @NonNull ContentInfo payload) {
+ Context applicationContext = context.getApplicationContext();
+ ContentResolver contentResolver = applicationContext.getContentResolver();
+ ListenableFuture<List<Uri>> addAttachmentsFuture = MyExecutors.bg().submit(() -> {
+ List<Uri> uris = Utils.collectUris(payload.getClip());
+ List<Uri> localUris = new ArrayList<>(uris.size());
+ for (Uri uri : uris) {
+ String mimeType = contentResolver.getType(uri);
+ Log.i(Logcat.TAG, "Processing " + mimeType + ": " + uri);
+ if (ClipDescription.compareMimeTypes(mimeType, "image/*")) {
+ // Read the image at the given URI and write it to private storage.
+ localUris.add(mAttachmentsRepo.write(uri));
+ } else {
+ showMessage(applicationContext, uri, mimeType);
+ }
+ }
+ return localUris;
+ });
+ Futures.addCallback(addAttachmentsFuture, new FutureCallback<List<Uri>>() {
+ @Override
+ public void onSuccess(List<Uri> localUris) {
+ // Show the image in the UI by passing the URI pointing to the locally stored copy
+ // to the recycler view adapter.
+ mAttachmentsRecyclerViewAdapter.addAttachments(localUris);
+ mAttachmentsRecyclerViewAdapter.notifyDataSetChanged();
+ Log.i(Logcat.TAG, "Processed content: " + payload);
+ }
+ @Override
+ public void onFailure(@NonNull Throwable t) {
+ Log.e(Logcat.TAG,"Error processing content: " + payload, t);
+ }
+ }, MyExecutors.main());
+ }
+
+ /**
+ * Reads the size of the given content URI and shows a toast with the type of the content and
+ * its size in bytes.
+ */
+ private void showMessage(@NonNull Context applicationContext,
+ @NonNull Uri uri, @NonNull String mimeType) {
+ MyExecutors.bg().execute(() -> {
+ ContentResolver contentResolver = applicationContext.getContentResolver();
+ long lengthBytes;
+ try {
+ AssetFileDescriptor fd = contentResolver.openAssetFileDescriptor(uri, "r");
+ lengthBytes = fd.getLength();
+ } catch (FileNotFoundException e) {
+ Log.e(Logcat.TAG, "Error opening content URI: " + uri, e);
+ return;
+ }
+ String msg = "Received " + mimeType + " (" + lengthBytes + " bytes): " + uri;
+ Log.i(Logcat.TAG, msg);
+ MyExecutors.main().execute(() -> {
+ Toast.makeText(applicationContext, msg, Toast.LENGTH_LONG).show();
+ });
+ });
+ }
+}
diff --git a/samples/ReceiveContentDemo/src/com/example/android/receivecontent/ReceiveContentDemoActivity.java b/samples/ReceiveContentDemo/src/com/example/android/receivecontent/ReceiveContentDemoActivity.java
new file mode 100644
index 000000000..6aa205921
--- /dev/null
+++ b/samples/ReceiveContentDemo/src/com/example/android/receivecontent/ReceiveContentDemoActivity.java
@@ -0,0 +1,102 @@
+/*
+ * Copyright 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.android.receivecontent;
+
+import android.net.Uri;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.widget.EditText;
+import android.widget.LinearLayout;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.appcompat.widget.Toolbar;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.util.concurrent.FutureCallback;
+import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.ListenableFuture;
+
+/** Main activity for the demo. */
+public class ReceiveContentDemoActivity extends AppCompatActivity {
+ private AttachmentsRepo mAttachmentsRepo;
+ private AttachmentsRecyclerViewAdapter mAttachmentsRecyclerViewAdapter;
+
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+
+ // Setup the app toolbar.
+ Toolbar toolbar = findViewById(R.id.app_toolbar);
+ setSupportActionBar(toolbar);
+
+ // Setup the repository and recycler view for attachments.
+ mAttachmentsRepo = new AttachmentsRepo(this);
+ ImmutableList<Uri> attachments = mAttachmentsRepo.getAllUris();
+ RecyclerView attachmentsRecyclerView = findViewById(R.id.attachments_recycler_view);
+ attachmentsRecyclerView.setHasFixedSize(true);
+ mAttachmentsRecyclerViewAdapter = new AttachmentsRecyclerViewAdapter(attachments);
+ attachmentsRecyclerView.setAdapter(mAttachmentsRecyclerViewAdapter);
+
+ // Setup the listener for receiving content.
+ MyReceiver receiver = new MyReceiver(mAttachmentsRepo, mAttachmentsRecyclerViewAdapter);
+ LinearLayout container = findViewById(R.id.container);
+ container.setOnReceiveContentListener(MyReceiver.SUPPORTED_MIME_TYPES, receiver);
+ EditText textInput = findViewById(R.id.text_input);
+ textInput.setOnReceiveContentListener(MyReceiver.SUPPORTED_MIME_TYPES, receiver);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(@NonNull Menu menu) {
+ MenuInflater inflater = getMenuInflater();
+ inflater.inflate(R.menu.app_menu, menu);
+ return true;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(@NonNull MenuItem item) {
+ if (item.getItemId() == R.id.action_clear_attachments) {
+ deleteAllAttachments();
+ return true;
+ }
+ return false;
+ }
+
+ private void deleteAllAttachments() {
+ ListenableFuture<Void> deleteAllFuture = MyExecutors.bg().submit(() -> {
+ mAttachmentsRepo.deleteAll();
+ return null;
+ });
+ Futures.addCallback(deleteAllFuture, new FutureCallback<Void>() {
+ @Override
+ public void onSuccess(@Nullable Void result) {
+ mAttachmentsRecyclerViewAdapter.clearAttachments();
+ mAttachmentsRecyclerViewAdapter.notifyDataSetChanged();
+ }
+ @Override
+ public void onFailure(@NonNull Throwable t) {
+ Log.e(Logcat.TAG, "Error deleting attachments", t);
+ }
+ }, MyExecutors.main());
+ }
+}
diff --git a/samples/ReceiveContentDemo/src/com/example/android/receivecontent/Utils.java b/samples/ReceiveContentDemo/src/com/example/android/receivecontent/Utils.java
new file mode 100644
index 000000000..39662289c
--- /dev/null
+++ b/samples/ReceiveContentDemo/src/com/example/android/receivecontent/Utils.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.android.receivecontent;
+
+import android.content.ClipData;
+import android.content.ClipDescription;
+import android.net.Uri;
+import android.util.Pair;
+import android.view.ContentInfo;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.function.Predicate;
+
+final class Utils {
+ private Utils() {}
+
+ /**
+ * If you use Jetpack, use {@code androidx.core.view.ContentInfoCompat.partition()}.
+ */
+ public static Pair<ContentInfo, ContentInfo> partition(ContentInfo payload,
+ Predicate<ClipData.Item> itemPredicate) {
+ ClipData clip = payload.getClip();
+ if (clip.getItemCount() == 1) {
+ boolean matched = itemPredicate.test(clip.getItemAt(0));
+ return Pair.create(matched ? payload : null, matched ? null : payload);
+ }
+ ArrayList<ClipData.Item> acceptedItems = new ArrayList<>();
+ ArrayList<ClipData.Item> remainingItems = new ArrayList<>();
+ for (int i = 0; i < clip.getItemCount(); i++) {
+ ClipData.Item item = clip.getItemAt(i);
+ if (itemPredicate.test(item)) {
+ acceptedItems.add(item);
+ } else {
+ remainingItems.add(item);
+ }
+ }
+ if (acceptedItems.isEmpty()) {
+ return Pair.create(null, payload);
+ }
+ if (remainingItems.isEmpty()) {
+ return Pair.create(payload, null);
+ }
+ ContentInfo accepted = new ContentInfo.Builder(payload)
+ .setClip(buildClipData(new ClipDescription(clip.getDescription()), acceptedItems))
+ .build();
+ ContentInfo remaining = new ContentInfo.Builder(payload)
+ .setClip(buildClipData(new ClipDescription(clip.getDescription()), remainingItems))
+ .build();
+ return Pair.create(accepted, remaining);
+ }
+
+ private static ClipData buildClipData(ClipDescription description,
+ List<ClipData.Item> items) {
+ ClipData clip = new ClipData(new ClipDescription(description), items.get(0));
+ for (int i = 1; i < items.size(); i++) {
+ clip.addItem(items.get(i));
+ }
+ return clip;
+ }
+
+ public static List<Uri> collectUris(ClipData clip) {
+ List<Uri> uris = new ArrayList<>(clip.getItemCount());
+ for (int i = 0; i < clip.getItemCount(); i++) {
+ Uri uri = clip.getItemAt(i).getUri();
+ if (uri != null) {
+ uris.add(uri);
+ }
+ }
+ return uris;
+ }
+}
diff --git a/samples/ReceiveShareDemo/Android.bp b/samples/ReceiveShareDemo/Android.bp
index aac100e9b..bec429365 100644
--- a/samples/ReceiveShareDemo/Android.bp
+++ b/samples/ReceiveShareDemo/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "ReceiveShareDemo",
// Only compile source java files in this apk.
diff --git a/samples/ReceiveShareDemo/AndroidManifest.xml b/samples/ReceiveShareDemo/AndroidManifest.xml
index 1e07091f9..97ce54fdc 100644
--- a/samples/ReceiveShareDemo/AndroidManifest.xml
+++ b/samples/ReceiveShareDemo/AndroidManifest.xml
@@ -17,7 +17,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android.receiveshare">
<application android:label="@string/app_name">
- <activity android:name=".ReceiveShare">
+ <activity android:name=".ReceiveShare" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
diff --git a/samples/RenderScript/HelloCompute/Android.mk b/samples/RenderScript/HelloCompute/Android.mk
index 27798c463..cc5281c8c 100644
--- a/samples/RenderScript/HelloCompute/Android.mk
+++ b/samples/RenderScript/HelloCompute/Android.mk
@@ -23,6 +23,8 @@ LOCAL_SRC_FILES := $(call all-java-files-under, src) \
$(call all-renderscript-files-under, src)
LOCAL_PACKAGE_NAME := RsHelloCompute
+LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
+LOCAL_LICENSE_CONDITIONS := notice
LOCAL_SDK_VERSION := 14
include $(BUILD_PACKAGE)
diff --git a/samples/RenderScript/Levels/Android.mk b/samples/RenderScript/Levels/Android.mk
index ab02ecb31..99ebe1b94 100644
--- a/samples/RenderScript/Levels/Android.mk
+++ b/samples/RenderScript/Levels/Android.mk
@@ -22,6 +22,8 @@ LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src)
LOCAL_PACKAGE_NAME := LevelsRS
+LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
+LOCAL_LICENSE_CONDITIONS := notice
LOCAL_SDK_VERSION := current
include $(BUILD_PACKAGE)
diff --git a/samples/SampleSyncAdapter/Android.bp b/samples/SampleSyncAdapter/Android.bp
index 09cc11491..b415834ab 100644
--- a/samples/SampleSyncAdapter/Android.bp
+++ b/samples/SampleSyncAdapter/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_test {
name: "SampleSyncAdapter",
// Only compile source java files in this apk.
diff --git a/samples/SearchableDictionary/Android.bp b/samples/SearchableDictionary/Android.bp
index 2b39bcfe1..a0de35625 100644
--- a/samples/SearchableDictionary/Android.bp
+++ b/samples/SearchableDictionary/Android.bp
@@ -1,3 +1,13 @@
+package {
+ // See: http://go/android-license-faq
+ // A large-scale-change added 'default_applicable_licenses' to import
+ // all of the 'license_kinds' from "development_license"
+ // to get the below license kinds:
+ // SPDX-license-identifier-Apache-2.0
+ // SPDX-license-identifier-CPL-1.0
+ default_applicable_licenses: ["development_license"],
+}
+
android_app {
name: "SearchableDictionary",
srcs: ["**/*.java"],
diff --git a/samples/ShortcutDemo/launcher/Android.mk b/samples/ShortcutDemo/launcher/Android.mk
index a59f1877e..b5325f503 100644
--- a/samples/ShortcutDemo/launcher/Android.mk
+++ b/samples/ShortcutDemo/launcher/Android.mk
@@ -22,6 +22,8 @@ LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := ShortcutLauncherDemo
+LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
+LOCAL_LICENSE_CONDITIONS := notice
LOCAL_MODULE_TAGS := samples tests
@@ -48,6 +50,8 @@ include $(BUILD_PACKAGE)
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := ShortcutLauncherDemo2
+LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
+LOCAL_LICENSE_CONDITIONS := notice
LOCAL_MODULE_TAGS := samples tests
diff --git a/samples/ShortcutDemo/publisher/Android.mk b/samples/ShortcutDemo/publisher/Android.mk
index e6f16e759..bb633b09c 100644
--- a/samples/ShortcutDemo/publisher/Android.mk
+++ b/samples/ShortcutDemo/publisher/Android.mk
@@ -22,6 +22,8 @@ LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := ShortcutDemo
+LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
+LOCAL_LICENSE_CONDITIONS := notice
LOCAL_USE_AAPT2 := true
@@ -46,6 +48,8 @@ include $(BUILD_PACKAGE)
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := ShortcutDemo2
+LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
+LOCAL_LICENSE_CONDITIONS := notice
LOCAL_USE_AAPT2 := true
diff --git a/samples/ShortcutSample/Android.bp b/samples/ShortcutSample/Android.bp
new file mode 100644
index 000000000..84774152c
--- /dev/null
+++ b/samples/ShortcutSample/Android.bp
@@ -0,0 +1,104 @@
+//
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+package {
+ // See: http://go/android-license-faq
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+// For testing, we build multiple apk files with different versions.
+
+//============================================================================
+// Base version (10)
+//============================================================================
+
+android_test {
+ name: "ShortcutSample",
+ aaptflags: [
+ "--version-code",
+ "10",
+ ],
+ srcs: ["src/**/*.java"],
+ resource_dirs: ["res"],
+ static_libs: ["androidx.legacy_legacy-support-v4"],
+ sdk_version: "current",
+}
+
+//============================================================================
+// Version 11.
+//============================================================================
+
+android_test {
+ name: "ShortcutSample11",
+ aaptflags: [
+ "--version-code",
+ "11",
+ ],
+ srcs: ["src/**/*.java"],
+ resource_dirs: ["res"],
+ static_libs: ["androidx.legacy_legacy-support-v4"],
+ sdk_version: "current",
+}
+
+//============================================================================
+// Version 12.
+//============================================================================
+
+android_test {
+ name: "ShortcutSample12",
+ aaptflags: [
+ "--version-code",
+ "12",
+ ],
+ srcs: ["src/**/*.java"],
+ resource_dirs: ["res"],
+ static_libs: ["androidx.legacy_legacy-support-v4"],
+ sdk_version: "current",
+}
+
+//============================================================================
+// Version 11, backup disabled.
+//============================================================================
+
+android_test {
+ name: "ShortcutSample11nb",
+ aaptflags: [
+ "--version-code",
+ "11",
+ ],
+ manifest: "noback/AndroidManifest.xml",
+ srcs: ["src/**/*.java"],
+ resource_dirs: ["res"],
+ static_libs: ["androidx.legacy_legacy-support-v4"],
+ sdk_version: "current",
+}
+
+//============================================================================
+// Version 12, backup disabled.
+//============================================================================
+
+android_test {
+ name: "ShortcutSample12nb",
+ aaptflags: [
+ "--version-code",
+ "12",
+ ],
+ manifest: "noback/AndroidManifest.xml",
+ srcs: ["src/**/*.java"],
+ resource_dirs: ["res"],
+ static_libs: ["androidx.legacy_legacy-support-v4"],
+ sdk_version: "current",
+}
diff --git a/samples/ShortcutSample/Android.mk b/samples/ShortcutSample/Android.mk
deleted file mode 100644
index 71a94c1c3..000000000
--- a/samples/ShortcutSample/Android.mk
+++ /dev/null
@@ -1,142 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# For testing, we build multiple apk files with different versions.
-
-LOCAL_PATH:= $(call my-dir)
-
-#============================================================================
-# Base version (10)
-#============================================================================
-
-include $(CLEAR_VARS)
-
-LOCAL_USE_AAPT2 := true
-
-LOCAL_PACKAGE_NAME := ShortcutSample
-
-LOCAL_AAPT_FLAGS += --version-code 10
-
-LOCAL_MODULE_TAGS := samples tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
-
-LOCAL_STATIC_ANDROID_LIBRARIES = androidx.legacy_legacy-support-v4
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_PACKAGE)
-
-#============================================================================
-# Version 11.
-#============================================================================
-
-include $(CLEAR_VARS)
-
-LOCAL_USE_AAPT2 := true
-
-LOCAL_PACKAGE_NAME := ShortcutSample11
-
-LOCAL_AAPT_FLAGS += --version-code 11
-
-LOCAL_MODULE_TAGS := samples tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
-
-LOCAL_STATIC_ANDROID_LIBRARIES = androidx.legacy_legacy-support-v4
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_PACKAGE)
-
-#============================================================================
-# Version 12.
-#============================================================================
-
-include $(CLEAR_VARS)
-
-LOCAL_USE_AAPT2 := true
-
-LOCAL_PACKAGE_NAME := ShortcutSample12
-
-LOCAL_AAPT_FLAGS += --version-code 12
-
-LOCAL_MODULE_TAGS := samples tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
-
-LOCAL_STATIC_ANDROID_LIBRARIES = androidx.legacy_legacy-support-v4
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_PACKAGE)
-
-#============================================================================
-# Version 11, backup disabled.
-#============================================================================
-
-include $(CLEAR_VARS)
-
-LOCAL_USE_AAPT2 := true
-
-LOCAL_PACKAGE_NAME := ShortcutSample11nb
-
-LOCAL_AAPT_FLAGS += --version-code 11
-LOCAL_MANIFEST_FILE := noback/AndroidManifest.xml
-
-LOCAL_MODULE_TAGS := samples tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
-
-LOCAL_STATIC_ANDROID_LIBRARIES = androidx.legacy_legacy-support-v4
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_PACKAGE)
-
-#============================================================================
-# Version 12, backup disabled.
-#============================================================================
-
-include $(CLEAR_VARS)
-
-LOCAL_USE_AAPT2 := true
-
-LOCAL_PACKAGE_NAME := ShortcutSample12nb
-
-LOCAL_AAPT_FLAGS += --version-code 12
-LOCAL_MANIFEST_FILE := noback/AndroidManifest.xml
-
-LOCAL_MODULE_TAGS := samples tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
-
-LOCAL_STATIC_ANDROID_LIBRARIES = androidx.legacy_legacy-support-v4
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_PACKAGE)
-
diff --git a/samples/SimpleJNI/Android.bp b/samples/SimpleJNI/Android.bp
index 5a01b572b..57a78a8a3 100644
--- a/samples/SimpleJNI/Android.bp
+++ b/samples/SimpleJNI/Android.bp
@@ -17,6 +17,10 @@
// This makefile shows how to build a shared library and an activity that
// bundles the shared library and calls it using JNI.
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "SimpleJNI",
srcs: ["**/*.java"],
diff --git a/samples/SimpleJNI/jni/Android.bp b/samples/SimpleJNI/jni/Android.bp
index d920b4bba..b34ed0117 100644
--- a/samples/SimpleJNI/jni/Android.bp
+++ b/samples/SimpleJNI/jni/Android.bp
@@ -17,6 +17,10 @@
// This makefile supplies the rules for building a library of JNI code for
// use by our example of how to bundle a shared library with an APK.
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
cc_library_shared {
name: "libsimplejni",
// All of the source files that we will compile.
@@ -29,6 +33,7 @@ cc_library_shared {
"-Wall",
"-Werror",
],
+ header_libs: ["jni_headers"],
stl: "none",
sdk_version: "current",
}
diff --git a/samples/SipDemo/Android.bp b/samples/SipDemo/Android.bp
index ddde98242..ec111dbdc 100644
--- a/samples/SipDemo/Android.bp
+++ b/samples/SipDemo/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "SipDemo",
// Only compile source java files in this apk.
diff --git a/samples/SkeletonApp/Android.bp b/samples/SkeletonApp/Android.bp
index c8704479a..9ed80d8e3 100644
--- a/samples/SkeletonApp/Android.bp
+++ b/samples/SkeletonApp/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "SkeletonApp",
// Only compile source java files in this apk.
diff --git a/samples/SkeletonApp/tests/Android.bp b/samples/SkeletonApp/tests/Android.bp
index 77229279c..018e28635 100644
--- a/samples/SkeletonApp/tests/Android.bp
+++ b/samples/SkeletonApp/tests/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_test {
name: "SkeletonAppTests",
srcs: ["**/*.java"],
diff --git a/samples/Snake/Android.bp b/samples/Snake/Android.bp
index 645f4d27c..93eb17456 100644
--- a/samples/Snake/Android.bp
+++ b/samples/Snake/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "Snake",
// Only compile source java files in this apk.
diff --git a/samples/Snake/src/com/example/android/snake/SnakeView.java b/samples/Snake/src/com/example/android/snake/SnakeView.java
index a8e654ffb..81ff8e091 100755
--- a/samples/Snake/src/com/example/android/snake/SnakeView.java
+++ b/samples/Snake/src/com/example/android/snake/SnakeView.java
@@ -447,9 +447,9 @@ public class SnakeView extends TileView {
}
/**
- * Figure out which way the snake is going, see if he's run into anything (the walls, himself,
- * or an apple). If he's not going to die, we then add to the front and subtract from the rear
- * in order to simulate motion. If we want to grow him, we don't subtract from the rear.
+ * Figure out which way the snake is going, see if they've run into anything (the walls, themself,
+ * or an apple). If they're not going to die, we then add to the front and subtract from the rear
+ * in order to simulate motion. If we want to grow them, we don't subtract from the rear.
*/
private void updateSnake() {
boolean growSnake = false;
diff --git a/samples/Snake/tests/Android.bp b/samples/Snake/tests/Android.bp
index 82c541f62..a0425ceef 100644
--- a/samples/Snake/tests/Android.bp
+++ b/samples/Snake/tests/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_test {
name: "SnakeTests",
srcs: ["**/*.java"],
diff --git a/samples/SoftKeyboard/Android.bp b/samples/SoftKeyboard/Android.bp
index 984c2fd34..b96d42aad 100644
--- a/samples/SoftKeyboard/Android.bp
+++ b/samples/SoftKeyboard/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "SoftKeyboard",
srcs: ["**/*.java"],
diff --git a/samples/SpellChecker/HelloSpellChecker/Android.bp b/samples/SpellChecker/HelloSpellChecker/Android.bp
index 248908e90..1f1ef7841 100644
--- a/samples/SpellChecker/HelloSpellChecker/Android.bp
+++ b/samples/SpellChecker/HelloSpellChecker/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "HelloSpellChecker",
srcs: ["**/*.java"],
diff --git a/samples/SpellChecker/HelloSpellChecker/AndroidManifest.xml b/samples/SpellChecker/HelloSpellChecker/AndroidManifest.xml
index 0a6b90671..e6cd564ad 100644
--- a/samples/SpellChecker/HelloSpellChecker/AndroidManifest.xml
+++ b/samples/SpellChecker/HelloSpellChecker/AndroidManifest.xml
@@ -26,6 +26,7 @@
<application
android:label="@string/app_name" >
<activity
+ android:exported="true"
android:label="@string/app_name"
android:name=".HelloSpellCheckerActivity" >
<intent-filter >
diff --git a/samples/SpellChecker/SampleSpellCheckerService/Android.bp b/samples/SpellChecker/SampleSpellCheckerService/Android.bp
index b140932ce..12cdee085 100644
--- a/samples/SpellChecker/SampleSpellCheckerService/Android.bp
+++ b/samples/SpellChecker/SampleSpellCheckerService/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "SampleSpellCheckerService",
srcs: ["**/*.java"],
diff --git a/samples/SpellChecker/SampleSpellCheckerService/AndroidManifest.xml b/samples/SpellChecker/SampleSpellCheckerService/AndroidManifest.xml
index fcb1671b7..1042e3f9b 100644
--- a/samples/SpellChecker/SampleSpellCheckerService/AndroidManifest.xml
+++ b/samples/SpellChecker/SampleSpellCheckerService/AndroidManifest.xml
@@ -23,6 +23,7 @@
<application
android:label="@string/app_name" >
<service
+ android:exported="false"
android:label="@string/app_name"
android:name=".SampleSpellCheckerService"
android:permission="android.permission.BIND_TEXT_SERVICE" >
@@ -36,11 +37,9 @@
</service>
<activity
+ android:exported="false"
android:label="@string/sample_settings"
android:name="SpellCheckerSettingsActivity" >
- <intent-filter >
- <action android:name="android.intent.action.MAIN" />
- </intent-filter>
</activity>
</application>
diff --git a/samples/StackWidget/Android.bp b/samples/StackWidget/Android.bp
index 5ec823af1..d8e8601b6 100644
--- a/samples/StackWidget/Android.bp
+++ b/samples/StackWidget/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_test {
name: "StackWidget",
// Only compile source java files in this apk.
diff --git a/samples/StartingWindow/Android.bp b/samples/StartingWindow/Android.bp
new file mode 100644
index 000000000..562306227
--- /dev/null
+++ b/samples/StartingWindow/Android.bp
@@ -0,0 +1,16 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+android_app {
+ name: "StartingWindow",
+ // Only compile source java files in this apk.
+ srcs: ["src/**/*.java"],
+ sdk_version: "current",
+ static_libs: [
+ "androidx.appcompat_appcompat"
+ ],
+ dex_preopt: {
+ enabled: false,
+ },
+}
diff --git a/samples/StartingWindow/AndroidManifest.xml b/samples/StartingWindow/AndroidManifest.xml
new file mode 100644
index 000000000..de2040796
--- /dev/null
+++ b/samples/StartingWindow/AndroidManifest.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2020 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.example.android.startingwindow">
+
+ <application android:label="@string/app_name"
+ android:icon="@drawable/ic_launcher">
+ <activity
+ android:name=".CustomizeExitActivity"
+ android:label="Starting Window"
+ android:theme="@style/AppTheme"
+ android:exported="true">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.LAUNCHER"/>
+ </intent-filter>
+ </activity>
+ <activity
+ android:name=".SecondActivity"
+ android:label="Second Activity"
+ android:exported="true">
+ </activity>
+ </application>
+</manifest> \ No newline at end of file
diff --git a/samples/StartingWindow/res/drawable-hdpi/logo_gmail.png b/samples/StartingWindow/res/drawable-hdpi/logo_gmail.png
new file mode 100644
index 000000000..766c86475
--- /dev/null
+++ b/samples/StartingWindow/res/drawable-hdpi/logo_gmail.png
Binary files differ
diff --git a/samples/StartingWindow/res/drawable-mdpi/logo_gmail.png b/samples/StartingWindow/res/drawable-mdpi/logo_gmail.png
new file mode 100644
index 000000000..9816fe53d
--- /dev/null
+++ b/samples/StartingWindow/res/drawable-mdpi/logo_gmail.png
Binary files differ
diff --git a/samples/StartingWindow/res/drawable-v26/ic_launcher.xml b/samples/StartingWindow/res/drawable-v26/ic_launcher.xml
new file mode 100644
index 000000000..852a12f39
--- /dev/null
+++ b/samples/StartingWindow/res/drawable-v26/ic_launcher.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2021 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+ <background android:drawable="@color/white"/>
+ <foreground>
+ <inset
+ android:drawable="@drawable/logo_gmail"
+ android:insetTop="22.22%"
+ android:insetLeft="22.22%"
+ android:insetBottom="22.22%"
+ android:insetRight="22.22%"
+ />
+ </foreground>
+</adaptive-icon> \ No newline at end of file
diff --git a/samples/StartingWindow/res/drawable-xhdpi/logo_gmail.png b/samples/StartingWindow/res/drawable-xhdpi/logo_gmail.png
new file mode 100644
index 000000000..a37a04eaa
--- /dev/null
+++ b/samples/StartingWindow/res/drawable-xhdpi/logo_gmail.png
Binary files differ
diff --git a/samples/StartingWindow/res/drawable-xxhdpi/logo_gmail.png b/samples/StartingWindow/res/drawable-xxhdpi/logo_gmail.png
new file mode 100644
index 000000000..a2294b04a
--- /dev/null
+++ b/samples/StartingWindow/res/drawable-xxhdpi/logo_gmail.png
Binary files differ
diff --git a/samples/StartingWindow/res/drawable-xxxhdpi/logo_gmail.png b/samples/StartingWindow/res/drawable-xxxhdpi/logo_gmail.png
new file mode 100644
index 000000000..dcea21ae6
--- /dev/null
+++ b/samples/StartingWindow/res/drawable-xxxhdpi/logo_gmail.png
Binary files differ
diff --git a/samples/StartingWindow/res/drawable/avd_anim.xml b/samples/StartingWindow/res/drawable/avd_anim.xml
new file mode 100644
index 000000000..19205d4d1
--- /dev/null
+++ b/samples/StartingWindow/res/drawable/avd_anim.xml
@@ -0,0 +1,94 @@
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt">
+ <aapt:attr name="android:drawable">
+ <vector android:height="432dp" android:width="432dp" android:viewportHeight="432" android:viewportWidth="432">
+ <group android:name="_R_G">
+ <group android:name="_R_G_L_5_G" android:translateX="216" android:translateY="216" android:scaleX="1.5" android:scaleY="1.5">
+ <path android:name="_R_G_L_5_G_D_0_P_0" android:fillColor="#555555" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M53.82 -56.7 C53.82,-56.7 43.64,-49.06 43.64,-49.06 C43.64,-49.06 0,-16.34 0,-16.34 C0,-16.34 -43.64,-49.06 -43.64,-49.06 C-43.64,-49.06 -53.82,-56.7 -53.82,-56.7 C-64.6,-64.79 -80,-57.09 -80,-43.61 C-80,-43.61 -80,-29.07 -80,-29.07 C-80,-29.07 -80,49.09 -80,49.09 C-80,55.12 -75.12,60 -69.09,60 C-69.09,60 -43.64,60 -43.64,60 C-43.64,60 -43.64,-1.8 -43.64,-1.8 C-43.64,-1.8 0,30.92 0,30.92 C0,30.92 43.64,-1.8 43.64,-1.8 C43.64,-1.8 43.64,60 43.64,60 C43.64,60 69.09,60 69.09,60 C75.12,60 80,55.12 80,49.09 C80,49.09 80,-29.07 80,-29.07 C80,-29.07 80,-43.61 80,-43.61 C80,-57.09 64.61,-64.79 53.82,-56.7c "/>
+ </group>
+ <group android:name="_R_G_L_4_G" android:translateX="216" android:translateY="216" android:scaleX="1.5" android:scaleY="1.5">
+ <clip-path android:name="mask_x" android:pathData="M53.82 -56.7 C53.82,-56.7 43.64,-49.06 43.64,-49.06 C43.64,-49.06 0,-16.34 0,-16.34 C0,-16.34 -43.64,-49.06 -43.64,-49.06 C-43.64,-49.06 -53.82,-56.7 -53.82,-56.7 C-64.6,-64.79 -80,-57.09 -80,-43.61 C-80,-43.61 -80,-29.07 -80,-29.07 C-80,-29.07 -80,49.09 -80,49.09 C-80,55.12 -75.12,60 -69.09,60 C-69.09,60 -43.64,60 -43.64,60 C-43.64,60 -43.64,-1.8 -43.64,-1.8 C-43.64,-1.8 0,30.92 0,30.92 C0,30.92 43.64,-1.8 43.64,-1.8 C43.64,-1.8 43.64,60 43.64,60 C43.64,60 69.09,60 69.09,60 C75.12,60 80,55.12 80,49.09 C80,49.09 80,-29.07 80,-29.07 C80,-29.07 80,-43.61 80,-43.61 C80,-57.09 64.61,-64.79 53.82,-56.7c"/>
+ <path android:name="_R_G_L_4_G_D_0_P_0" android:fillColor="#2684fc" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M-80.39 60 C-80.39,60 -105.84,60 -105.84,60 C-111.87,60 -116.75,55.12 -116.75,49.09 C-116.75,49.09 -116.75,-60 -116.75,-60 C-116.75,-60 -80.39,-60 -80.39,-60 C-80.39,-60 -80.39,60 -80.39,60c "/>
+ </group>
+ <group android:name="_R_G_L_3_G" android:translateX="216" android:translateY="216" android:scaleX="1.5" android:scaleY="1.5">
+ <clip-path android:name="mask_x" android:pathData="M53.82 -56.7 C53.82,-56.7 43.64,-49.06 43.64,-49.06 C43.64,-49.06 0,-16.34 0,-16.34 C0,-16.34 -43.64,-49.06 -43.64,-49.06 C-43.64,-49.06 -53.82,-56.7 -53.82,-56.7 C-64.6,-64.79 -80,-57.09 -80,-43.61 C-80,-43.61 -80,-29.07 -80,-29.07 C-80,-29.07 -80,49.09 -80,49.09 C-80,55.12 -75.12,60 -69.09,60 C-69.09,60 -43.64,60 -43.64,60 C-43.64,60 -43.64,-1.8 -43.64,-1.8 C-43.64,-1.8 0,30.92 0,30.92 C0,30.92 43.64,-1.8 43.64,-1.8 C43.64,-1.8 43.64,60 43.64,60 C43.64,60 69.09,60 69.09,60 C75.12,60 80,55.12 80,49.09 C80,49.09 80,-29.07 80,-29.07 C80,-29.07 80,-43.61 80,-43.61 C80,-57.09 64.61,-64.79 53.82,-56.7c"/>
+ <path android:name="_R_G_L_3_G_D_0_P_0" android:fillColor="#00ac47" android:fillAlpha="1" android:fillType="nonZero" android:pathData="M80.64 60 C80.64,60 106.09,60 106.09,60 C112.12,60 117,55.12 117,49.09 C117,49.09 117,-60 117,-60 C117,-60 80.64,-60 80.64,-60 C80.64,-60 80.64,60 80.64,60c "/>
+ </group>
+ <group android:name="_R_G_L_2_G" android:translateX="216" android:translateY="216" android:scaleX="1.5" android:scaleY="1.5">
+ <clip-path android:name="mask_x" android:pathData="M53.82 -56.7 C53.82,-56.7 43.64,-49.06 43.64,-49.06 C43.64,-49.06 0,-16.34 0,-16.34 C0,-16.34 -43.64,-49.06 -43.64,-49.06 C-43.64,-49.06 -53.82,-56.7 -53.82,-56.7 C-64.6,-64.79 -80,-57.09 -80,-43.61 C-80,-43.61 -80,-29.07 -80,-29.07 C-80,-29.07 -80,49.09 -80,49.09 C-80,55.12 -75.12,60 -69.09,60 C-69.09,60 -43.64,60 -43.64,60 C-43.64,60 -43.64,-1.8 -43.64,-1.8 C-43.64,-1.8 0,30.92 0,30.92 C0,30.92 43.64,-1.8 43.64,-1.8 C43.64,-1.8 43.64,60 43.64,60 C43.64,60 69.09,60 69.09,60 C75.12,60 80,55.12 80,49.09 C80,49.09 80,-29.07 80,-29.07 C80,-29.07 80,-43.61 80,-43.61 C80,-57.09 64.61,-64.79 53.82,-56.7c"/>
+ <path android:name="_R_G_L_2_G_D_0_P_0" android:fillColor="#fe2c25" android:fillAlpha="1" android:fillType="nonZero" android:pathData="M53.82 -104.7 C53.82,-104.7 0,-64.34 0,-64.34 C0,-64.34 -53.82,-104.7 -53.82,-104.7 C-64.6,-112.79 -80,-105.09 -80,-91.61 C-80,-91.61 -80,-77.07 -80,-77.07 C-80,-77.07 0,-17.08 0,-17.08 C0,-17.08 80,-77.07 80,-77.07 C80,-77.07 80,-91.61 80,-91.61 C80,-105.09 64.61,-112.79 53.82,-104.7c "/>
+ </group>
+ <group android:name="_R_G_L_1_G" android:translateX="216" android:translateY="216" android:scaleX="1.5" android:scaleY="1.5">
+ <clip-path android:name="mask_x" android:pathData="M43.64 -1.8 C43.64,-1.8 43.64,-49.06 43.64,-49.06 C43.64,-49.06 53.82,-56.7 53.82,-56.7 C64.61,-64.79 80,-57.09 80,-43.61 C80,-43.61 80,-1.8 80,-1.8 C80,-1.8 43.64,-1.8 43.64,-1.8c"/>
+ <path android:name="_R_G_L_1_G_D_0_P_0" android:fillColor="#ffba00" android:fillAlpha="1" android:fillType="nonZero" android:pathData="M80.64 -135 C80.64,-135 117,-135 117,-135 C117,-135 117,-104.07 117,-104.07 C117,-104.07 80.64,-76.8 80.64,-76.8 C80.64,-76.8 80.64,-135 80.64,-135c "/>
+ </group>
+ <group android:name="_R_G_L_0_G" android:translateX="216" android:translateY="216" android:scaleX="1.5" android:scaleY="1.5">
+ <clip-path android:name="mask_x" android:pathData="M-43.64 -1.8 C-43.64,-1.8 -80,-1.8 -80,-1.8 C-80,-1.8 -80,-43.61 -80,-43.61 C-80,-57.09 -64.6,-64.79 -53.82,-56.7 C-53.82,-56.7 -43.64,-49.06 -43.64,-49.06 C-43.64,-49.06 -43.64,-1.8 -43.64,-1.8c"/>
+ <path android:name="_R_G_L_0_G_D_0_P_0" android:fillColor="#d70007" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M-117 -104.07 C-117,-104.07 -117,-135 -117,-135 C-117,-135 -80.64,-135 -80.64,-135 C-80.64,-135 -80.64,-76.8 -80.64,-76.8 C-80.64,-76.8 -117,-104.07 -117,-104.07c "/>
+ </group>
+ </group>
+ <group android:name="time_group"/>
+ </vector>
+ </aapt:attr>
+ <target android:name="_R_G_L_4_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator android:propertyName="pathData" android:duration="1567" android:startOffset="233" android:valueFrom="M-80.39 60 C-80.39,60 -105.84,60 -105.84,60 C-111.87,60 -116.75,55.12 -116.75,49.09 C-116.75,49.09 -116.75,-60 -116.75,-60 C-116.75,-60 -80.39,-60 -80.39,-60 C-80.39,-60 -80.39,60 -80.39,60c " android:valueTo=" M-43.64 60 C-43.64,60 -69.09,60 -69.09,60 C-75.12,60 -80,55.12 -80,49.09 C-80,49.09 -80,-60 -80,-60 C-80,-60 -43.64,-60 -43.64,-60 C-43.64,-60 -43.64,60 -43.64,60c " android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0,1 1.0,1.0"/>
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_3_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator android:propertyName="pathData" android:duration="1567" android:startOffset="233" android:valueFrom=" M80.64 60 C80.64,60 106.09,60 106.09,60 C112.12,60 117,55.12 117,49.09 C117,49.09 117,-60 117,-60 C117,-60 80.64,-60 80.64,-60 C80.64,-60 80.64,60 80.64,60c " android:valueTo=" M43.64 60 C43.64,60 69.09,60 69.09,60 C75.12,60 80,55.12 80,49.09 C80,49.09 80,-60 80,-60 C80,-60 43.64,-60 43.64,-60 C43.64,-60 43.64,60 43.64,60c " android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0,1 1.0,1.0"/>
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_2_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator android:propertyName="pathData" android:duration="1567" android:startOffset="233" android:valueFrom="M53.82 -104.7 C53.82,-104.7 0,-64.34 0,-64.34 C0,-64.34 -53.82,-104.7 -53.82,-104.7 C-64.6,-112.79 -80,-105.09 -80,-91.61 C-80,-91.61 -80,-77.07 -80,-77.07 C-80,-77.07 0,-17.08 0,-17.08 C0,-17.08 80,-77.07 80,-77.07 C80,-77.07 80,-91.61 80,-91.61 C80,-105.09 64.61,-112.79 53.82,-104.7c" android:valueTo="M53.82 -56.7 C53.82,-56.7 0,-16.34 0,-16.34 C0,-16.34 -53.82,-56.7 -53.82,-56.7 C-64.6,-64.79 -80,-57.09 -80,-43.61 C-80,-43.61 -80,-29.07 -80,-29.07 C-80,-29.07 0,30.92 0,30.92 C0,30.92 80,-29.07 80,-29.07 C80,-29.07 80,-43.61 80,-43.61 C80,-57.09 64.61,-64.79 53.82,-56.7c " android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0,1 1.0,1.0"/>
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator android:propertyName="pathData" android:duration="1567" android:startOffset="233" android:valueFrom=" M80.64 -135 C80.64,-135 117,-135 117,-135 C117,-135 117,-104.07 117,-104.07 C117,-104.07 80.64,-76.8 80.64,-76.8 C80.64,-76.8 80.64,-135 80.64,-135c " android:valueTo=" M43.64 -60 C43.64,-60 80,-60 80,-60 C80,-60 80,-29.07 80,-29.07 C80,-29.07 43.64,-1.8 43.64,-1.8 C43.64,-1.8 43.64,-60 43.64,-60c " android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0,1 1.0,1.0"/>
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator android:propertyName="pathData" android:duration="1567" android:startOffset="233" android:valueFrom=" M-117 -104.07 C-117,-104.07 -117,-135 -117,-135 C-117,-135 -80.64,-135 -80.64,-135 C-80.64,-135 -80.64,-76.8 -80.64,-76.8 C-80.64,-76.8 -117,-104.07 -117,-104.07c " android:valueTo=" M-80 -29.07 C-80,-29.07 -80,-60 -80,-60 C-80,-60 -43.64,-60 -43.64,-60 C-43.64,-60 -43.64,-1.8 -43.64,-1.8 C-43.64,-1.8 -80,-29.07 -80,-29.07c " android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0,1 1.0,1.0"/>
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="time_group">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator android:propertyName="translateX" android:duration="2017" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/>
+ </set>
+ </aapt:attr>
+ </target>
+</animated-vector>
diff --git a/samples/StartingWindow/res/drawable/ic_launcher.xml b/samples/StartingWindow/res/drawable/ic_launcher.xml
new file mode 100644
index 000000000..b380473b6
--- /dev/null
+++ b/samples/StartingWindow/res/drawable/ic_launcher.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8"?>
+<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+ android:src="@drawable/logo_gmail" /> \ No newline at end of file
diff --git a/samples/StartingWindow/res/layout/main_activity.xml b/samples/StartingWindow/res/layout/main_activity.xml
new file mode 100644
index 000000000..a2a221da4
--- /dev/null
+++ b/samples/StartingWindow/res/layout/main_activity.xml
@@ -0,0 +1,109 @@
+<!--
+ ~ Copyright (C) 2021 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/container"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical">
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="70dp"
+ android:gravity="center"
+ android:orientation="horizontal">
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="SampleItem" />
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="70dp"
+ android:gravity="center"
+ android:orientation="horizontal">
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="SampleItem" />
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="70dp"
+ android:gravity="center"
+ android:orientation="horizontal">
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="SampleItem" />
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="70dp"
+ android:gravity="center"
+ android:orientation="horizontal">
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="SampleItem" />
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="70dp"
+ android:gravity="center"
+ android:orientation="horizontal">
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="SampleItem" />
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="70dp"
+ android:gravity="center"
+ android:orientation="horizontal">
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="SampleItem" />
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="70dp"
+ android:gravity="center"
+ android:orientation="horizontal">
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="SampleItem" />
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="70dp"
+ android:gravity="center"
+ android:orientation="horizontal">
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="SampleItem" />
+ </LinearLayout>
+</LinearLayout>
diff --git a/samples/StartingWindow/res/values-night/styles.xml b/samples/StartingWindow/res/values-night/styles.xml
new file mode 100644
index 000000000..2707a8722
--- /dev/null
+++ b/samples/StartingWindow/res/values-night/styles.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2020 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License
+ -->
+
+<resources>
+ <style name="AppTheme" parent="BaseAppTheme">
+ <!-- We make sure our splashscreen dark background matches our window background -->
+ <item name="android:windowSplashScreenBackground">#171717</item>
+ <item name="android:windowBackground">#171717</item>
+ </style>
+</resources> \ No newline at end of file
diff --git a/samples/StartingWindow/res/values/colors.xml b/samples/StartingWindow/res/values/colors.xml
new file mode 100644
index 000000000..f082268cf
--- /dev/null
+++ b/samples/StartingWindow/res/values/colors.xml
@@ -0,0 +1,20 @@
+<!--
+ ~ Copyright (C) 2020 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License
+ -->
+
+<resources>
+ <drawable name="red">#ff0000</drawable>
+ <color name="white">#FFFFFF</color>
+</resources> \ No newline at end of file
diff --git a/samples/StartingWindow/res/values/strings.xml b/samples/StartingWindow/res/values/strings.xml
new file mode 100644
index 000000000..39d4f523e
--- /dev/null
+++ b/samples/StartingWindow/res/values/strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2020 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources>
+ <string name="app_name">StartingWindow</string>
+</resources> \ No newline at end of file
diff --git a/samples/StartingWindow/res/values/styles.xml b/samples/StartingWindow/res/values/styles.xml
new file mode 100644
index 000000000..4a7606cc8
--- /dev/null
+++ b/samples/StartingWindow/res/values/styles.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2020 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources>
+
+ <style name="BaseAppTheme" parent="Theme.AppCompat.DayNight">
+ <!-- Splashscreen Attributes -->
+ <item name="android:windowSplashScreenBackground">#ffffff</item>
+ <item name="android:windowSplashScreenAnimatedIcon">@drawable/avd_anim</item>
+
+ <!-- Here we want to match the duration of our AVD -->
+ <item name="android:windowSplashScreenAnimationDuration">900</item>
+
+ <!-- Other -->
+ <item name="android:windowTranslucentStatus">true</item>
+ </style>
+
+ <style name="AppTheme" parent="BaseAppTheme">
+ </style>
+</resources> \ No newline at end of file
diff --git a/samples/StartingWindow/src/com/example/android/startingwindow/CustomizeExitActivity.java b/samples/StartingWindow/src/com/example/android/startingwindow/CustomizeExitActivity.java
new file mode 100644
index 000000000..c5eb8a849
--- /dev/null
+++ b/samples/StartingWindow/src/com/example/android/startingwindow/CustomizeExitActivity.java
@@ -0,0 +1,205 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.android.startingwindow;
+
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.animation.AnimatorSet;
+import android.animation.ObjectAnimator;
+import android.animation.ValueAnimator;
+import android.annotation.SuppressLint;
+import android.app.Activity;
+import android.content.ComponentName;
+import android.content.Intent;
+import android.content.pm.ShortcutInfo;
+import android.content.pm.ShortcutManager;
+import android.content.res.Resources;
+import android.os.Build.VERSION_CODES;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Process;
+import android.os.SystemClock;
+import android.provider.Settings.Global;
+import android.util.TypedValue;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewTreeObserver.OnPreDrawListener;
+import android.view.animation.AccelerateInterpolator;
+import android.view.animation.Interpolator;
+import android.view.animation.PathInterpolator;
+import android.widget.Button;
+import android.widget.LinearLayout;
+import android.widget.LinearLayout.LayoutParams;
+import android.window.SplashScreen;
+import android.window.SplashScreenView;
+
+import androidx.annotation.RequiresApi;
+
+import java.time.Instant;
+import java.time.temporal.ChronoUnit;
+import java.util.Collections;
+
+@RequiresApi(api = VERSION_CODES.S)
+public class CustomizeExitActivity extends Activity {
+
+ public static final Interpolator EASE_IN_OUT = new PathInterpolator(.48f, .11f, .53f, .87f);
+ public static final Interpolator ACCELERATE = new AccelerateInterpolator();
+ public static final int MOCK_DELAY = 200;
+ public static final int MARGIN_ANIMATION_DURATION = 800;
+ public static final int SPLASHSCREEN_ALPHA_ANIMATION_DURATION = 500;
+ public static final int SPLASHSCREEN_TY_ANIMATION_DURATION = 1000;
+ public static final boolean WAIT_FOR_AVD_TO_FINISH = true;
+ public static final boolean DEBUG = false;
+
+ boolean appReady = false;
+ private float animationScale = 1.0f;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.main_activity);
+ getWindow().setDecorFitsSystemWindows(false);
+
+ // On Android S, this new method has been added to Activity
+ SplashScreen splashScreen = getSplashScreen();
+
+ // Setting an OnExitAnimationListener on the SplashScreen indicates
+ // to the system that the application will handle the exit animation.
+ // This means that the SplashScreen will be inflated in the application
+ // process once the process has started.
+ // Otherwise, the splashscreen stays in the SystemUI process and will be
+ // dismissed once the first frame of the app is drawn
+ splashScreen.setOnExitAnimationListener(this::onSplashScreenExit);
+
+ animationScale = Global.getFloat(getContentResolver(),
+ Global.ANIMATOR_DURATION_SCALE, 1.0f);
+
+ // Create some artificial delay to simulate some local database fetch for example
+ new Handler(Looper.getMainLooper())
+ .postDelayed(() -> appReady = true, (long) (MOCK_DELAY * animationScale));
+
+ // We use a pre draw listener to delay the removal of the splashscreen
+ // until our app is ready
+ final View content = findViewById(android.R.id.content);
+ content.getViewTreeObserver().addOnPreDrawListener(
+ new OnPreDrawListener() {
+ @Override
+ public boolean onPreDraw() {
+ if (appReady) {
+ content.getViewTreeObserver().removeOnPreDrawListener(this);
+ return true;
+ }
+ return false;
+ }
+ }
+ );
+ }
+
+ private void onSplashScreenExit(SplashScreenView view) {
+ // At this point the first frame of the application is drawn and
+ // the SplashScreen is ready to be removed.
+
+ // It is now up to the application to animate the provided view
+ // since the listener is registered
+ AnimatorSet animatorSet = new AnimatorSet();
+ animatorSet.setDuration(500);
+
+ ObjectAnimator translationY = ObjectAnimator.ofFloat(view, "translationY", 0, view.getHeight());
+ translationY.setInterpolator(ACCELERATE);
+
+ ObjectAnimator alpha = ObjectAnimator.ofFloat(view, "alpha", 1, 0);
+ alpha.setInterpolator(ACCELERATE);
+
+ // To get fancy, we'll also animate our content
+ ValueAnimator marginAnimator = createContentAnimation();
+
+ animatorSet.playTogether(translationY, alpha, marginAnimator);
+ animatorSet.addListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ view.remove();
+ }
+ });
+
+ // If we want to wait for our Animated Vector Drawable to finish animating, we can compute
+ // the remaining time to delay the start of the exit animation
+ long delayMillis = Instant.now()
+ .until(view.getIconAnimationStart().plus(view.getIconAnimationDuration()),
+ ChronoUnit.MILLIS);
+ view.postDelayed(animatorSet::start, (long) (delayMillis * animationScale));
+ }
+
+ private ValueAnimator createContentAnimation() {
+ Resources r = getResources();
+ float marginStart = TypedValue.applyDimension(
+ TypedValue.COMPLEX_UNIT_DIP, 30, r.getDisplayMetrics()
+ );
+
+ float marginEnd = TypedValue.applyDimension(
+ TypedValue.COMPLEX_UNIT_DIP, 10, r.getDisplayMetrics()
+ );
+
+ ValueAnimator marginAnimator = ValueAnimator.ofFloat(marginStart, marginEnd);
+ marginAnimator.addUpdateListener(valueAnimator -> {
+ LinearLayout container = findViewById(R.id.container);
+ int marginTop = Math.round((Float) valueAnimator.getAnimatedValue());
+ for (int i = 0; i < container.getChildCount(); i++) {
+ View child = container.getChildAt(i);
+ ((LayoutParams) child.getLayoutParams()).setMargins(0, marginTop, 0, 0);
+ }
+ container.requestLayout();
+ });
+ marginAnimator.setInterpolator(EASE_IN_OUT);
+ return marginAnimator;
+ }
+
+ @SuppressLint("SetTextI18n")
+ private void createShortcutButton() {
+ final Button Button = new Button(this);
+ Button.setText("Create shortcut");
+ Button.setOnClickListener((v) -> createShortcut());
+ addContentView(Button, new ViewGroup.LayoutParams(
+ ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
+ }
+
+ private void createShortcut() {
+ ShortcutManager shortcutManager = getSystemService(ShortcutManager.class);
+ String shortcutId1 = "shortcutId1";
+ shortcutManager.removeDynamicShortcuts(Collections.singletonList(shortcutId1));
+ final ShortcutInfo.Builder b = new ShortcutInfo.Builder(this, shortcutId1);
+ final ComponentName name = new ComponentName("com.example.android.startingwindow",
+ "com.example.android.startingwindow.SecondActivity");
+ final Intent i = new Intent(Intent.ACTION_MAIN)
+ .setComponent(name);
+ ShortcutInfo shortcut = b.setShortLabel("label")
+ .setLongLabel("Long label")
+ .setIntent(i)
+ .setStartingTheme(android.R.style.Theme_Black_NoTitleBar_Fullscreen)
+ .build();
+ shortcutManager.addDynamicShortcuts(Collections.singletonList(shortcut));
+ }
+
+ @Override
+ protected void onPause() {
+ // For the sake of this demo app, we kill the app on pause so
+ // we see a cold start animation for each launch
+ super.onPause();
+ finishAndRemoveTask();
+ Process.killProcess(Process.myPid());
+ }
+} \ No newline at end of file
diff --git a/samples/StartingWindow/src/com/example/android/startingwindow/SecondActivity.java b/samples/StartingWindow/src/com/example/android/startingwindow/SecondActivity.java
new file mode 100644
index 000000000..50b454ce0
--- /dev/null
+++ b/samples/StartingWindow/src/com/example/android/startingwindow/SecondActivity.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.example.android.startingwindow;
+
+import android.app.Activity;
+
+public class SecondActivity extends Activity {
+
+} \ No newline at end of file
diff --git a/samples/ThemedNavBarKeyboard/Android.bp b/samples/ThemedNavBarKeyboard/Android.bp
index 2c6bb4502..d2fa55a5c 100644
--- a/samples/ThemedNavBarKeyboard/Android.bp
+++ b/samples/ThemedNavBarKeyboard/Android.bp
@@ -14,6 +14,10 @@
// limitations under the License.
//
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "ThemedNavBarKeyboard",
srcs: ["**/*.java"],
diff --git a/samples/ToyVpn/Android.bp b/samples/ToyVpn/Android.bp
index 430fccba0..a6b1f0aae 100644
--- a/samples/ToyVpn/Android.bp
+++ b/samples/ToyVpn/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "ToyVpn",
// Only compile source java files in this apk.
diff --git a/samples/TtsEngine/Android.bp b/samples/TtsEngine/Android.bp
index 5aff36397..7fa6dc447 100644
--- a/samples/TtsEngine/Android.bp
+++ b/samples/TtsEngine/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "TtsEngine",
srcs: ["src/**/*.java"],
diff --git a/samples/USB/AdbTest/Android.bp b/samples/USB/AdbTest/Android.bp
index c812f8017..9abd7148e 100644
--- a/samples/USB/AdbTest/Android.bp
+++ b/samples/USB/AdbTest/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "AdbTest",
srcs: ["**/*.java"],
diff --git a/samples/USB/MissileLauncher/Android.bp b/samples/USB/MissileLauncher/Android.bp
index 249349ed4..cdbbe2f76 100644
--- a/samples/USB/MissileLauncher/Android.bp
+++ b/samples/USB/MissileLauncher/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "MissileLauncher",
srcs: ["**/*.java"],
diff --git a/samples/UiAutomator/Android.mk b/samples/UiAutomator/Android.mk
index 336fcf89f..5f4c5933d 100644
--- a/samples/UiAutomator/Android.mk
+++ b/samples/UiAutomator/Android.mk
@@ -22,6 +22,8 @@ LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := uiautomator.samples
+LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
+LOCAL_LICENSE_CONDITIONS := notice
LOCAL_JAVA_LIBRARIES := uiautomator.core android.test.base.stubs
LOCAL_STATIC_JAVA_LIBRARIES := junit
diff --git a/samples/Vault/Android.bp b/samples/Vault/Android.bp
index 65276dffc..6da74a4f2 100644
--- a/samples/Vault/Android.bp
+++ b/samples/Vault/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_test_helper_app {
name: "Vault",
srcs: ["**/*.java"],
diff --git a/samples/Vault/tests/Android.bp b/samples/Vault/tests/Android.bp
index 6b28d6e03..4076d7a04 100644
--- a/samples/Vault/tests/Android.bp
+++ b/samples/Vault/tests/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_test {
name: "VaultTests",
libs: [
diff --git a/samples/VoiceRecognitionService/Android.bp b/samples/VoiceRecognitionService/Android.bp
index 9ad9811d2..8819491b0 100644
--- a/samples/VoiceRecognitionService/Android.bp
+++ b/samples/VoiceRecognitionService/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "VoiceRecognitionService",
srcs: ["**/*.java"],
diff --git a/samples/VoicemailProviderDemo/Android.bp b/samples/VoicemailProviderDemo/Android.bp
index 2b98c0809..66211bd94 100644
--- a/samples/VoicemailProviderDemo/Android.bp
+++ b/samples/VoicemailProviderDemo/Android.bp
@@ -14,6 +14,25 @@
// limitations under the License.
//
+package {
+ default_applicable_licenses: [
+ "development_samples_VoicemailProviderDemo_license",
+ ],
+}
+
+// Added automatically by a large-scale-change
+// See: http://go/android-license-faq
+license {
+ name: "development_samples_VoicemailProviderDemo_license",
+ visibility: [":__subpackages__"],
+ license_kinds: [
+ "SPDX-license-identifier-Apache-2.0",
+ ],
+ license_text: [
+ "NOTICE",
+ ],
+}
+
android_app {
name: "VoicemailProviderDemo",
// Only compile source java files in this apk.
diff --git a/samples/WeatherListWidget/Android.bp b/samples/WeatherListWidget/Android.bp
index 23cc35288..55d4335f3 100644
--- a/samples/WeatherListWidget/Android.bp
+++ b/samples/WeatherListWidget/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_test {
name: "WeatherListWidget",
// Only compile source java files in this apk.
diff --git a/samples/WeatherListWidget/src/com/example/android/weatherlistwidget/WeatherDataProvider.java b/samples/WeatherListWidget/src/com/example/android/weatherlistwidget/WeatherDataProvider.java
index ede0039f7..8aa98584e 100644
--- a/samples/WeatherListWidget/src/com/example/android/weatherlistwidget/WeatherDataProvider.java
+++ b/samples/WeatherListWidget/src/com/example/android/weatherlistwidget/WeatherDataProvider.java
@@ -30,7 +30,7 @@ import android.net.Uri;
import java.util.ArrayList;
/**
- * A dummy class that we are going to use internally to store weather data. Generally, this data
+ * A placeholder class that we are going to use internally to store weather data. Generally, this data
* will be stored in an external and persistent location (ie. File, Database, SharedPreferences) so
* that the data can persist if the process is ever killed. For simplicity, in this sample the
* data will only be stored in memory.
diff --git a/samples/WiFiDirectDemo/Android.bp b/samples/WiFiDirectDemo/Android.bp
index e6bcc652e..7d539caf6 100644
--- a/samples/WiFiDirectDemo/Android.bp
+++ b/samples/WiFiDirectDemo/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "WiFiDirectDemo",
// Only compile source java files in this apk.
diff --git a/samples/WiFiDirectDemo/src/com/example/android/wifidirect/WiFiDirectActivity.java b/samples/WiFiDirectDemo/src/com/example/android/wifidirect/WiFiDirectActivity.java
index 01ab7d73c..635994c58 100644
--- a/samples/WiFiDirectDemo/src/com/example/android/wifidirect/WiFiDirectActivity.java
+++ b/samples/WiFiDirectDemo/src/com/example/android/wifidirect/WiFiDirectActivity.java
@@ -23,6 +23,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
+import android.net.wifi.WifiManager;
import android.net.wifi.p2p.WifiP2pConfig;
import android.net.wifi.p2p.WifiP2pDevice;
import android.net.wifi.p2p.WifiP2pManager;
@@ -82,6 +83,40 @@ public class WiFiDirectActivity extends Activity implements ChannelListener, Dev
}
}
+ private boolean initP2p() {
+ // Device capability definition check
+ if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_WIFI_DIRECT)) {
+ Log.e(TAG, "Wi-Fi Direct is not supported by this device.");
+ return false;
+ }
+
+ // Hardware capability check
+ WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
+ if (wifiManager == null) {
+ Log.e(TAG, "Cannot get Wi-Fi system service.");
+ return false;
+ }
+
+ if (!wifiManager.isP2pSupported()) {
+ Log.e(TAG, "Wi-Fi Direct is not supported by the hardware or Wi-Fi is off.");
+ return false;
+ }
+
+ manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
+ if (manager == null) {
+ Log.e(TAG, "Cannot get Wi-Fi Direct system service.");
+ return false;
+ }
+
+ channel = manager.initialize(this, getMainLooper(), null);
+ if (channel == null) {
+ Log.e(TAG, "Cannot initialize Wi-Fi Direct.");
+ return false;
+ }
+
+ return true;
+ }
+
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -94,8 +129,9 @@ public class WiFiDirectActivity extends Activity implements ChannelListener, Dev
intentFilter.addAction(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION);
intentFilter.addAction(WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION);
- manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
- channel = manager.initialize(this, getMainLooper(), null);
+ if (!initP2p()) {
+ finish();
+ }
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
&& checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION)
diff --git a/samples/WiFiDirectServiceDiscovery/Android.bp b/samples/WiFiDirectServiceDiscovery/Android.bp
index bb41aecb1..69588fdf7 100644
--- a/samples/WiFiDirectServiceDiscovery/Android.bp
+++ b/samples/WiFiDirectServiceDiscovery/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "WiFiDirectServiceDiscovery",
// Only compile source java files in this apk.
diff --git a/samples/WiFiDirectServiceDiscovery/src/com/example/android/wifidirect/discovery/WiFiServiceDiscoveryActivity.java b/samples/WiFiDirectServiceDiscovery/src/com/example/android/wifidirect/discovery/WiFiServiceDiscoveryActivity.java
index 5a53163e6..3f0a9ad8d 100644
--- a/samples/WiFiDirectServiceDiscovery/src/com/example/android/wifidirect/discovery/WiFiServiceDiscoveryActivity.java
+++ b/samples/WiFiDirectServiceDiscovery/src/com/example/android/wifidirect/discovery/WiFiServiceDiscoveryActivity.java
@@ -9,6 +9,7 @@ import android.content.Context;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.net.wifi.WpsInfo;
+import android.net.wifi.WifiManager;
import android.net.wifi.p2p.WifiP2pConfig;
import android.net.wifi.p2p.WifiP2pDevice;
import android.net.wifi.p2p.WifiP2pInfo;
@@ -101,6 +102,40 @@ public class WiFiServiceDiscoveryActivity extends Activity implements
}
}
+ private boolean initP2p() {
+ // Device capability definition check
+ if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_WIFI_DIRECT)) {
+ Log.e(TAG, "Wi-Fi Direct is not supported by this device.");
+ return false;
+ }
+
+ // Hardware capability check
+ WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
+ if (wifiManager == null) {
+ Log.e(TAG, "Cannot get Wi-Fi system service.");
+ return false;
+ }
+
+ if (!wifiManager.isP2pSupported()) {
+ Log.e(TAG, "Wi-Fi Direct is not supported by the hardware or Wi-Fi is off.");
+ return false;
+ }
+
+ manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
+ if (manager == null) {
+ Log.e(TAG, "Cannot get Wi-Fi Direct system service.");
+ return false;
+ }
+
+ channel = manager.initialize(this, getMainLooper(), null);
+ if (channel == null) {
+ Log.e(TAG, "Cannot initialize Wi-Fi Direct.");
+ return false;
+ }
+
+ return true;
+ }
+
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -115,8 +150,9 @@ public class WiFiServiceDiscoveryActivity extends Activity implements
intentFilter
.addAction(WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION);
- manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
- channel = manager.initialize(this, getMainLooper(), null);
+ if (!initP2p()) {
+ finish();
+ }
servicesList = new WiFiDirectServicesList();
getFragmentManager().beginTransaction()
diff --git a/samples/Wiktionary/Android.bp b/samples/Wiktionary/Android.bp
index 48995e92d..42d337b24 100644
--- a/samples/Wiktionary/Android.bp
+++ b/samples/Wiktionary/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "Wiktionary",
// Only compile source java files in this apk.
diff --git a/samples/WiktionarySimple/Android.bp b/samples/WiktionarySimple/Android.bp
index 0cc9c98eb..168f24f8a 100644
--- a/samples/WiktionarySimple/Android.bp
+++ b/samples/WiktionarySimple/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "WiktionarySimple",
// Only compile source java files in this apk.
diff --git a/samples/XmlAdapters/Android.bp b/samples/XmlAdapters/Android.bp
index 8ca721826..278bc59a4 100644
--- a/samples/XmlAdapters/Android.bp
+++ b/samples/XmlAdapters/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "xmladapters",
// Only compile source java files in this apk.
diff --git a/samples/XmlAdapters/src/com/example/android/xmladapters/ImageDownloader.java b/samples/XmlAdapters/src/com/example/android/xmladapters/ImageDownloader.java
index 6e408cca8..fa42ed120 100644
--- a/samples/XmlAdapters/src/com/example/android/xmladapters/ImageDownloader.java
+++ b/samples/XmlAdapters/src/com/example/android/xmladapters/ImageDownloader.java
@@ -131,7 +131,7 @@ public class ImageDownloader {
* Kept private at the moment as its interest is not clear.
*/
private void forceDownload(String url, ImageView imageView, String cookie) {
- // State sanity: url is guaranteed to never be null in DownloadedDrawable and cache keys.
+ // State validity: url is guaranteed to never be null in DownloadedDrawable and cache keys.
if (url == null) {
imageView.setImageDrawable(null);
return;
diff --git a/samples/XmlAdapters/src/com/example/android/xmladapters/XmlDocumentProvider.java b/samples/XmlAdapters/src/com/example/android/xmladapters/XmlDocumentProvider.java
index bf3b7eac4..9f140b5f2 100644
--- a/samples/XmlAdapters/src/com/example/android/xmladapters/XmlDocumentProvider.java
+++ b/samples/XmlAdapters/src/com/example/android/xmladapters/XmlDocumentProvider.java
@@ -103,7 +103,7 @@ import java.util.regex.Pattern;
* <pre class="prettyprint">
* &lt;library&gt;
* &lt;book id="EH94"&gt;
- * &lt;title&gt;The Old Man and the Sea&lt;/title&gt;
+ * &lt;title&gt;The Old Person and the Sea&lt;/title&gt;
* &lt;author&gt;Ernest Hemingway&lt;/author&gt;
* &lt;/book&gt;
* &lt;book id="XX10"&gt;
diff --git a/samples/apkcachetest/Android.bp b/samples/apkcachetest/Android.bp
index 67ffeb9e6..6d1bfaa8d 100644
--- a/samples/apkcachetest/Android.bp
+++ b/samples/apkcachetest/Android.bp
@@ -14,6 +14,10 @@
// limitations under the License.
//
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_test {
name: "ApkCacheTest",
srcs: ["src/**/*.java"],
diff --git a/samples/browseable/ActionBarCompat-ListPopupMenu/src/com.example.android.actionbarcompat.listpopupmenu/Cheeses.java b/samples/browseable/ActionBarCompat-ListPopupMenu/src/com.example.android.actionbarcompat.listpopupmenu/Cheeses.java
index 5ef11616b..8830b48da 100644
--- a/samples/browseable/ActionBarCompat-ListPopupMenu/src/com.example.android.actionbarcompat.listpopupmenu/Cheeses.java
+++ b/samples/browseable/ActionBarCompat-ListPopupMenu/src/com.example.android.actionbarcompat.listpopupmenu/Cheeses.java
@@ -17,7 +17,7 @@
package com.example.android.actionbarcompat.listpopupmenu;
/**
- * Dummy data.
+ * Placeholder data.
*/
public class Cheeses {
public static final String[] CHEESES = {
diff --git a/samples/browseable/ActionBarCompat-ListPopupMenu/src/com.example.android.actionbarcompat.listpopupmenu/PopupListFragment.java b/samples/browseable/ActionBarCompat-ListPopupMenu/src/com.example.android.actionbarcompat.listpopupmenu/PopupListFragment.java
index 754bf224e..862763b55 100644
--- a/samples/browseable/ActionBarCompat-ListPopupMenu/src/com.example.android.actionbarcompat.listpopupmenu/PopupListFragment.java
+++ b/samples/browseable/ActionBarCompat-ListPopupMenu/src/com.example.android.actionbarcompat.listpopupmenu/PopupListFragment.java
@@ -38,7 +38,7 @@ public class PopupListFragment extends ListFragment implements View.OnClickListe
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
- // We want to allow modifications to the list so copy the dummy data array into an ArrayList
+ // We want to allow modifications to the list so copy the placeholder data array into an ArrayList
ArrayList<String> items = new ArrayList<String>();
for (int i = 0, z = Cheeses.CHEESES.length ; i < z ; i++) {
items.add(Cheeses.CHEESES[i]);
diff --git a/samples/browseable/CardEmulation/src/com.example.android.cardemulation/CardService.java b/samples/browseable/CardEmulation/src/com.example.android.cardemulation/CardService.java
index a409d28f4..123785ed3 100644
--- a/samples/browseable/CardEmulation/src/com.example.android.cardemulation/CardService.java
+++ b/samples/browseable/CardEmulation/src/com.example.android.cardemulation/CardService.java
@@ -65,7 +65,7 @@ public class CardService extends HostApduService {
* This method will be called when a command APDU has been received from a remote device. A
* response APDU can be provided directly by returning a byte-array in this method. In general
* response APDUs must be sent as quickly as possible, given the fact that the user is likely
- * holding his device over an NFC reader when this method is called.
+ * holding their device over an NFC reader when this method is called.
*
* <p class="note">If there are multiple services that have registered for the same AIDs in
* their meta-data entry, you will only get called if the user has explicitly selected your
diff --git a/samples/browseable/CustomChoiceList/src/com.example.android.customchoicelist/Cheeses.java b/samples/browseable/CustomChoiceList/src/com.example.android.customchoicelist/Cheeses.java
index 871ae2929..21b3f6bd0 100644
--- a/samples/browseable/CustomChoiceList/src/com.example.android.customchoicelist/Cheeses.java
+++ b/samples/browseable/CustomChoiceList/src/com.example.android.customchoicelist/Cheeses.java
@@ -17,7 +17,7 @@
package com.example.android.customchoicelist;
/**
- * Dummy data.
+ * Placeholder data.
*/
public class Cheeses {
public static final String[] CHEESES = {
diff --git a/samples/browseable/DirectShare/src/com.example.android.directshare/Contact.java b/samples/browseable/DirectShare/src/com.example.android.directshare/Contact.java
index 4a1665e36..9e2347687 100644
--- a/samples/browseable/DirectShare/src/com.example.android.directshare/Contact.java
+++ b/samples/browseable/DirectShare/src/com.example.android.directshare/Contact.java
@@ -17,13 +17,13 @@
package com.example.android.directshare;
/**
- * Provides the list of dummy contacts. This sample implements this as constants, but real-life apps
+ * Provides the list of placeholder contacts. This sample implements this as constants, but real-life apps
* should use a database and such.
*/
public class Contact {
/**
- * The list of dummy contacts.
+ * The list of placeholder contacts.
*/
public static final Contact[] CONTACTS = {
new Contact("Tereasa"),
diff --git a/samples/browseable/DirectShare/src/com.example.android.directshare/SendMessageActivity.java b/samples/browseable/DirectShare/src/com.example.android.directshare/SendMessageActivity.java
index d291172e6..39826d4f9 100644
--- a/samples/browseable/DirectShare/src/com.example.android.directshare/SendMessageActivity.java
+++ b/samples/browseable/DirectShare/src/com.example.android.directshare/SendMessageActivity.java
@@ -141,7 +141,7 @@ public class SendMessageActivity extends Activity {
};
/**
- * Pretends to send the text to the contact. This only shows a dummy message.
+ * Pretends to send the text to the contact. This only shows a placeholder message.
*/
private void send() {
Toast.makeText(this,
diff --git a/samples/browseable/HorizontalPaging/src/com.example.android.horizontalpaging/MainActivity.java b/samples/browseable/HorizontalPaging/src/com.example.android.horizontalpaging/MainActivity.java
index fdd4495f3..3a12ba322 100644
--- a/samples/browseable/HorizontalPaging/src/com.example.android.horizontalpaging/MainActivity.java
+++ b/samples/browseable/HorizontalPaging/src/com.example.android.horizontalpaging/MainActivity.java
@@ -193,7 +193,7 @@ public class MainActivity extends FragmentActivity implements ActionBar.TabListe
}
/**
- * A dummy fragment representing a section of the app, but that simply displays dummy text.
+ * A placeholder fragment representing a section of the app, but that simply displays placeholder text.
* This would be replaced with your application's content.
*/
public static class DummySectionFragment extends Fragment {
diff --git a/samples/browseable/JumpingJack/src/com.example.android.wearable.jumpingjack/MainActivity.java b/samples/browseable/JumpingJack/src/com.example.android.wearable.jumpingjack/MainActivity.java
index f1589c73d..9ee13efb8 100644
--- a/samples/browseable/JumpingJack/src/com.example.android.wearable.jumpingjack/MainActivity.java
+++ b/samples/browseable/JumpingJack/src/com.example.android.wearable.jumpingjack/MainActivity.java
@@ -59,7 +59,7 @@ public class MainActivity extends Activity
private static final long TIME_THRESHOLD_NS = 2000000000; // in nanoseconds (= 2sec)
/**
- * Earth gravity is around 9.8 m/s^2 but user may not completely direct his/her hand vertical
+ * Earth gravity is around 9.8 m/s^2 but user may not completely direct their hand vertical
* during the exercise so we leave some room. Basically if the x-component of gravity, as
* measured by the Gravity sensor, changes with a variation (delta) > GRAVITY_THRESHOLD,
* we consider that a successful count.
diff --git a/samples/browseable/RuntimePermissions/src/com.example.android.system.runtimepermissions/MainActivity.java b/samples/browseable/RuntimePermissions/src/com.example.android.system.runtimepermissions/MainActivity.java
index 7abc538cf..f6b7da439 100644
--- a/samples/browseable/RuntimePermissions/src/com.example.android.system.runtimepermissions/MainActivity.java
+++ b/samples/browseable/RuntimePermissions/src/com.example.android.system.runtimepermissions/MainActivity.java
@@ -49,7 +49,7 @@ import common.activities.SampleActivityBase;
* Contacts permissions (({@link android.Manifest.permission#READ_CONTACTS} and ({@link
* android.Manifest.permission#WRITE_CONTACTS})) are requested when the 'Show and Add Contacts'
* button is
- * clicked to display the first contact in the contacts database and to add a dummy contact
+ * clicked to display the first contact in the contacts database and to add a placeholder contact
* directly to it. Permissions are verified and requested through compat helpers in the support v4
* library, in this Activity using {@link ActivityCompat}.
* First, permissions are checked if they have already been granted through {@link
diff --git a/samples/browseable/RuntimePermissions/src/com.example.android.system.runtimepermissions/contacts/ContactsFragment.java b/samples/browseable/RuntimePermissions/src/com.example.android.system.runtimepermissions/contacts/ContactsFragment.java
index 19f54fb9a..f69251cbb 100644
--- a/samples/browseable/RuntimePermissions/src/com.example.android.system.runtimepermissions/contacts/ContactsFragment.java
+++ b/samples/browseable/RuntimePermissions/src/com.example.android.system.runtimepermissions/contacts/ContactsFragment.java
@@ -40,7 +40,7 @@ import android.widget.TextView;
import java.util.ArrayList;
/**
- * Displays the first contact stored on the device and contains an option to add a dummy contact.
+ * Displays the first contact stored on the device and contains an option to add a placeholder contact.
* <p>
* This Fragment is only used to illustrate that access to the Contacts ContentProvider API has
* been granted (or denied) as part of the runtime permissions model. It is not relevant for the
@@ -85,7 +85,7 @@ public class ContactsFragment extends Fragment implements LoaderManager.LoaderCa
mMessageText = (TextView) rootView.findViewById(R.id.contact_message);
- // Register a listener to add a dummy contact when a button is clicked.
+ // Register a listener to add a placeholder contact when a button is clicked.
Button button = (Button) rootView.findViewById(R.id.contact_add);
button.setOnClickListener(new View.OnClickListener() {
@Override
diff --git a/samples/browseable/SpeedTracker/Application/src/com.example.android.wearable.speedtracker/PhoneMainActivity.java b/samples/browseable/SpeedTracker/Application/src/com.example.android.wearable.speedtracker/PhoneMainActivity.java
index b915d26d0..be0cee424 100644
--- a/samples/browseable/SpeedTracker/Application/src/com.example.android.wearable.speedtracker/PhoneMainActivity.java
+++ b/samples/browseable/SpeedTracker/Application/src/com.example.android.wearable.speedtracker/PhoneMainActivity.java
@@ -42,7 +42,7 @@ import java.util.List;
/**
* The main activity for the handset application. When a watch device reconnects to the handset
- * app, the collected GPS data on the watch, if any, is synced up and user can see his/her track on
+ * app, the collected GPS data on the watch, if any, is synced up and user can see their track on
* a map. This data is then saved into an internal database and the corresponding data items are
* deleted.
*/
diff --git a/samples/browseable/StorageProvider/src/com.example.android.storageprovider/MyCloudProvider.java b/samples/browseable/StorageProvider/src/com.example.android.storageprovider/MyCloudProvider.java
index 9f9249a33..d76bd6754 100644
--- a/samples/browseable/StorageProvider/src/com.example.android.storageprovider/MyCloudProvider.java
+++ b/samples/browseable/StorageProvider/src/com.example.android.storageprovider/MyCloudProvider.java
@@ -545,7 +545,7 @@ public class MyCloudProvider extends DocumentsProvider {
/**
* Preload sample files packaged in the apk into the internal storage directory. This is a
- * dummy function specific to this demo. The MyCloud mock cloud service doesn't actually
+ * placeholder function specific to this demo. The MyCloud mock cloud service doesn't actually
* have a backend, so it simulates by reading content from the device's internal storage.
*/
private void writeDummyFilesToStorage() {
@@ -570,7 +570,7 @@ public class MyCloudProvider extends DocumentsProvider {
}
/**
- * Write a file to internal storage. Used to set up our dummy "cloud server".
+ * Write a file to internal storage. Used to set up our placeholder "cloud server".
*
* @param resId the resource ID of the file to write to internal storage
* @param extension the file extension (ex. .png, .mp3)
@@ -608,7 +608,7 @@ public class MyCloudProvider extends DocumentsProvider {
}
/**
- * Dummy function to determine whether the user is logged in.
+ * Placeholder function to determine whether the user is logged in.
*/
private boolean isUserLoggedIn() {
final SharedPreferences sharedPreferences =
diff --git a/samples/browseable/StorageProvider/src/com.example.android.storageprovider/StorageProviderFragment.java b/samples/browseable/StorageProvider/src/com.example.android.storageprovider/StorageProviderFragment.java
index 80d0296d5..ace024297 100644
--- a/samples/browseable/StorageProvider/src/com.example.android.storageprovider/StorageProviderFragment.java
+++ b/samples/browseable/StorageProvider/src/com.example.android.storageprovider/StorageProviderFragment.java
@@ -70,7 +70,7 @@ public class StorageProviderFragment extends Fragment {
}
/**
- * Dummy function to change the user's authorization status.
+ * Placeholder function to change the user's authorization status.
*/
private void toggleLogin() {
// Replace this with your standard method of authentication to determine if your app
@@ -81,7 +81,7 @@ public class StorageProviderFragment extends Fragment {
}
/**
- * Dummy function to save whether the user is logged in.
+ * Placeholder function to save whether the user is logged in.
*/
private void writeLoginValue(boolean loggedIn) {
final SharedPreferences sharedPreferences =
@@ -91,7 +91,7 @@ public class StorageProviderFragment extends Fragment {
}
/**
- * Dummy function to determine whether the user is logged in.
+ * Placeholder function to determine whether the user is logged in.
*/
private boolean readLoginValue() {
final SharedPreferences sharedPreferences =
diff --git a/samples/browseable/SwipeRefreshLayoutBasic/src/com.example.android.common/dummydata/Cheeses.java b/samples/browseable/SwipeRefreshLayoutBasic/src/com.example.android.common/dummydata/Cheeses.java
index 783735ce3..3b7fcefea 100644
--- a/samples/browseable/SwipeRefreshLayoutBasic/src/com.example.android.common/dummydata/Cheeses.java
+++ b/samples/browseable/SwipeRefreshLayoutBasic/src/com.example.android.common/dummydata/Cheeses.java
@@ -21,7 +21,7 @@ import java.util.HashSet;
import java.util.Random;
/**
- * Dummy data.
+ * Placeholder data.
*/
public class Cheeses {
static final String[] CHEESES = {
diff --git a/samples/browseable/SwipeRefreshLayoutBasic/src/com.example.android.swiperefreshlayoutbasic/SwipeRefreshLayoutBasicFragment.java b/samples/browseable/SwipeRefreshLayoutBasic/src/com.example.android.swiperefreshlayoutbasic/SwipeRefreshLayoutBasicFragment.java
index 13b22f5ca..69133588a 100644
--- a/samples/browseable/SwipeRefreshLayoutBasic/src/com.example.android.swiperefreshlayoutbasic/SwipeRefreshLayoutBasicFragment.java
+++ b/samples/browseable/SwipeRefreshLayoutBasic/src/com.example.android.swiperefreshlayoutbasic/SwipeRefreshLayoutBasicFragment.java
@@ -203,7 +203,7 @@ public class SwipeRefreshLayoutBasicFragment extends Fragment {
// END_INCLUDE (refresh_complete)
/**
- * Dummy {@link AsyncTask} which simulates a long running task to fetch new cheeses.
+ * Placeholder {@link AsyncTask} which simulates a long running task to fetch new cheeses.
*/
private class DummyBackgroundTask extends AsyncTask<Void, Void, List<String>> {
diff --git a/samples/browseable/SwipeRefreshListFragment/src/com.example.android.common/dummydata/Cheeses.java b/samples/browseable/SwipeRefreshListFragment/src/com.example.android.common/dummydata/Cheeses.java
index 783735ce3..3b7fcefea 100644
--- a/samples/browseable/SwipeRefreshListFragment/src/com.example.android.common/dummydata/Cheeses.java
+++ b/samples/browseable/SwipeRefreshListFragment/src/com.example.android.common/dummydata/Cheeses.java
@@ -21,7 +21,7 @@ import java.util.HashSet;
import java.util.Random;
/**
- * Dummy data.
+ * Placeholder data.
*/
public class Cheeses {
static final String[] CHEESES = {
diff --git a/samples/browseable/SwipeRefreshListFragment/src/com.example.android.swiperefreshlistfragment/SwipeRefreshListFragmentFragment.java b/samples/browseable/SwipeRefreshListFragment/src/com.example.android.swiperefreshlistfragment/SwipeRefreshListFragmentFragment.java
index 1147ea819..900ed663c 100644
--- a/samples/browseable/SwipeRefreshListFragment/src/com.example.android.swiperefreshlistfragment/SwipeRefreshListFragmentFragment.java
+++ b/samples/browseable/SwipeRefreshListFragment/src/com.example.android.swiperefreshlistfragment/SwipeRefreshListFragmentFragment.java
@@ -200,7 +200,7 @@ public class SwipeRefreshListFragmentFragment extends SwipeRefreshListFragment {
// END_INCLUDE (refresh_complete)
/**
- * Dummy {@link AsyncTask} which simulates a long running task to fetch new cheeses.
+ * Placeholder {@link AsyncTask} which simulates a long running task to fetch new cheeses.
*/
private class DummyBackgroundTask extends AsyncTask<Void, Void, List<String>> {
diff --git a/samples/browseable/SwipeRefreshMultipleViews/src/com.example.android.common/dummydata/Cheeses.java b/samples/browseable/SwipeRefreshMultipleViews/src/com.example.android.common/dummydata/Cheeses.java
index 783735ce3..3b7fcefea 100644
--- a/samples/browseable/SwipeRefreshMultipleViews/src/com.example.android.common/dummydata/Cheeses.java
+++ b/samples/browseable/SwipeRefreshMultipleViews/src/com.example.android.common/dummydata/Cheeses.java
@@ -21,7 +21,7 @@ import java.util.HashSet;
import java.util.Random;
/**
- * Dummy data.
+ * Placeholder data.
*/
public class Cheeses {
static final String[] CHEESES = {
diff --git a/samples/browseable/SwipeRefreshMultipleViews/src/com.example.android.swiperefreshmultipleviews/SwipeRefreshMultipleViewsFragment.java b/samples/browseable/SwipeRefreshMultipleViews/src/com.example.android.swiperefreshmultipleviews/SwipeRefreshMultipleViewsFragment.java
index 7bb29c847..d470d3760 100644
--- a/samples/browseable/SwipeRefreshMultipleViews/src/com.example.android.swiperefreshmultipleviews/SwipeRefreshMultipleViewsFragment.java
+++ b/samples/browseable/SwipeRefreshMultipleViews/src/com.example.android.swiperefreshmultipleviews/SwipeRefreshMultipleViewsFragment.java
@@ -220,7 +220,7 @@ public class SwipeRefreshMultipleViewsFragment extends Fragment {
// END_INCLUDE (refresh_complete)
/**
- * Dummy {@link AsyncTask} which simulates a long running task to fetch new cheeses.
+ * Placeholder {@link AsyncTask} which simulates a long running task to fetch new cheeses.
*/
private class DummyBackgroundTask extends AsyncTask<Void, Void, List<String>> {
diff --git a/samples/browseable/WearSpeakerSample/src/com.example.android.wearable.speaker/MainActivity.java b/samples/browseable/WearSpeakerSample/src/com.example.android.wearable.speaker/MainActivity.java
index e7a4870fe..49511dfb8 100644
--- a/samples/browseable/WearSpeakerSample/src/com.example.android.wearable.speaker/MainActivity.java
+++ b/samples/browseable/WearSpeakerSample/src/com.example.android.wearable.speaker/MainActivity.java
@@ -202,7 +202,7 @@ public class MainActivity extends WearableActivity implements UIAnimation.UIStat
start();
} else {
// Permission has been denied before. At this point we should show a dialog to
- // user and explain why this permission is needed and direct him to go to the
+ // user and explain why this permission is needed and direct them to go to the
// Permissions settings for the app in the System settings. For this sample, we
// simply exit to get to the important part.
Toast.makeText(this, R.string.exiting_for_permissions, Toast.LENGTH_LONG).show();
diff --git a/samples/browseable/XYZTouristAttractions/Wearable/src/com.example.android.xyztouristattractions/service/UtilityService.java b/samples/browseable/XYZTouristAttractions/Wearable/src/com.example.android.xyztouristattractions/service/UtilityService.java
index 8a4fea56a..1a30dd5e5 100644
--- a/samples/browseable/XYZTouristAttractions/Wearable/src/com.example.android.xyztouristattractions/service/UtilityService.java
+++ b/samples/browseable/XYZTouristAttractions/Wearable/src/com.example.android.xyztouristattractions/service/UtilityService.java
@@ -67,7 +67,7 @@ public class UtilityService extends IntentService {
}
/**
- * Trigger a message that asks the master device to start an activity.
+ * Trigger a message that asks the manager device to start an activity.
*
* @param context the context
* @param path the path that will be sent via the wearable message API
diff --git a/samples/devbytes/animation/ListViewDraggingAnimation/src/com/example/android/listviewdragginganimation/DynamicListView.java b/samples/devbytes/animation/ListViewDraggingAnimation/src/com/example/android/listviewdragginganimation/DynamicListView.java
index 580fe64b6..3464f6240 100644
--- a/samples/devbytes/animation/ListViewDraggingAnimation/src/com/example/android/listviewdragginganimation/DynamicListView.java
+++ b/samples/devbytes/animation/ListViewDraggingAnimation/src/com/example/android/listviewdragginganimation/DynamicListView.java
@@ -450,7 +450,7 @@ public class DynamicListView extends ListView {
/**
* This TypeEvaluator is used to animate the BitmapDrawable back to its
- * final location when the user lifts his finger by modifying the
+ * final location when the user lifts their finger by modifying the
* BitmapDrawable's bounds.
*/
private final static TypeEvaluator<Rect> sBoundEvaluator = new TypeEvaluator<Rect>() {
diff --git a/samples/devbytes/animation/ToonGame/src/com/example/android/toongame/ToonGame.java b/samples/devbytes/animation/ToonGame/src/com/example/android/toongame/ToonGame.java
index b03eeeb17..1c4eddcb5 100644
--- a/samples/devbytes/animation/ToonGame/src/com/example/android/toongame/ToonGame.java
+++ b/samples/devbytes/animation/ToonGame/src/com/example/android/toongame/ToonGame.java
@@ -42,7 +42,7 @@ import android.widget.Button;
* interactive, fun, and engaging experience.
*
* This main activity launches a sub-activity when the Play button is clicked. The
- * main action in this master activity is bouncing the Play button in, randomly
+ * main action in this manager activity is bouncing the Play button in, randomly
* bouncing it while waiting for input, and animating its press and click behaviors
* when the user interacts with it.
*
diff --git a/samples/devbytes/telephony/SmsSampleProject/app/src/main/java/com/example/android/smssample/MainActivity.java b/samples/devbytes/telephony/SmsSampleProject/app/src/main/java/com/example/android/smssample/MainActivity.java
index 832118160..c188b24b7 100644
--- a/samples/devbytes/telephony/SmsSampleProject/app/src/main/java/com/example/android/smssample/MainActivity.java
+++ b/samples/devbytes/telephony/SmsSampleProject/app/src/main/java/com/example/android/smssample/MainActivity.java
@@ -101,7 +101,7 @@ public class MainActivity extends FragmentActivity implements LoaderCallbacks<Cu
}
/**
- * Dummy sendSms method, would need the "to" address to actually send a message :)
+ * Placeholder sendSms method, would need the "to" address to actually send a message :)
*/
private void sendSms(String smsText) {
if (!TextUtils.isEmpty(smsText)) {
diff --git a/samples/training/AnimationsDemo/res/layout/excerpt_content.xml b/samples/training/AnimationsDemo/res/layout/excerpt_content.xml
index 0237f2bad..40deddfee 100644
--- a/samples/training/AnimationsDemo/res/layout/excerpt_content.xml
+++ b/samples/training/AnimationsDemo/res/layout/excerpt_content.xml
@@ -19,7 +19,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
- <!-- Dummy content. -->
+ <!-- Placeholder content. -->
<TextView style="?android:textAppearanceMedium"
android:lineSpacingMultiplier="1.2"
android:layout_width="match_parent"
diff --git a/samples/training/AnimationsDemo/res/layout/fragment_screen_slide_page.xml b/samples/training/AnimationsDemo/res/layout/fragment_screen_slide_page.xml
index 8aa472b87..c9bffe094 100644
--- a/samples/training/AnimationsDemo/res/layout/fragment_screen_slide_page.xml
+++ b/samples/training/AnimationsDemo/res/layout/fragment_screen_slide_page.xml
@@ -19,7 +19,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
- <!-- Dummy content. -->
+ <!-- Placeholder content. -->
<LinearLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
diff --git a/samples/training/AnimationsDemo/res/layout/list_item_example.xml b/samples/training/AnimationsDemo/res/layout/list_item_example.xml
index 3822932e3..53cf49a26 100644
--- a/samples/training/AnimationsDemo/res/layout/list_item_example.xml
+++ b/samples/training/AnimationsDemo/res/layout/list_item_example.xml
@@ -23,7 +23,7 @@
android:dividerPadding="8dp"
android:gravity="center">
- <!-- Dummy text view that will display the name of a random country. -->
+ <!-- Placeholder text view that will display the name of a random country. -->
<TextView android:id="@android:id/text1"
style="?android:textAppearanceMedium"
android:layout_width="0dp"
diff --git a/samples/training/AnimationsDemo/src/com/example/android/animationsdemo/ScreenSlidePageFragment.java b/samples/training/AnimationsDemo/src/com/example/android/animationsdemo/ScreenSlidePageFragment.java
index 887c926bd..ec7648440 100644
--- a/samples/training/AnimationsDemo/src/com/example/android/animationsdemo/ScreenSlidePageFragment.java
+++ b/samples/training/AnimationsDemo/src/com/example/android/animationsdemo/ScreenSlidePageFragment.java
@@ -24,8 +24,8 @@ import android.view.ViewGroup;
import android.widget.TextView;
/**
- * A fragment representing a single step in a wizard. The fragment shows a dummy title indicating
- * the page number, along with some dummy text.
+ * A fragment representing a single step in a wizard. The fragment shows a placeholder title indicating
+ * the page number, along with some placeholder text.
*
* <p>This class is used by the {@link CardFlipActivity} and {@link
* ScreenSlideActivity} samples.</p>
diff --git a/samples/training/EffectiveNavigation/src/com/example/android/effectivenavigation/CollectionDemoActivity.java b/samples/training/EffectiveNavigation/src/com/example/android/effectivenavigation/CollectionDemoActivity.java
index 641d1a493..b5c4c6df8 100755
--- a/samples/training/EffectiveNavigation/src/com/example/android/effectivenavigation/CollectionDemoActivity.java
+++ b/samples/training/EffectiveNavigation/src/com/example/android/effectivenavigation/CollectionDemoActivity.java
@@ -129,7 +129,7 @@ public class CollectionDemoActivity extends FragmentActivity {
}
/**
- * A dummy fragment representing a section of the app, but that simply displays dummy text.
+ * A placeholder fragment representing a section of the app, but that simply displays placeholder text.
*/
public static class DemoObjectFragment extends Fragment {
diff --git a/samples/training/EffectiveNavigation/src/com/example/android/effectivenavigation/MainActivity.java b/samples/training/EffectiveNavigation/src/com/example/android/effectivenavigation/MainActivity.java
index a560ee4e4..023a1fc68 100755
--- a/samples/training/EffectiveNavigation/src/com/example/android/effectivenavigation/MainActivity.java
+++ b/samples/training/EffectiveNavigation/src/com/example/android/effectivenavigation/MainActivity.java
@@ -123,7 +123,7 @@ public class MainActivity extends FragmentActivity implements ActionBar.TabListe
return new LaunchpadSectionFragment();
default:
- // The other sections of the app are dummy placeholders.
+ // The other sections of the app are placeholder placeholders.
Fragment fragment = new DummySectionFragment();
Bundle args = new Bundle();
args.putInt(DummySectionFragment.ARG_SECTION_NUMBER, i + 1);
@@ -185,7 +185,7 @@ public class MainActivity extends FragmentActivity implements ActionBar.TabListe
}
/**
- * A dummy fragment representing a section of the app, but that simply displays dummy text.
+ * A placeholder fragment representing a section of the app, but that simply displays placeholder text.
*/
public static class DummySectionFragment extends Fragment {
diff --git a/samples/training/NsdChat/Android.bp b/samples/training/NsdChat/Android.bp
index 574553c66..dc1f127af 100644
--- a/samples/training/NsdChat/Android.bp
+++ b/samples/training/NsdChat/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
android_app {
name: "NsdChat",
// Only compile source java files in this apk.
diff --git a/samples/training/TabCompat/src/com/example/android/tabcompat/lib/TabHelperEclair.java b/samples/training/TabCompat/src/com/example/android/tabcompat/lib/TabHelperEclair.java
index fc8e9cdda..fafbc71ea 100644
--- a/samples/training/TabCompat/src/com/example/android/tabcompat/lib/TabHelperEclair.java
+++ b/samples/training/TabCompat/src/com/example/android/tabcompat/lib/TabHelperEclair.java
@@ -35,7 +35,7 @@ import java.util.HashMap;
* It implements a generic mechanism for associating fragments with the tabs in a tab host. It
* relies on a trick: Normally a tab host has a simple API for supplying a View or Intent that each
* tab will show. This is not sufficient for switching between fragments. So instead we make the
- * content part of the tab host 0dp high (it is not shown) and this supplies its own dummy view to
+ * content part of the tab host 0dp high (it is not shown) and this supplies its own placeholder view to
* show as the tab content. It listens to changes in tabs, then passes the event back to the tab's
* callback interface so the activity can take care of switching to the correct fragment.
*/
diff --git a/scripts/Android.bp b/scripts/Android.bp
index c0f62015c..aad32ca29 100644
--- a/scripts/Android.bp
+++ b/scripts/Android.bp
@@ -12,19 +12,15 @@
// See the License for the specific language governing permissions and
// limitations under the License.
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
python_library_host {
name: "python-symbol",
srcs: [
"symbol.py",
],
- version: {
- py2: {
- enabled: true,
- },
- py3: {
- enabled: true,
- },
- },
}
python_test_host {
@@ -47,3 +43,25 @@ python_test_host {
test_config: "symbol-tests.xml",
test_suites: ["general-tests"],
}
+
+python_test_host {
+ name: "python-stack_core_test",
+ main: "stack_core.py",
+ srcs: [
+ "example_crashes.py",
+ "stack_core.py",
+ ],
+ libs: ["python-symbol"],
+ test_suites: ["general-tests"],
+}
+
+python_test_host {
+ name: "add3prf_test",
+ srcs: [
+ "add3prf.py",
+ "add3prf_test.py",
+ ],
+ libs: [
+ "pyfakefs",
+ ]
+}
diff --git a/scripts/OWNERS b/scripts/OWNERS
index c1d4c3722..9f9a2ae20 100644
--- a/scripts/OWNERS
+++ b/scripts/OWNERS
@@ -3,5 +3,5 @@ danalbert@google.com
enh@google.com
jmgao@google.com
rprichard@google.com
-per-file cargo2android.py = chh@google.com,srhines@google.com
+per-file add3prf.py,add3prf_test.py,cargo2android.py,get_rust_pkg.py,update_crate_tests.py = ivanlozano@google.com,jeffv@google.com,jgalenson@google.com,mmaurer@google.com,srhines@google.com,tweek@google.com
per-file codegen = eugenesusla@google.com
diff --git a/scripts/acov b/scripts/acov
index a884ca238..0ad983688 100755
--- a/scripts/acov
+++ b/scripts/acov
@@ -19,10 +19,13 @@
#
# 1. sudo apt-get install lcov
# 2. Build application/library with coverage information.
-# 3. Push the new binaries to the device.
-# 4. Run tests with the additional environment variables:
-# * GCOV_PREFIX=/data/local/tmp/gcov
-# * GCOV_PREFIX_STRIP=`echo $(ANDROID_BUILD_TOP) | grep -o / | wc -l`
+# * make NATIVE_COVERAGE=true NATIVE_COVERAGE_PATHS='*'
+# 3. Push the new binaries to the device with adb sync.
+# (Optional): Run `acov --clean-device`. This will reset coverage for everything
+# on the device.
+# 4. Run tests.
+# (Optional): Run `acov --flush`. This will dump coverage from all processes
+# running on the device.
# 5. Run `acov`.
#
# acov will pull all coverage information from the device, push it to the right
@@ -30,21 +33,61 @@
# it in your browser).
#
-if [ "$1" = "--clean" ]; then
- find $ANDROID_HOST_OUT \( -name '*.gcda' -o -name '*.gcno' \) -delete
- find $ANDROID_PRODUCT_OUT \( -name '*.gcda' -o -name '*.gcno' \) -delete
+if [ "$CLANG_COVERAGE" == "true" ]; then
+ echo "CLANG_COVERAGE is set. Use development/scripts/acov-llvm.py instead."
exit 0
fi
-if [ "$1" = "--prep" ]; then
- if [ -d "$ANDROID_HOST_OUT" ]; then
- find $ANDROID_HOST_OUT -name '*.gcda' -delete
+ANDROID_OUT=${OUT_DIR:-out}
+FLUSH_SLEEP=${FLUSH_SLEEP:-60}
+
+function clearGcdaFiles() {
+ if [ -d "$ANDROID_OUT" ]; then
+ find $ANDROID_OUT -name '*.gcda' -delete
fi
+}
- if [ -d "$ANDROID_PRODUCT_OUT" ]; then
- find $ANDROID_PRODUCT_OUT -name '*.gcda' -delete
+function clearGcnoFiles() {
+ if [ -d "$ANDROID_OUT" ]; then
+ find $ANDROID_OUT -name '*.gcno' -delete
fi
+}
+if [ "$1" = "--clean" ]; then
+ echo "Clearing gcda and gcno files from the local build."
+ clearGcdaFiles
+ clearGcnoFiles
+ exit 0
+fi
+
+if [ "$1" = "--prep" ]; then
+ echo "Clearing gcda files from the local build."
+ clearGcdaFiles
+ exit 0
+fi
+
+adb root
+
+if [ "$1" = "--clean-device" ]; then
+ echo "Resetting coverage on the device..."
+ adb shell kill -37 -1
+ echo "Waiting $FLUSH_SLEEP seconds for coverage to be written..."
+ sleep $FLUSH_SLEEP
+ adb shell rm -rf /data/misc/trace/*
+ exit 0
+fi
+
+if [ "$1" = "--flush" ]; then
+ shift
+ if [ -z $@ ]; then
+ echo "Flushing coverage for all processes on the device..."
+ adb shell kill -37 -1
+ else
+ echo "Flushing coverage for [$@] on the device..."
+ adb shell kill -37 $(adb shell pidof $@)
+ fi
+ echo "Waiting $FLUSH_SLEEP seconds for coverage to be written..."
+ sleep $FLUSH_SLEEP
exit 0
fi
@@ -54,24 +97,24 @@ if [ $? -ne 0 ]; then
sudo apt-get install lcov
fi
-HOST=false
-ANDROID_OUT=$ANDROID_PRODUCT_OUT
-EXTRA_ARGS="$@"
-if [ "$1" = "--host" ]; then
- HOST=true
- ANDROID_OUT=$ANDROID_HOST_OUT
- EXTRA_ARGS="--gcov-tool=/usr/bin/gcov-4.6 ${@:2}"
-fi
-
cd $ANDROID_BUILD_TOP
-FILE=cov.info
DIR=$(mktemp -d covreport-XXXXXX)
-if [ "$HOST" = "false" ]; then
- adb pull /data/local/tmp/gcov
-fi
+# Build a coverage report for each euid that has reported coverage.
+COVERAGE_REPORTS=
+for USER_ID in $(adb shell ls /data/misc/trace)
+do
+ FILE=cov-$USER_ID.info
+ adb shell tar -czf - -C /data/misc/trace/$USER_ID/proc/self/cwd $ANDROID_OUT | tar zxvf -
+
+ lcov -c -d $ANDROID_OUT -o $DIR/$FILE --gcov-tool=llvm-gcov $@
+ COVERAGE_REPORTS="-a $DIR/$FILE $COVERAGE_REPORTS"
+
+ clearGcdaFiles
+done
-lcov -c -d $ANDROID_OUT -o $DIR/$FILE $EXTRA_ARGS
+FILE=merged.info
+lcov $COVERAGE_REPORTS -o $DIR/$FILE
echo "Generating coverage report at $DIR"
genhtml -q -o $DIR $DIR/$FILE
xdg-open $DIR/index.html >/dev/null
diff --git a/scripts/acov-llvm.py b/scripts/acov-llvm.py
new file mode 100755
index 000000000..063911f1a
--- /dev/null
+++ b/scripts/acov-llvm.py
@@ -0,0 +1,252 @@
+#!/usr/bin/env python3
+#
+# Copyright (C) 2021 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# acov-llvm.py is a tool for gathering coverage information from a device and
+# generating an LLVM coverage report from that information. To use:
+#
+# This script would work only when the device image was built with the following
+# build variables:
+# CLANG_COVERAGE=true NATIVE_COVERAGE_PATHS="<list-of-paths>"
+#
+# 1. [optional] Reset coverage information on the device
+# $ acov-llvm.py clean-device
+#
+# 2. Run tests
+#
+# 3. Flush coverage
+# from select daemons and system processes on the device
+# $ acov-llvm.py flush [list of process names]
+# or from all processes on the device:
+# $ acov-llvm.py flush
+#
+# 4. Pull coverage from device and generate coverage report
+# $ acov-llvm.py report -s <one-or-more-source-paths-in-$ANDROID_BUILD_TOP \
+# -b <one-or-more-binaries-in-$OUT> \
+# E.g.:
+# acov-llvm.py report \
+# -s bionic \
+# -b \
+# $OUT/symbols/apex/com.android.runtime/lib/bionic/libc.so \
+# $OUT/symbols/apex/com.android.runtime/lib/bionic/libm.so
+
+import argparse
+import logging
+import os
+import re
+import subprocess
+import time
+import tempfile
+
+from pathlib import Path
+
+FLUSH_SLEEP = 60
+
+
+def android_build_top():
+ return Path(os.environ.get('ANDROID_BUILD_TOP', None))
+
+
+def _get_clang_revision():
+ regex = r'ClangDefaultVersion\s+= "(?P<rev>clang-r\d+[a-z]?)"'
+ global_go = android_build_top() / 'build/soong/cc/config/global.go'
+ with open(global_go) as infile:
+ match = re.search(regex, infile.read())
+
+ if match is None:
+ raise RuntimeError(f'Parsing clang info from {global_go} failed')
+ return match.group('rev')
+
+
+CLANG_TOP = android_build_top() / 'prebuilts/clang/host/linux-x86/' \
+ / _get_clang_revision()
+LLVM_PROFDATA_PATH = CLANG_TOP / 'bin' / 'llvm-profdata'
+LLVM_COV_PATH = CLANG_TOP / 'bin' / 'llvm-cov'
+
+
+def check_output(cmd, *args, **kwargs):
+ """subprocess.check_output with logging."""
+ cmd_str = cmd if isinstance(cmd, str) else ' '.join(cmd)
+ logging.debug(cmd_str)
+ return subprocess.run(
+ cmd, *args, **kwargs, check=True, stdout=subprocess.PIPE).stdout
+
+
+def adb(cmd, *args, **kwargs):
+ """call 'adb <cmd>' with logging."""
+ return check_output(['adb'] + cmd, *args, **kwargs)
+
+
+def adb_root(*args, **kwargs):
+ """call 'adb root' with logging."""
+ return adb(['root'], *args, **kwargs)
+
+
+def adb_shell(cmd, *args, **kwargs):
+ """call 'adb shell <cmd>' with logging."""
+ return adb(['shell'] + cmd, *args, **kwargs)
+
+
+def send_flush_signal(pids=None):
+
+ def _has_handler_sig37(pid):
+ try:
+ status = adb_shell(['cat', f'/proc/{pid}/status'],
+ text=True,
+ stderr=subprocess.DEVNULL)
+ except subprocess.CalledProcessError:
+ logging.warning(f'Process {pid} is no longer active')
+ return False
+
+ status = status.split('\n')
+ sigcgt = [
+ line.split(':\t')[1] for line in status if line.startswith('SigCgt')
+ ]
+ if not sigcgt:
+ logging.warning(f'Cannot find \'SigCgt:\' in /proc/{pid}/status')
+ return False
+ return int(sigcgt[0], base=16) & (1 << 36)
+
+ if not pids:
+ output = adb_shell(['ps', '-eo', 'pid'], text=True)
+ pids = [pid.strip() for pid in output.split()]
+ pids = pids[1:] # ignore the column header
+ pids = [pid for pid in pids if _has_handler_sig37(pid)]
+
+ if not pids:
+ logging.warning(
+ f'couldn\'t find any process with handler for signal 37')
+
+ adb_shell(['kill', '-37'] + pids)
+
+
+def do_clean_device(args):
+ adb_root()
+
+ logging.info('resetting coverage on device')
+ send_flush_signal()
+
+ logging.info(
+ f'sleeping for {FLUSH_SLEEP} seconds for coverage to be written')
+ time.sleep(FLUSH_SLEEP)
+
+ logging.info('deleting coverage data from device')
+ adb_shell(['rm', '-rf', '/data/misc/trace/*.profraw'])
+
+
+def do_flush(args):
+ adb_root()
+
+ if args.procnames:
+ pids = adb_shell(['pidof'] + args.procnames, text=True).split()
+ logging.info(f'flushing coverage for pids: {pids}')
+ else:
+ pids = None
+ logging.info('flushing coverage for all processes on device')
+
+ send_flush_signal(pids)
+
+ logging.info(
+ f'sleeping for {FLUSH_SLEEP} seconds for coverage to be written')
+ time.sleep(FLUSH_SLEEP)
+
+
+def do_report(args):
+ adb_root()
+
+ temp_dir = tempfile.mkdtemp(
+ prefix='covreport-', dir=os.environ.get('ANDROID_BUILD_TOP', None))
+ logging.info(f'generating coverage report in {temp_dir}')
+
+ # Pull coverage files from /data/misc/trace on the device
+ compressed = adb_shell(['tar', '-czf', '-', '-C', '/data/misc', 'trace'])
+ check_output(['tar', 'zxvf', '-', '-C', temp_dir], input=compressed)
+
+ # Call llvm-profdata followed by llvm-cov
+ profdata = f'{temp_dir}/merged.profdata'
+ check_output(
+ f'{LLVM_PROFDATA_PATH} merge --failure-mode=all --output={profdata} {temp_dir}/trace/*.profraw',
+ shell=True)
+
+ object_flags = [args.binary[0]] + ['--object=' + b for b in args.binary[1:]]
+ source_dirs = ['/proc/self/cwd/' + s for s in args.source_dir]
+
+ output_dir = f'{temp_dir}/html'
+
+ check_output([
+ str(LLVM_COV_PATH), 'show', f'--instr-profile={profdata}',
+ '--format=html', f'--output-dir={output_dir}',
+ '--show-region-summary=false'
+ ] + object_flags + source_dirs)
+
+ print(f'Coverage report data written in {output_dir}')
+
+
+def parse_args():
+ parser = argparse.ArgumentParser()
+ parser.add_argument(
+ '-v',
+ '--verbose',
+ action='store_true',
+ default=False,
+ help='enable debug logging')
+
+ subparsers = parser.add_subparsers(dest='command', required=True)
+
+ clean_device = subparsers.add_parser(
+ 'clean-device', help='reset coverage on device')
+ clean_device.set_defaults(func=do_clean_device)
+
+ flush = subparsers.add_parser(
+ 'flush', help='flush coverage for processes on device')
+ flush.add_argument(
+ 'procnames',
+ nargs='*',
+ metavar='PROCNAME',
+ help='flush coverage for one or more processes with name PROCNAME')
+ flush.set_defaults(func=do_flush)
+
+ report = subparsers.add_parser(
+ 'report', help='fetch coverage from device and generate report')
+ report.add_argument(
+ '-b',
+ '--binary',
+ nargs='+',
+ metavar='BINARY',
+ action='extend',
+ required=True,
+ help='generate coverage report for BINARY')
+ report.add_argument(
+ '-s',
+ '--source-dir',
+ nargs='+',
+ action='extend',
+ metavar='PATH',
+ required=True,
+ help='generate coverage report for source files in PATH')
+ report.set_defaults(func=do_report)
+ return parser.parse_args()
+
+
+def main():
+ args = parse_args()
+ if args.verbose:
+ logging.basicConfig(level=logging.DEBUG)
+
+ args.func(args)
+
+
+if __name__ == '__main__':
+ main()
diff --git a/scripts/add3prf.py b/scripts/add3prf.py
new file mode 100755
index 000000000..5fd155f12
--- /dev/null
+++ b/scripts/add3prf.py
@@ -0,0 +1,321 @@
+#!/usr/bin/env python3
+#
+# Copyright (C) 2020 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Add files to a Rust package for third party review."""
+
+import collections
+import datetime
+import enum
+import glob
+import json
+import os
+import pathlib
+import re
+
+# patterns to match keys in Cargo.toml
+NAME_PATTERN = r"^name *= *\"(.+)\""
+NAME_MATCHER = re.compile(NAME_PATTERN)
+VERSION_PATTERN = r"^version *= *\"(.+)\""
+VERSION_MATCHER = re.compile(VERSION_PATTERN)
+DESCRIPTION_PATTERN = r"^description *= *(\".+\")"
+DESCRIPTION_MATCHER = re.compile(DESCRIPTION_PATTERN)
+# NOTE: This description one-liner pattern fails to match
+# multi-line descriptions in some Rust crates, e.g. shlex.
+LICENSE_PATTERN = r"^license *= *\"(.+)\""
+LICENSE_MATCHER = re.compile(LICENSE_PATTERN)
+
+# patterns to match year/month/day in METADATA
+YMD_PATTERN = r"^ +(year|month|day): (.+)$"
+YMD_MATCHER = re.compile(YMD_PATTERN)
+YMD_LINE_PATTERN = r"^.* year: *([^ ]+) +month: *([^ ]+) +day: *([^ ]+).*$"
+YMD_LINE_MATCHER = re.compile(YMD_LINE_PATTERN)
+
+# patterns to match Apache/MIT licence in LICENSE*
+APACHE_PATTERN = r"^.*Apache License.*$"
+APACHE_MATCHER = re.compile(APACHE_PATTERN)
+MIT_PATTERN = r"^.*MIT License.*$"
+MIT_MATCHER = re.compile(MIT_PATTERN)
+BSD_PATTERN = r"^.*BSD .*License.*$"
+BSD_MATCHER = re.compile(BSD_PATTERN)
+MULTI_LICENSE_COMMENT = ("# Dual-licensed, using the least restrictive "
+ "per go/thirdpartylicenses#same.\n ")
+
+# default owners added to OWNERS
+DEFAULT_OWNERS = "include platform/prebuilts/rust:/OWNERS\n"
+
+# See b/159487435 Official policy for rust imports METADATA URLs.
+# "license_type: NOTICE" might be optional,
+# but it is already used in most rust crate METADATA.
+# This line format should match the output of external_updater.
+METADATA_CONTENT = """name: "{name}"
+description: {description}
+third_party {{
+ url {{
+ type: HOMEPAGE
+ value: "https://crates.io/crates/{name}"
+ }}
+ url {{
+ type: ARCHIVE
+ value: "https://static.crates.io/crates/{name}/{name}-{version}.crate"
+ }}
+ version: "{version}"
+ {license_comment}license_type: NOTICE
+ last_upgrade_date {{
+ year: {year}
+ month: {month}
+ day: {day}
+ }}
+}}
+"""
+
+
+def get_metadata_date():
+ """Return last_upgrade_date in METADATA or today."""
+ # When applied to existing directories to normalize METADATA,
+ # we don't want to change the last_upgrade_date.
+ year, month, day = "", "", ""
+ if os.path.exists("METADATA"):
+ with open("METADATA", "r") as inf:
+ for line in inf:
+ match = YMD_MATCHER.match(line)
+ if match:
+ if match.group(1) == "year":
+ year = match.group(2)
+ elif match.group(1) == "month":
+ month = match.group(2)
+ elif match.group(1) == "day":
+ day = match.group(2)
+ else:
+ match = YMD_LINE_MATCHER.match(line)
+ if match:
+ year, month, day = match.group(1), match.group(2), match.group(3)
+ if year and month and day:
+ print("### Reuse date in METADATA:", year, month, day)
+ return int(year), int(month), int(day)
+ today = datetime.date.today()
+ return today.year, today.month, today.day
+
+
+def add_metadata(name, version, description, multi_license):
+ """Update or add METADATA file."""
+ if os.path.exists("METADATA"):
+ print("### Updating METADATA")
+ else:
+ print("### Adding METADATA")
+ year, month, day = get_metadata_date()
+ license_comment = ""
+ if multi_license:
+ license_comment = MULTI_LICENSE_COMMENT
+ with open("METADATA", "w") as outf:
+ outf.write(METADATA_CONTENT.format(
+ name=name, description=description, version=version,
+ license_comment=license_comment, year=year, month=month, day=day))
+
+
+def grep_license_keyword(license_file):
+ """Find familiar patterns in a file and return the type."""
+ with open(license_file, "r") as input_file:
+ for line in input_file:
+ if APACHE_MATCHER.match(line):
+ return License(LicenseType.APACHE2, license_file)
+ if MIT_MATCHER.match(line):
+ return License(LicenseType.MIT, license_file)
+ if BSD_MATCHER.match(line):
+ return License(LicenseType.BSD_LIKE, license_file)
+ print("ERROR: cannot decide license type in", license_file,
+ "assume BSD_LIKE")
+ return License(LicenseType.BSD_LIKE, license_file)
+
+
+class LicenseType(enum.IntEnum):
+ """A type of license.
+
+ An IntEnum is used to be able to sort by preference. This is mainly the case
+ for dual-licensed Apache/MIT code, for which we prefer the Apache license.
+ The enum name is used to generate the corresponding MODULE_LICENSE_* file.
+ """
+ APACHE2 = 1
+ MIT = 2
+ BSD_LIKE = 3
+ ISC = 4
+
+
+License = collections.namedtuple('License', ['type', 'filename'])
+
+
+def decide_license_type(cargo_license):
+ """Check LICENSE* files to determine the license type.
+
+ Returns: A list of Licenses. The first element is the license we prefer.
+ """
+ # Most crates.io packages have both APACHE and MIT.
+ # Some crate like time-macros-impl uses lower case names like LICENSE-Apache.
+ licenses = []
+ license_file = None
+ for license_file in glob.glob("LICENSE*"):
+ lowered_name = license_file.lower()
+ if lowered_name == "license-apache":
+ licenses.append(License(LicenseType.APACHE2, license_file))
+ elif lowered_name == "license-mit":
+ licenses.append(License(LicenseType.MIT, license_file))
+ if licenses:
+ licenses.sort(key=lambda l: l.type)
+ return licenses
+ if not license_file:
+ raise FileNotFoundError("No license file has been found.")
+ # There is a LICENSE or LICENSE.txt file, use cargo_license found in
+ # Cargo.toml.
+ if "Apache" in cargo_license:
+ return [License(LicenseType.APACHE2, license_file)]
+ if "MIT" in cargo_license:
+ return [License(LicenseType.MIT, license_file)]
+ if "BSD" in cargo_license:
+ return [License(LicenseType.BSD_LIKE, license_file)]
+ if "ISC" in cargo_license:
+ return [License(LicenseType.ISC, license_file)]
+ return [grep_license_keyword(license_file)]
+
+
+def add_notice():
+ if not os.path.exists("NOTICE"):
+ if os.path.exists("LICENSE"):
+ os.symlink("LICENSE", "NOTICE")
+ print("Created link from NOTICE to LICENSE")
+ else:
+ print("ERROR: missing NOTICE and LICENSE")
+
+
+def check_license_link(target):
+ """Check the LICENSE link, must bet the given target."""
+ if not os.path.islink("LICENSE"):
+ print("ERROR: LICENSE file is not a link")
+ return
+ found_target = os.readlink("LICENSE")
+ if target != found_target and found_target != "LICENSE.txt":
+ print("ERROR: found LICENSE link to", found_target,
+ "but expected", target)
+
+
+def add_license(target):
+ """Add LICENSE link to give target."""
+ if os.path.exists("LICENSE"):
+ if os.path.islink("LICENSE"):
+ check_license_link(target)
+ else:
+ print("NOTE: found LICENSE and it is not a link.")
+ return
+ print("### Creating LICENSE link to", target)
+ os.symlink(target, "LICENSE")
+
+
+def add_module_license(license_type):
+ """Touch MODULE_LICENSE_type file."""
+ # Do not change existing MODULE_* files.
+ for suffix in ["MIT", "APACHE", "APACHE2", "BSD_LIKE"]:
+ module_file = "MODULE_LICENSE_" + suffix
+ if os.path.exists(module_file):
+ if license_type.name != suffix:
+ raise Exception("Found unexpected license " + module_file)
+ return
+ module_file = "MODULE_LICENSE_" + license_type.name.upper()
+ pathlib.Path(module_file).touch()
+ print("### Touched", module_file)
+
+
+def found_line(file_name, line):
+ """Returns true if the given line is found in a file."""
+ with open(file_name, "r") as input_file:
+ return line in input_file
+
+
+def add_owners():
+ """Create or append OWNERS with the default owner line."""
+ # Existing OWNERS file might contain more than the default owners.
+ # Only append missing default owners to existing OWNERS.
+ if os.path.isfile("OWNERS"):
+ if found_line("OWNERS", DEFAULT_OWNERS):
+ print("### No change to OWNERS, which has already default owners.")
+ return
+ else:
+ print("### Append default owners to OWNERS")
+ mode = "a"
+ else:
+ print("### Creating OWNERS with default owners")
+ mode = "w"
+ with open("OWNERS", mode) as outf:
+ outf.write(DEFAULT_OWNERS)
+
+
+def toml2json(line):
+ """Convert a quoted toml string to a json quoted string for METADATA."""
+ if line.startswith("\"\"\""):
+ return "\"()\"" # cannot handle broken multi-line description
+ # TOML string escapes: \b \t \n \f \r \" \\ (no unicode escape)
+ line = line[1:-1].replace("\\\\", "\n").replace("\\b", "")
+ line = line.replace("\\t", " ").replace("\\n", " ").replace("\\f", " ")
+ line = line.replace("\\r", "").replace("\\\"", "\"").replace("\n", "\\")
+ # replace a unicode quotation mark, used in the libloading crate
+ line = line.replace("’", "'")
+ # strip and escape single quotes
+ return json.dumps(line.strip()).replace("'", "\\'")
+
+
+def parse_cargo_toml(cargo):
+ """get name, version, description, license string from Cargo.toml."""
+ name = ""
+ version = ""
+ description = ""
+ cargo_license = ""
+ with open(cargo, "r") as toml:
+ for line in toml:
+ if not name and NAME_MATCHER.match(line):
+ name = NAME_MATCHER.match(line).group(1)
+ elif not version and VERSION_MATCHER.match(line):
+ version = VERSION_MATCHER.match(line).group(1)
+ elif not description and DESCRIPTION_MATCHER.match(line):
+ description = toml2json(DESCRIPTION_MATCHER.match(line).group(1))
+ elif not cargo_license and LICENSE_MATCHER.match(line):
+ cargo_license = LICENSE_MATCHER.match(line).group(1)
+ if name and version and description and cargo_license:
+ break
+ return name, version, description, cargo_license
+
+
+def main():
+ """Add 3rd party review files."""
+ cargo = "Cargo.toml"
+ if not os.path.isfile(cargo):
+ print("ERROR: ", cargo, "is not found")
+ return
+ if not os.access(cargo, os.R_OK):
+ print("ERROR: ", cargo, "is not readable")
+ return
+ name, version, description, cargo_license = parse_cargo_toml(cargo)
+ if not name or not version or not description:
+ print("ERROR: Cannot find name, version, or description in", cargo)
+ return
+ print("### Cargo.toml license:", cargo_license)
+ licenses = decide_license_type(cargo_license)
+ preferred_license = licenses[0]
+ add_metadata(name, version, description, len(licenses) > 1)
+ add_owners()
+ add_license(preferred_license.filename)
+ add_module_license(preferred_license.type)
+ # It is unclear yet if a NOTICE file is required.
+ # add_notice()
+
+
+if __name__ == "__main__":
+ main()
diff --git a/scripts/add3prf_test.py b/scripts/add3prf_test.py
new file mode 100755
index 000000000..f6be10b21
--- /dev/null
+++ b/scripts/add3prf_test.py
@@ -0,0 +1,76 @@
+# Copyright 2021 Google Inc. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+import os.path
+import unittest
+
+from pyfakefs import fake_filesystem_unittest
+
+import add3prf
+
+class LicenseDetectionTestCase(fake_filesystem_unittest.TestCase):
+
+ def setUp(self):
+ self.setUpPyfakefs()
+
+ def test_dual_license(self):
+ self.fs.create_file("LICENSE-APACHE")
+ self.fs.create_file("LICENSE-MIT")
+ licenses = add3prf.decide_license_type("MIT OR Apache-2.0")
+ self.assertEqual(len(licenses), 2)
+ preferred_license = licenses[0]
+ self.assertEqual(preferred_license.type, add3prf.LicenseType.APACHE2)
+ self.assertEqual(preferred_license.filename, "LICENSE-APACHE")
+
+ def test_mit_license(self):
+ self.fs.create_file("LICENSE")
+ licenses = add3prf.decide_license_type("MIT")
+ self.assertEqual(len(licenses), 1)
+ preferred_license = licenses[0]
+ self.assertEqual(preferred_license.type, add3prf.LicenseType.MIT)
+ self.assertEqual(preferred_license.filename, "LICENSE")
+
+ def test_misc_license(self):
+ self.fs.create_file("LICENSE.txt")
+ licenses = add3prf.decide_license_type("")
+ self.assertEqual(len(licenses), 1)
+ preferred_license = licenses[0]
+ self.assertEqual(preferred_license.type, add3prf.LicenseType.BSD_LIKE)
+ self.assertEqual(preferred_license.filename, "LICENSE.txt")
+
+ def test_missing_license_file(self):
+ with self.assertRaises(FileNotFoundError):
+ add3prf.decide_license_type("MIT OR Apache-2.0")
+
+
+class AddModuleLicenseTestCase(fake_filesystem_unittest.TestCase):
+
+ def setUp(self):
+ self.setUpPyfakefs()
+
+ def test_no_file(self):
+ add3prf.add_module_license(add3prf.LicenseType.APACHE2)
+ self.assertTrue(os.path.exists("MODULE_LICENSE_APACHE2"))
+
+ def test_already_exists(self):
+ self.fs.create_file("MODULE_LICENSE_APACHE2")
+ add3prf.add_module_license(add3prf.LicenseType.APACHE2)
+
+ def test_mit_apache(self):
+ self.fs.create_file("MODULE_LICENSE_MIT")
+ with self.assertRaises(Exception):
+ add3prf.add_module_license(add3prf.LicenseType.APACHE2)
+
+
+if __name__ == '__main__':
+ unittest.main(verbosity=2)
diff --git a/scripts/cargo2android.py b/scripts/cargo2android.py
index c88536e5f..8557a6d71 100755
--- a/scripts/cargo2android.py
+++ b/scripts/cargo2android.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
#
# Copyright (C) 2019 The Android Open Source Project
#
@@ -27,15 +27,8 @@ The Cargo.toml file should work at least for the host platform.
--device flag, for example:
cargo2android.py --run --device
- This is equivalent to using the --cargo flag to add extra builds:
- cargo2android.py --run
- --cargo "build"
- --cargo "build --target x86_64-unknown-linux-gnu"
-
- On MacOS, use x86_64-apple-darwin as target triple.
- Here the host target triple is used as a fake cross compilation target.
- If the crate's Cargo.toml and environment configuration works for an
- Android target, use that target triple as the cargo build flag.
+ Note that cargo build is only called once with the default target
+ x86_64-unknown-linux-gnu.
(3) To build default and test crates, for host and device, use both
--device and --tests flags:
@@ -43,38 +36,69 @@ The Cargo.toml file should work at least for the host platform.
This is equivalent to using the --cargo flag to add extra builds:
cargo2android.py --run
- --cargo "build"
- --cargo "build --tests"
--cargo "build --target x86_64-unknown-linux-gnu"
--cargo "build --tests --target x86_64-unknown-linux-gnu"
-Since Android rust builds by default treat all warnings as errors,
-if there are rustc warning messages, this script will add
-deny_warnings:false to the owner crate module in Android.bp.
+ Note that when there are tests for this module or for its reverse
+ dependencies, these tests will be added to the TEST_MAPPING file.
+
+If there are rustc warning messages, this script will add
+a warning comment to the owner crate module in Android.bp.
"""
from __future__ import print_function
+from update_crate_tests import TestMapping
import argparse
+import glob
+import json
import os
import os.path
+import platform
import re
+import shutil
+import sys
+
+# Some Rust packages include extra unwanted crates.
+# This set contains all such excluded crate names.
+EXCLUDED_CRATES = set(['protobuf_bin_gen_rust_do_not_use'])
RENAME_MAP = {
- # This map includes all changes to the default rust library module
- # names to resolve name conflicts or avoid confusion.
+ # This map includes all changes to the default rust module names
+ # to resolve name conflicts, avoid confusion, or work as plugin.
'libbacktrace': 'libbacktrace_rust',
+ 'libbase': 'libbase_rust',
+ 'libfuse': 'libfuse_rust',
'libgcc': 'libgcc_rust',
'liblog': 'liblog_rust',
+ 'libminijail': 'libminijail_rust',
'libsync': 'libsync_rust',
'libx86_64': 'libx86_64_rust',
+ 'protoc_gen_rust': 'protoc-gen-rust',
+}
+
+RENAME_STEM_MAP = {
+ # This map includes all changes to the default rust module stem names,
+ # which is used for output files when different from the module name.
+ 'protoc_gen_rust': 'protoc-gen-rust',
+}
+
+RENAME_DEFAULTS_MAP = {
+ # This map includes all changes to the default prefix of rust_default
+ # module names, to avoid conflict with existing Android modules.
+ 'libc': 'rust_libc',
}
# Header added to all generated Android.bp files.
-ANDROID_BP_HEADER = '// This file is generated by cargo2android.py.\n'
+ANDROID_BP_HEADER = (
+ '// This file is generated by cargo2android.py {args}.\n' +
+ '// Do not modify this file as changes will be overridden on upgrade.\n')
CARGO_OUT = 'cargo.out' # Name of file to keep cargo build -v output.
+# This should be kept in sync with tools/external_updater/crates_updater.py.
+ERRORS_LINE = 'Errors in ' + CARGO_OUT + ':'
+
TARGET_TMP = 'target.tmp' # Name of temporary output directory.
# Message to be displayed when this script is called without the --run flag.
@@ -109,6 +133,14 @@ def altered_name(name):
return RENAME_MAP[name] if (name in RENAME_MAP) else name
+def altered_stem(name):
+ return RENAME_STEM_MAP[name] if (name in RENAME_STEM_MAP) else name
+
+
+def altered_defaults(name):
+ return RENAME_DEFAULTS_MAP[name] if (name in RENAME_DEFAULTS_MAP) else name
+
+
def is_build_crate_name(name):
# We added special prefix to build script crate names.
return name.startswith('build_script_')
@@ -172,6 +204,8 @@ class Crate(object):
# Android module properties derived from rustc parameters.
self.module_name = '' # unique in Android build system
self.module_type = '' # rust_{binary,library,test}[_host] etc.
+ self.defaults = '' # rust_defaults used by rust_test* modules
+ self.default_srcs = False # use 'srcs' defined in self.defaults
self.root_pkg = '' # parent package name of a sub/test packge, from -L
self.srcs = list() # main_src or merged multiple source files
self.stem = '' # real base name of output file
@@ -182,7 +216,7 @@ class Crate(object):
# Parameters collected from rustc command line.
self.crate_name = '' # follows --crate-name
self.main_src = '' # follows crate_name parameter, shortened
- self.crate_type = '' # bin|lib|test (see --test flag)
+ self.crate_types = list() # follows --crate-type
self.cfgs = list() # follows --cfg, without feature= prefix
self.features = list() # follows --cfg, name in 'feature="..."'
self.codegens = list() # follows -C, some ignored
@@ -216,8 +250,10 @@ class Crate(object):
def merge_host_device(self, other):
"""Returns true if attributes are the same except host/device support."""
return (self.crate_name == other.crate_name and
- self.crate_type == other.crate_type and
- self.main_src == other.main_src and self.stem == other.stem and
+ self.crate_types == other.crate_types and
+ self.main_src == other.main_src and
+ # before merge, each test module has an unique module name and stem
+ (self.stem == other.stem or self.crate_types == ['test']) and
self.root_pkg == other.root_pkg and not self.skip_crate() and
self.same_flags(other))
@@ -226,8 +262,8 @@ class Crate(object):
# Before merger, each test has its own crate_name.
# A merged test uses its source file base name as output file name,
# so a test is mergeable only if its base name equals to its crate name.
- return (self.crate_type == other.crate_type and
- self.crate_type == 'test' and self.root_pkg == other.root_pkg and
+ return (self.crate_types == other.crate_types and
+ self.crate_types == ['test'] and self.root_pkg == other.root_pkg and
not self.skip_crate() and
other.crate_name == test_base_name(other.main_src) and
(len(self.srcs) > 1 or
@@ -238,16 +274,13 @@ class Crate(object):
def merge(self, other, outf_name):
"""Try to merge crate into self."""
+ # Cargo build --tests could recompile a library for tests.
+ # We need to merge such duplicated calls to rustc, with
+ # the algorithm in merge_host_device.
should_merge_host_device = self.merge_host_device(other)
should_merge_test = False
if not should_merge_host_device:
should_merge_test = self.merge_test(other)
- # A for-device test crate can be merged with its for-host version,
- # or merged with a different test for the same host or device.
- # Since we run cargo once for each device or host, test crates for the
- # first device or host will be merged first. Then test crates for a
- # different device or host should be allowed to be merged into a
- # previously merged one, maybe for a different device or host.
if should_merge_host_device or should_merge_test:
self.runner.init_bp_file(outf_name)
with open(outf_name, 'a') as outf: # to write debug info
@@ -265,8 +298,6 @@ class Crate(object):
self.write('\n// Before merge definition (2):')
other.dump_debug_info()
# Merge properties of other to self.
- self.host_supported = self.host_supported or other.host_supported
- self.device_supported = self.device_supported or other.device_supported
self.has_warning = self.has_warning or other.has_warning
if not self.target: # okay to keep only the first target triple
self.target = other.target
@@ -299,6 +330,20 @@ class Crate(object):
return
dir_name = os.path.dirname(dir_name)
+ def add_codegens_flag(self, flag):
+ """Ignore options not used in Android."""
+ # 'prefer-dynamic' does not work with common flag -C lto
+ # 'embed-bitcode' is ignored; we might control LTO with other .bp flag
+ # 'codegen-units' is set in Android global config or by default
+ if not (flag.startswith('codegen-units=') or
+ flag.startswith('debuginfo=') or
+ flag.startswith('embed-bitcode=') or
+ flag.startswith('extra-filename=') or
+ flag.startswith('incremental=') or
+ flag.startswith('metadata=') or
+ flag == 'prefer-dynamic'):
+ self.codegens.append(flag)
+
def parse(self, line_num, line):
"""Find important rustc arguments to convert to Android.bp properties."""
self.line_num = line_num
@@ -308,37 +353,16 @@ class Crate(object):
while i < len(args):
arg = args[i]
if arg == '--crate-name':
- self.crate_name = args[i + 1]
- i += 2
- # shorten imported crate main source path
- self.main_src = re.sub('^/[^ ]*/registry/src/', '.../', args[i])
- self.main_src = re.sub('^.../github.com-[0-9a-f]*/', '.../',
- self.main_src)
- self.find_cargo_dir()
- if self.cargo_dir and not self.runner.args.onefile:
- # Write to Android.bp in the subdirectory with Cargo.toml.
- self.outf_name = self.cargo_dir + '/Android.bp'
- self.main_src = self.main_src[len(self.cargo_dir) + 1:]
+ i += 1
+ self.crate_name = args[i]
elif arg == '--crate-type':
i += 1
- if self.crate_type:
- self.errors += ' ERROR: multiple --crate-type '
- self.errors += self.crate_type + ' ' + args[i] + '\n'
- # TODO(chh): handle multiple types, e.g. lexical-core-0.4.6 has
- # crate-type = ["lib", "staticlib", "cdylib"]
- # output: debug/liblexical_core.{a,so,rlib}
- # cargo calls rustc with multiple --crate-type flags.
- # rustc can accept:
- # --crate-type [bin|lib|rlib|dylib|cdylib|staticlib|proc-macro]
- # Comma separated list of types of crates for the compiler to emit
- self.crate_type = args[i]
+ # cargo calls rustc with multiple --crate-type flags.
+ # rustc can accept:
+ # --crate-type [bin|lib|rlib|dylib|cdylib|staticlib|proc-macro]
+ self.crate_types.append(args[i])
elif arg == '--test':
- # only --test or --crate-type should appear once
- if self.crate_type:
- self.errors += (' ERROR: found both --test and --crate-type ' +
- self.crate_type + '\n')
- else:
- self.crate_type = 'test'
+ self.crate_types.append('test')
elif arg == '--target':
i += 1
self.target = args[i]
@@ -355,12 +379,11 @@ class Crate(object):
self.core_externs.append(re.sub(' = .*', '', extern_names))
elif arg == '-C': # codegen options
i += 1
- # ignore options not used in Android
- if not (args[i].startswith('debuginfo=') or
- args[i].startswith('extra-filename=') or
- args[i].startswith('incremental=') or
- args[i].startswith('metadata=')):
- self.codegens.append(args[i])
+ self.add_codegens_flag(args[i])
+ elif arg.startswith('-C'):
+ # cargo has been passing "-C <xyz>" flag to rustc,
+ # but newer cargo could pass '-Cembed-bitcode=no' to rustc.
+ self.add_codegens_flag(arg[2:])
elif arg == '--cap-lints':
i += 1
self.cap_lints = args[i]
@@ -390,6 +413,20 @@ class Crate(object):
self.emit_list = arg.replace('--emit=', '')
elif arg.startswith('--edition='):
self.edition = arg.replace('--edition=', '')
+ elif not arg.startswith('-'):
+ # shorten imported crate main source paths like $HOME/.cargo/
+ # registry/src/github.com-1ecc6299db9ec823/memchr-2.3.3/src/lib.rs
+ self.main_src = re.sub(r'^/[^ ]*/registry/src/', '.../', args[i])
+ self.main_src = re.sub(r'^\.\.\./github.com-[0-9a-f]*/', '.../',
+ self.main_src)
+ self.find_cargo_dir()
+ if self.cargo_dir: # for a subdirectory
+ if self.runner.args.no_subdir: # all .bp content to /dev/null
+ self.outf_name = '/dev/null'
+ elif not self.runner.args.onefile:
+ # Write to Android.bp in the subdirectory with Cargo.toml.
+ self.outf_name = self.cargo_dir + '/Android.bp'
+ self.main_src = self.main_src[len(self.cargo_dir) + 1:]
else:
self.errors += 'ERROR: unknown ' + arg + '\n'
i += 1
@@ -399,17 +436,21 @@ class Crate(object):
self.errors += 'ERROR: missing main source file\n'
else:
self.srcs.append(self.main_src)
- if not self.crate_type:
+ if not self.crate_types:
# Treat "--cfg test" as "--test"
if 'test' in self.cfgs:
- self.crate_type = 'test'
+ self.crate_types.append('test')
else:
- self.errors += 'ERROR: missing --crate-type\n'
+ self.errors += 'ERROR: missing --crate-type or --test\n'
+ elif len(self.crate_types) > 1:
+ if 'test' in self.crate_types:
+ self.errors += 'ERROR: cannot handle both --crate-type and --test\n'
+ if 'lib' in self.crate_types and 'rlib' in self.crate_types:
+ self.errors += 'ERROR: cannot generate both lib and rlib crate types\n'
if not self.root_pkg:
self.root_pkg = self.crate_name
- if self.target:
- self.device_supported = True
- self.host_supported = True # assume host supported for all builds
+ self.device_supported = self.runner.args.device
+ self.host_supported = not self.runner.args.no_host
self.cfgs = sorted(set(self.cfgs))
self.features = sorted(set(self.features))
self.codegens = sorted(set(self.codegens))
@@ -417,6 +458,7 @@ class Crate(object):
self.core_externs = sorted(set(self.core_externs))
self.static_libs = sorted(set(self.static_libs))
self.shared_libs = sorted(set(self.shared_libs))
+ self.crate_types = sorted(set(self.crate_types))
self.decide_module_type()
self.module_name = altered_name(self.stem)
return self
@@ -429,6 +471,8 @@ class Crate(object):
pkg = self.main_src
if pkg.startswith('.../'): # keep only the main package name
pkg = re.sub('/.*', '', pkg[4:])
+ elif pkg.startswith('/'): # use relative path for a local package
+ pkg = os.path.relpath(pkg)
if not self.features:
return pkg
return pkg + ' "' + ','.join(self.features) + '"'
@@ -440,7 +484,8 @@ class Crate(object):
def skip_crate(self):
"""Return crate_name or a message if this crate should be skipped."""
- if is_build_crate_name(self.crate_name):
+ if (is_build_crate_name(self.crate_name) or
+ self.crate_name in EXCLUDED_CRATES):
return self.crate_name
if is_dependent_file_path(self.main_src):
return 'dependent crate'
@@ -478,7 +523,7 @@ class Crate(object):
self.dump_line()
dump('module_name', self.module_name)
dump('crate_name', self.crate_name)
- dump('crate_type', self.crate_type)
+ dump('crate_types', self.crate_types)
dump('main_src', self.main_src)
dump('has_warning', self.has_warning)
dump('for_host', self.host_supported)
@@ -497,63 +542,216 @@ class Crate(object):
dump_list('// -l (dylib) = %s', self.shared_libs)
def dump_android_module(self):
+ """Dump one or more Android module definition, depending on crate_types."""
+ if len(self.crate_types) == 1:
+ self.dump_single_type_android_module()
+ return
+ if 'test' in self.crate_types:
+ self.write('\nERROR: multiple crate types cannot include test type')
+ return
+ # Dump one Android module per crate_type.
+ for crate_type in self.crate_types:
+ self.decide_one_module_type(crate_type)
+ self.dump_one_android_module(crate_type)
+
+ def build_default_name(self):
+ """Return a short and readable name for the rust_defaults module."""
+ # Choices: (1) root_pkg + '_defaults',
+ # (2) root_pkg + '_defaults_' + crate_name
+ # (3) root_pkg + '_defaults_' + main_src_basename_path
+ # (4) root_pkg + '_defaults_' + a_positive_sequence_number
+ name1 = altered_defaults(self.root_pkg) + '_defaults'
+ if self.runner.try_claim_module_name(name1, self):
+ return name1
+ name2 = name1 + '_' + self.crate_name
+ if self.runner.try_claim_module_name(name2, self):
+ return name2
+ name3 = name1 + '_' + self.main_src_basename_path()
+ if self.runner.try_claim_module_name(name3, self):
+ return name3
+ return self.runner.claim_module_name(name1, self, 0)
+
+ def dump_srcs_list(self):
+ """Dump the srcs list, for defaults or regular modules."""
+ if len(self.srcs) > 1:
+ srcs = sorted(set(self.srcs)) # make a copy and dedup
+ else:
+ srcs = [self.main_src]
+ copy_out = self.runner.copy_out_module_name()
+ if copy_out:
+ srcs.append(':' + copy_out)
+ self.dump_android_property_list('srcs', '"%s"', srcs)
+
+ def dump_defaults_module(self):
+ """Dump a rust_defaults module to be shared by other modules."""
+ name = self.build_default_name()
+ self.defaults = name
+ self.write('\nrust_defaults {')
+ self.write(' name: "' + name + '",')
+ if self.runner.args.global_defaults:
+ self.write(' defaults: ["' + self.runner.args.global_defaults + '"],')
+ self.write(' crate_name: "' + self.crate_name + '",')
+ if len(self.srcs) == 1: # only one source file; share it in defaults
+ self.default_srcs = True
+ if self.has_warning and not self.cap_lints:
+ self.write(' // has rustc warnings')
+ self.dump_srcs_list()
+ if 'test' in self.crate_types:
+ self.write(' test_suites: ["general-tests"],')
+ self.write(' auto_gen_config: true,')
+ self.dump_edition_flags_libs()
+ self.write('}')
+
+ def dump_single_type_android_module(self):
+ """Dump one simple Android module, which has only one crate_type."""
+ crate_type = self.crate_types[0]
+ if crate_type != 'test':
+ # do not change self.stem or self.module_name
+ self.dump_one_android_module(crate_type)
+ return
+ # Dump one test module per source file, and separate host and device tests.
+ # crate_type == 'test'
+ if (self.host_supported and self.device_supported) or len(self.srcs) > 1:
+ self.srcs = sorted(set(self.srcs))
+ self.dump_defaults_module()
+ saved_srcs = self.srcs
+ for src in saved_srcs:
+ self.srcs = [src]
+ saved_device_supported = self.device_supported
+ saved_host_supported = self.host_supported
+ saved_main_src = self.main_src
+ self.main_src = src
+ if saved_host_supported:
+ self.device_supported = False
+ self.host_supported = True
+ self.module_name = self.test_module_name()
+ self.decide_one_module_type(crate_type)
+ self.dump_one_android_module(crate_type)
+ if saved_device_supported:
+ self.device_supported = True
+ self.host_supported = False
+ self.module_name = self.test_module_name()
+ self.decide_one_module_type(crate_type)
+ self.dump_one_android_module(crate_type)
+ self.host_supported = saved_host_supported
+ self.device_supported = saved_device_supported
+ self.main_src = saved_main_src
+ self.srcs = saved_srcs
+
+ def dump_one_android_module(self, crate_type):
"""Dump one Android module definition."""
if not self.module_type:
- self.write('\nERROR: unknown crate_type ' + self.crate_type)
+ self.write('\nERROR: unknown crate_type ' + crate_type)
return
self.write('\n' + self.module_type + ' {')
self.dump_android_core_properties()
+ if not self.defaults:
+ self.dump_edition_flags_libs()
+ if self.runner.args.host_first_multilib and self.host_supported and crate_type != 'test':
+ self.write(' compile_multilib: "first",')
+ if self.runner.args.apex_available and crate_type == 'lib':
+ self.write(' apex_available: [')
+ for apex in self.runner.args.apex_available:
+ self.write(' "%s",' % apex)
+ self.write(' ],')
+ if self.runner.args.min_sdk_version and crate_type == 'lib':
+ self.write(' min_sdk_version: "%s",' % self.runner.args.min_sdk_version)
+ self.write('}')
+
+ def dump_android_flags(self):
+ """Dump Android module flags property."""
+ if not self.codegens and not self.cap_lints:
+ return
+ self.write(' flags: [')
+ if self.cap_lints:
+ self.write(' "--cap-lints ' + self.cap_lints + '",')
+ codegens_fmt = '"-C %s"'
+ self.dump_android_property_list_items(codegens_fmt, self.codegens)
+ self.write(' ],')
+
+ def dump_edition_flags_libs(self):
if self.edition:
self.write(' edition: "' + self.edition + '",')
self.dump_android_property_list('features', '"%s"', self.features)
- cfg_fmt = '"--cfg %s"'
- if self.cap_lints:
- allowed = '"--cap-lints ' + self.cap_lints + '"'
- if not self.cfgs:
- self.write(' flags: [' + allowed + '],')
- else:
- self.write(' flags: [\n ' + allowed + ',')
- self.dump_android_property_list_items(cfg_fmt, self.cfgs)
- self.write(' ],')
- else:
- self.dump_android_property_list('flags', cfg_fmt, self.cfgs)
+ self.dump_android_property_list('cfgs', '"%s"', self.cfgs)
+ self.dump_android_flags()
if self.externs:
self.dump_android_externs()
self.dump_android_property_list('static_libs', '"lib%s"', self.static_libs)
self.dump_android_property_list('shared_libs', '"lib%s"', self.shared_libs)
- self.write('}')
+
+ def main_src_basename_path(self):
+ return re.sub('/', '_', re.sub('.rs$', '', self.main_src))
def test_module_name(self):
"""Return a unique name for a test module."""
- # root_pkg+'_tests_'+(crate_name|source_file_path)
- suffix = self.crate_name
- if not suffix:
- suffix = re.sub('/', '_', re.sub('.rs$', '', self.main_src))
- return self.root_pkg + '_tests_' + suffix
+ # root_pkg+(_host|_device) + '_test_'+source_file_name
+ suffix = self.main_src_basename_path()
+ host_device = '_host'
+ if self.device_supported:
+ host_device = '_device'
+ return self.root_pkg + host_device + '_test_' + suffix
def decide_module_type(self):
+ # Use the first crate type for the default/first module.
+ crate_type = self.crate_types[0] if self.crate_types else ''
+ self.decide_one_module_type(crate_type)
+
+ def decide_one_module_type(self, crate_type):
"""Decide which Android module type to use."""
host = '' if self.device_supported else '_host'
- if self.crate_type == 'bin': # rust_binary[_host]
+ if crate_type == 'bin': # rust_binary[_host]
self.module_type = 'rust_binary' + host
- self.stem = self.crate_name
- elif self.crate_type == 'lib': # rust_library[_host]_rlib
- self.module_type = 'rust_library' + host + '_rlib'
+ # In rare cases like protobuf-codegen, the output binary name must
+ # be renamed to use as a plugin for protoc.
+ self.stem = altered_stem(self.crate_name)
+ self.module_name = altered_name(self.crate_name)
+ elif crate_type == 'lib': # rust_library[_host]
+ # TODO(chh): should this be rust_library[_host]?
+ # Assuming that Cargo.toml do not use both 'lib' and 'rlib',
+ # because we map them both to rlib.
+ self.module_type = 'rust_library' + host
self.stem = 'lib' + self.crate_name
- elif self.crate_type == 'cdylib': # rust_library[_host]_dylib
- # TODO(chh): complete and test cdylib module type
+ self.module_name = altered_name(self.stem)
+ elif crate_type == 'rlib': # rust_library[_host]
+ self.module_type = 'rust_library' + host
+ self.stem = 'lib' + self.crate_name
+ self.module_name = altered_name(self.stem)
+ elif crate_type == 'dylib': # rust_library[_host]_dylib
self.module_type = 'rust_library' + host + '_dylib'
- self.stem = 'lib' + self.crate_name + '.so'
- elif self.crate_type == 'test': # rust_test[_host]
+ self.stem = 'lib' + self.crate_name
+ self.module_name = altered_name(self.stem) + '_dylib'
+ elif crate_type == 'cdylib': # rust_library[_host]_shared
+ self.module_type = 'rust_ffi' + host + '_shared'
+ self.stem = 'lib' + self.crate_name
+ self.module_name = altered_name(self.stem) + '_shared'
+ elif crate_type == 'staticlib': # rust_library[_host]_static
+ self.module_type = 'rust_ffi' + host + '_static'
+ self.stem = 'lib' + self.crate_name
+ self.module_name = altered_name(self.stem) + '_static'
+ elif crate_type == 'test': # rust_test[_host]
self.module_type = 'rust_test' + host
+ # Before do_merge, stem name is based on the --crate-name parameter.
+ # and test module name is based on stem.
self.stem = self.test_module_name()
# self.stem will be changed after merging with other tests.
# self.stem is NOT used for final test binary name.
- # rust_test uses each source file base name as its output file name,
- # unless crate_name is specified by user in Cargo.toml.
- elif self.crate_type == 'proc-macro': # rust_proc_macro
+ # rust_test uses each source file base name as part of output file name.
+ # In do_merge, this function is called again, with a module_name.
+ # We make sure that the module name is unique in each package.
+ if self.module_name:
+ # Cargo uses "-C extra-filename=..." and "-C metadata=..." to add
+ # different suffixes and distinguish multiple tests of the same
+ # crate name. We ignore -C and use claim_module_name to get
+ # unique sequential suffix.
+ self.module_name = self.runner.claim_module_name(
+ self.module_name, self, 0)
+ # Now the module name is unique, stem should also match and unique.
+ self.stem = self.module_name
+ elif crate_type == 'proc-macro': # rust_proc_macro
self.module_type = 'rust_proc_macro'
self.stem = 'lib' + self.crate_name
+ self.module_name = altered_name(self.stem)
else: # unknown module type, rust_prebuilt_dylib? rust_library[_host]?
self.module_type = ''
self.stem = ''
@@ -564,34 +762,50 @@ class Crate(object):
self.write(' ' + (fmt % escape_quotes(v)) + ',')
def dump_android_property_list(self, name, fmt, values):
- if values:
+ if not values:
+ return
+ if len(values) > 1:
self.write(' ' + name + ': [')
self.dump_android_property_list_items(fmt, values)
self.write(' ],')
+ else:
+ self.write(' ' + name + ': [' +
+ (fmt % escape_quotes(values[0])) + '],')
def dump_android_core_properties(self):
"""Dump the module header, name, stem, etc."""
self.write(' name: "' + self.module_name + '",')
+ # see properties shared by dump_defaults_module
+ if self.defaults:
+ self.write(' defaults: ["' + self.defaults + '"],')
+ elif self.runner.args.global_defaults:
+ self.write(' defaults: ["' + self.runner.args.global_defaults + '"],')
if self.stem != self.module_name:
self.write(' stem: "' + self.stem + '",')
- if self.has_warning and not self.cap_lints:
- self.write(' deny_warnings: false,')
- if self.host_supported and self.device_supported:
+ if self.has_warning and not self.cap_lints and not self.default_srcs:
+ self.write(' // has rustc warnings')
+ if self.host_supported and self.device_supported and self.module_type != 'rust_proc_macro':
self.write(' host_supported: true,')
- self.write(' crate_name: "' + self.crate_name + '",')
- if len(self.srcs) > 1:
- self.srcs = sorted(set(self.srcs))
- self.dump_android_property_list('srcs', '"%s"', self.srcs)
- else:
- self.write(' srcs: ["' + self.main_src + '"],')
- if self.crate_type == 'test':
+ if not self.defaults:
+ self.write(' crate_name: "' + self.crate_name + '",')
+ if not self.default_srcs:
+ self.dump_srcs_list()
+ if 'test' in self.crate_types and not self.defaults:
# self.root_pkg can have multiple test modules, with different *_tests[n]
# names, but their executables can all be installed under the same _tests
# directory. When built from Cargo.toml, all tests should have different
- # file or crate names.
- self.write(' relative_install_path: "' + self.root_pkg + '_tests",')
+ # file or crate names. So we used (root_pkg + '_tests') name as the
+ # relative_install_path.
+ # However, some package like 'slab' can have non-mergeable tests that
+ # must be separated by different module names. So, here we no longer
+ # emit relative_install_path.
+ # self.write(' relative_install_path: "' + self.root_pkg + '_tests",')
self.write(' test_suites: ["general-tests"],')
self.write(' auto_gen_config: true,')
+ if 'test' in self.crate_types and self.host_supported:
+ self.write(' test_options: {')
+ self.write(' unit_test: true,')
+ self.write(' },')
def dump_android_externs(self):
"""Dump the dependent rlibs and dylibs property."""
@@ -612,10 +826,10 @@ class Crate(object):
rust_libs += ' "' + altered_name('lib' + lib_name) + '",\n'
elif lib.endswith('.so'):
so_libs.append(lib_name)
- else:
- rust_libs += ' // ERROR: unknown type of lib ' + lib_name + '\n'
+ elif lib != 'proc_macro': # --extern proc_macro is special and ignored
+ rust_libs += ' // ERROR: unknown type of lib ' + lib + '\n'
if rust_libs:
- self.write(' rlibs: [\n' + rust_libs + ' ],')
+ self.write(' rustlibs: [\n' + rust_libs + ' ],')
# Are all dependent .so files proc_macros?
# TODO(chh): Separate proc_macros and dylib.
self.dump_android_property_list('proc_macros', '"lib%s"', so_libs)
@@ -804,6 +1018,9 @@ class Runner(object):
self.args = args
self.dry_run = not args.run
self.skip_cargo = args.skipcargo
+ self.cargo_path = './cargo' # path to cargo, will be set later
+ self.checked_out_files = False # to check only once
+ self.build_out_files = [] # output files generated by build.rs
# All cc/ar objects, crates, dependencies, and warning files
self.cc_objects = list()
self.pkg_obj2cc = {}
@@ -814,36 +1031,180 @@ class Runner(object):
self.warning_files = set()
# Keep a unique mapping from (module name) to crate
self.name_owners = {}
+ # Save and dump all errors from cargo to Android.bp.
+ self.errors = ''
+ self.setup_cargo_path()
# Default action is cargo clean, followed by build or user given actions.
if args.cargo:
self.cargo = ['clean'] + args.cargo
else:
- self.cargo = ['clean', 'build']
default_target = '--target x86_64-unknown-linux-gnu'
- if args.device:
- self.cargo.append('build ' + default_target)
- if args.tests:
- self.cargo.append('build --tests')
- self.cargo.append('build --tests ' + default_target)
- elif args.tests:
- self.cargo.append('build --tests')
+ # Use the same target for both host and default device builds.
+ # Same target is used as default in host x86_64 Android compilation.
+ # Note: b/169872957, prebuilt cargo failed to build vsock
+ # on x86_64-unknown-linux-musl systems.
+ self.cargo = ['clean', 'build ' + default_target]
+ if args.tests:
+ self.cargo.append('build --tests ' + default_target)
+
+ def setup_cargo_path(self):
+ """Find cargo in the --cargo_bin or prebuilt rust bin directory."""
+ if self.args.cargo_bin:
+ self.cargo_path = os.path.join(self.args.cargo_bin, 'cargo')
+ if not os.path.isfile(self.cargo_path):
+ sys.exit('ERROR: cannot find cargo in ' + self.args.cargo_bin)
+ print('WARNING: using cargo in ' + self.args.cargo_bin)
+ return
+ # We have only tested this on Linux.
+ if platform.system() != 'Linux':
+ sys.exit('ERROR: this script has only been tested on Linux with cargo.')
+ # Assuming that this script is in development/scripts.
+ my_dir = os.path.dirname(os.path.abspath(__file__))
+ linux_dir = os.path.join(my_dir, '..', '..',
+ 'prebuilts', 'rust', 'linux-x86')
+ if not os.path.isdir(linux_dir):
+ sys.exit('ERROR: cannot find directory ' + linux_dir)
+ rust_version = self.find_rust_version(my_dir, linux_dir)
+ cargo_bin = os.path.join(linux_dir, rust_version, 'bin')
+ self.cargo_path = os.path.join(cargo_bin, 'cargo')
+ if not os.path.isfile(self.cargo_path):
+ sys.exit('ERROR: cannot find cargo in ' + cargo_bin
+ + '; please try --cargo_bin= flag.')
+ return
+
+ def find_rust_version(self, my_dir, linux_dir):
+ """Use my script directory, find prebuilt rust version."""
+ # First look up build/soong/rust/config/global.go.
+ path2global = os.path.join(my_dir, '..', '..',
+ 'build', 'soong', 'rust', 'config', 'global.go')
+ if os.path.isfile(path2global):
+ # try to find: RustDefaultVersion = "1.44.0"
+ version_pat = re.compile(
+ r'\s*RustDefaultVersion\s*=\s*"([0-9]+\.[0-9]+\.[0-9]+)".*$')
+ with open(path2global, 'r') as inf:
+ for line in inf:
+ result = version_pat.match(line)
+ if result:
+ return result.group(1)
+ print('WARNING: cannot find RustDefaultVersion in ' + path2global)
+ # Otherwise, find the newest (largest) version number in linux_dir.
+ rust_version = (0, 0, 0) # the prebuilt version to use
+ version_pat = re.compile(r'([0-9]+)\.([0-9]+)\.([0-9]+)$')
+ for dir_name in os.listdir(linux_dir):
+ result = version_pat.match(dir_name)
+ if not result:
+ continue
+ version = (result.group(1), result.group(2), result.group(3))
+ if version > rust_version:
+ rust_version = version
+ return '.'.join(rust_version)
+
+ def find_out_files(self):
+ # list1 has build.rs output for normal crates
+ list1 = glob.glob(TARGET_TMP + '/*/*/build/' + self.root_pkg + '-*/out/*')
+ # list2 has build.rs output for proc-macro crates
+ list2 = glob.glob(TARGET_TMP + '/*/build/' + self.root_pkg + '-*/out/*')
+ return list1 + list2
+
+ def copy_out_files(self):
+ """Copy build.rs output files to ./out and set up build_out_files."""
+ if self.checked_out_files:
+ return
+ self.checked_out_files = True
+ cargo_out_files = self.find_out_files()
+ out_files = set()
+ if cargo_out_files:
+ os.makedirs('out', exist_ok=True)
+ for path in cargo_out_files:
+ file_name = path.split('/')[-1]
+ out_files.add(file_name)
+ shutil.copy(path, 'out/' + file_name)
+ self.build_out_files = sorted(out_files)
+
+ def has_used_out_dir(self):
+ """Returns true if env!("OUT_DIR") is found."""
+ return 0 == os.system('grep -rl --exclude build.rs --include \\*.rs' +
+ ' \'env!("OUT_DIR")\' * > /dev/null')
+
+ def copy_out_module_name(self):
+ if self.args.copy_out and self.build_out_files:
+ return 'copy_' + self.root_pkg + '_build_out'
+ else:
+ return ''
+
+ def read_license(self, name):
+ if not os.path.isfile(name):
+ return ''
+ license = ''
+ with open(name, 'r') as intf:
+ line = intf.readline()
+ # Firstly skip ANDROID_BP_HEADER
+ while line.startswith('//'):
+ line = intf.readline()
+ # Read all lines until we see a rust_* or genrule rule.
+ while line != '' and not (line.startswith('rust_') or line.startswith('genrule {')):
+ license += line
+ line = intf.readline()
+ return license.strip()
+
+ def dump_copy_out_module(self, outf):
+ """Output the genrule module to copy out/* to $(genDir)."""
+ copy_out = self.copy_out_module_name()
+ if not copy_out:
+ return
+ outf.write('\ngenrule {\n')
+ outf.write(' name: "' + copy_out + '",\n')
+ outf.write(' srcs: ["out/*"],\n')
+ outf.write(' cmd: "cp $(in) $(genDir)",\n')
+ if len(self.build_out_files) > 1:
+ outf.write(' out: [\n')
+ for f in self.build_out_files:
+ outf.write(' "' + f + '",\n')
+ outf.write(' ],\n')
+ else:
+ outf.write(' out: ["' + self.build_out_files[0] + '"],\n')
+ outf.write('}\n')
def init_bp_file(self, name):
+ # name could be Android.bp or sub_dir_path/Android.bp
if name not in self.bp_files:
self.bp_files.add(name)
+ license_section = self.read_license(name)
with open(name, 'w') as outf:
- outf.write(ANDROID_BP_HEADER)
+ print_args = filter(lambda x: x != "--no-test-mapping", sys.argv[1:])
+ outf.write(ANDROID_BP_HEADER.format(args=' '.join(print_args)))
+ outf.write('\n')
+ outf.write(license_section)
+ outf.write('\n')
+ # at most one copy_out module per .bp file
+ self.dump_copy_out_module(outf)
+
+ def dump_test_mapping_files(self):
+ """Dump all TEST_MAPPING files."""
+ if self.dry_run:
+ print('Dry-run skip dump of TEST_MAPPING')
+ elif self.args.no_test_mapping:
+ print('Skipping generation of TEST_MAPPING')
+ else:
+ test_mapping = TestMapping(None)
+ for bp_file_name in self.bp_files:
+ test_mapping.create_test_mapping(os.path.dirname(bp_file_name))
+ return self
+
+ def try_claim_module_name(self, name, owner):
+ """Reserve and return True if it has not been reserved yet."""
+ if name not in self.name_owners or owner == self.name_owners[name]:
+ self.name_owners[name] = owner
+ return True
+ return False
def claim_module_name(self, prefix, owner, counter):
"""Return prefix if not owned yet, otherwise, prefix+str(counter)."""
while True:
name = prefix
if counter > 0:
- name += str(counter)
- if name not in self.name_owners:
- self.name_owners[name] = owner
- return name
- if owner == self.name_owners[name]:
+ name += '_' + str(counter)
+ if self.try_claim_module_name(name, owner):
return name
counter += 1
@@ -867,18 +1228,48 @@ class Runner(object):
"""Calls cargo -v and save its output to ./cargo.out."""
if self.skip_cargo:
return self
- cargo = './Cargo.toml'
- if not os.access(cargo, os.R_OK):
- print('ERROR: Cannot find or read', cargo)
+ cargo_toml = './Cargo.toml'
+ cargo_out = './cargo.out'
+ # Do not use Cargo.lock, because .bp rules are designed to
+ # run with "latest" crates avaialable on Android.
+ cargo_lock = './Cargo.lock'
+ cargo_lock_saved = './cargo.lock.saved'
+ had_cargo_lock = os.path.exists(cargo_lock)
+ if not os.access(cargo_toml, os.R_OK):
+ print('ERROR: Cannot find or read', cargo_toml)
return self
- if not self.dry_run and os.path.exists('cargo.out'):
- os.remove('cargo.out')
- cmd_tail = ' --target-dir ' + TARGET_TMP + ' >> cargo.out 2>&1'
+ if not self.dry_run:
+ if os.path.exists(cargo_out):
+ os.remove(cargo_out)
+ if not self.args.use_cargo_lock and had_cargo_lock: # save it
+ os.rename(cargo_lock, cargo_lock_saved)
+ cmd_tail = ' --target-dir ' + TARGET_TMP + ' >> ' + cargo_out + ' 2>&1'
+ # set up search PATH for cargo to find the correct rustc
+ saved_path = os.environ['PATH']
+ os.environ['PATH'] = os.path.dirname(self.cargo_path) + ':' + saved_path
+ # Add [workspace] to Cargo.toml if it is not there.
+ added_workspace = False
+ if self.args.add_workspace:
+ with open(cargo_toml, 'r') as in_file:
+ cargo_toml_lines = in_file.readlines()
+ found_workspace = '[workspace]\n' in cargo_toml_lines
+ if found_workspace:
+ print('### WARNING: found [workspace] in Cargo.toml')
+ else:
+ with open(cargo_toml, 'a') as out_file:
+ out_file.write('[workspace]\n')
+ added_workspace = True
+ if self.args.verbose:
+ print('### INFO: added [workspace] to Cargo.toml')
for c in self.cargo:
features = ''
- if self.args.features and c != 'clean':
- features = ' --features ' + self.args.features
- cmd = 'cargo -vv ' if self.args.vv else 'cargo -v '
+ if c != 'clean':
+ if self.args.features is not None:
+ features = ' --no-default-features'
+ if self.args.features:
+ features += ' --features ' + self.args.features
+ cmd_v_flag = ' -vv ' if self.args.vv else ' -v '
+ cmd = self.cargo_path + cmd_v_flag
cmd += c + features + cmd_tail
if self.args.rustflags and c != 'clean':
cmd = 'RUSTFLAGS="' + self.args.rustflags + '" ' + cmd
@@ -887,9 +1278,20 @@ class Runner(object):
else:
if self.args.verbose:
print('Running:', cmd)
- with open('cargo.out', 'a') as cargo_out:
- cargo_out.write('### Running: ' + cmd + '\n')
+ with open(cargo_out, 'a') as out_file:
+ out_file.write('### Running: ' + cmd + '\n')
os.system(cmd)
+ if added_workspace: # restore original Cargo.toml
+ with open(cargo_toml, 'w') as out_file:
+ out_file.writelines(cargo_toml_lines)
+ if self.args.verbose:
+ print('### INFO: restored original Cargo.toml')
+ os.environ['PATH'] = saved_path
+ if not self.dry_run:
+ if not had_cargo_lock: # restore to no Cargo.lock state
+ os.remove(cargo_lock)
+ elif not self.args.use_cargo_lock: # restore saved Cargo.lock
+ os.rename(cargo_lock_saved, cargo_lock)
return self
def dump_dependencies(self):
@@ -922,12 +1324,32 @@ class Runner(object):
outf.write('// ' + short_out_name(pkg, obj) + ' => ' +
short_out_name(pkg, obj2cc[obj].src) + '\n')
+ def apply_patch(self):
+ """Apply local patch file if it is given."""
+ if self.args.patch:
+ if self.dry_run:
+ print('Dry-run skip patch file:', self.args.patch)
+ else:
+ if not os.path.exists(self.args.patch):
+ self.append_to_bp('ERROR cannot find patch file: ' + self.args.patch)
+ return self
+ if self.args.verbose:
+ print('### INFO: applying local patch file:', self.args.patch)
+ os.system('patch -s --no-backup-if-mismatch ./Android.bp ' +
+ self.args.patch)
+ return self
+
def gen_bp(self):
"""Parse cargo.out and generate Android.bp files."""
if self.dry_run:
print('Dry-run skip: read', CARGO_OUT, 'write Android.bp')
elif os.path.exists(CARGO_OUT):
self.find_root_pkg()
+ if self.args.copy_out:
+ self.copy_out_files()
+ elif self.find_out_files() and self.has_used_out_dir():
+ print('WARNING: ' + self.root_pkg + ' has cargo output files; ' +
+ 'please rerun with the --copy-out flag.')
with open(CARGO_OUT, 'r') as cargo_out:
self.parse(cargo_out, 'Android.bp')
self.crates.sort(key=get_module_name)
@@ -945,6 +1367,8 @@ class Runner(object):
lib.dump()
if self.args.dependencies and self.dependencies:
self.dump_dependencies()
+ if self.errors:
+ self.append_to_bp('\n' + ERRORS_LINE + '\n' + self.errors)
return self
def add_ar_object(self, obj):
@@ -966,6 +1390,8 @@ class Runner(object):
for c in self.crates:
if c.merge(crate, 'Android.bp'):
return
+ # If not merged, decide module type and name now.
+ crate.decide_module_type()
self.crates.append(crate)
def find_warning_owners(self):
@@ -1014,11 +1440,14 @@ class Runner(object):
else:
self.add_ar_object(ARObject(self, outf_name).parse(pkg, n, line))
+ def append_to_bp(self, line):
+ self.init_bp_file('Android.bp')
+ with open('Android.bp', 'a') as outf:
+ outf.write(line)
+
def assert_empty_vv_line(self, line):
if line: # report error if line is not empty
- self.init_bp_file('Android.bp')
- with open('Android.bp', 'a') as outf:
- outf.write('ERROR -vv line: ', line)
+ self.append_to_bp('ERROR -vv line: ' + line)
return ''
def parse(self, inf, outf_name):
@@ -1046,21 +1475,44 @@ class Runner(object):
fpath = WARNING_FILE_PAT.match(line).group(1)
if fpath[0] != '/': # ignore absolute path
self.warning_files.add(fpath)
+ elif line.startswith('error: ') or line.startswith('error[E'):
+ if not self.args.ignore_cargo_errors:
+ self.errors += line
prev_warning = False
rustc_line = new_rustc
self.find_warning_owners()
-def parse_args():
+def get_parser():
"""Parse main arguments."""
parser = argparse.ArgumentParser('cargo2android')
parser.add_argument(
+ '--add_workspace',
+ action='store_true',
+ default=False,
+ help=('append [workspace] to Cargo.toml before calling cargo,' +
+ ' to treat current directory as root of package source;' +
+ ' otherwise the relative source file path in generated' +
+ ' .bp file will be from the parent directory.'))
+ parser.add_argument(
'--cargo',
action='append',
metavar='args_string',
help=('extra cargo build -v args in a string, ' +
'each --cargo flag calls cargo build -v once'))
parser.add_argument(
+ '--cargo_bin',
+ type=str,
+ help='use cargo in the cargo_bin directory instead of the prebuilt one')
+ parser.add_argument(
+ '--copy-out',
+ action='store_true',
+ default=False,
+ help=('only for root directory, ' +
+ 'copy build.rs output to ./out/* and add a genrule to copy ' +
+ './out/* to genrule output; for crates with code pattern: ' +
+ 'include!(concat!(env!("OUT_DIR"), "/<some_file>.rs"))'))
+ parser.add_argument(
'--debug',
action='store_true',
default=False,
@@ -1076,7 +1528,35 @@ def parse_args():
default=False,
help='run cargo also for a default device target')
parser.add_argument(
- '--features', type=str, help='passing features to cargo build')
+ '--features',
+ type=str,
+ help=('pass features to cargo build, ' +
+ 'empty string means no default features'))
+ parser.add_argument(
+ '--global_defaults',
+ type=str,
+ help='add a defaults name to every module')
+ parser.add_argument(
+ '--host-first-multilib',
+ action='store_true',
+ default=False,
+ help=('add a compile_multilib:"first" property ' +
+ 'to Android.bp host modules.'))
+ parser.add_argument(
+ '--ignore-cargo-errors',
+ action='store_true',
+ default=False,
+ help='do not append cargo/rustc error messages to Android.bp')
+ parser.add_argument(
+ '--no-host',
+ action='store_true',
+ default=False,
+ help='do not run cargo for the host; only for the device target')
+ parser.add_argument(
+ '--no-subdir',
+ action='store_true',
+ default=False,
+ help='do not output anything for sub-directories')
parser.add_argument(
'--onefile',
action='store_true',
@@ -1084,6 +1564,10 @@ def parse_args():
help=('output all into one ./Android.bp, default will generate ' +
'one Android.bp per Cargo.toml in subdirectories'))
parser.add_argument(
+ '--patch',
+ type=str,
+ help='apply the given patch file to generated ./Android.bp')
+ parser.add_argument(
'--run',
action='store_true',
default=False,
@@ -1100,6 +1584,25 @@ def parse_args():
default=False,
help='run cargo build --tests after normal build')
parser.add_argument(
+ '--use-cargo-lock',
+ action='store_true',
+ default=False,
+ help=('run cargo build with existing Cargo.lock ' +
+ '(used when some latest dependent crates failed)'))
+ parser.add_argument(
+ '--min-sdk-version',
+ type=str,
+ help='Minimum SDK version')
+ parser.add_argument(
+ '--apex-available',
+ nargs='*',
+ help='Mark the main library as apex_available with the given apexes.')
+ parser.add_argument(
+ '--no-test-mapping',
+ action='store_true',
+ default=False,
+ help='Do not generate a TEST_MAPPING file. Use only to speed up debugging.')
+ parser.add_argument(
'--verbose',
action='store_true',
default=False,
@@ -1109,14 +1612,56 @@ def parse_args():
action='store_true',
default=False,
help='run cargo with -vv instead of default -v')
- return parser.parse_args()
+ parser.add_argument(
+ '--dump-config-and-exit',
+ type=str,
+ help=('Dump command-line arguments (minus this flag) to a config file and exit. ' +
+ 'This is intended to help migrate from command line options to config files.'))
+ parser.add_argument(
+ '--config',
+ type=str,
+ help=('Load command-line options from the given config file. ' +
+ 'Options in this file will override those passed on the command line.'))
+ return parser
+
+
+def parse_args(parser):
+ """Parses command-line options."""
+ args = parser.parse_args()
+ # Use the values specified in a config file if one was found.
+ if args.config:
+ with open(args.config, 'r') as f:
+ config = json.load(f)
+ args_dict = vars(args)
+ for arg in config:
+ args_dict[arg.replace('-', '_')] = config[arg]
+ return args
+
+
+def dump_config(parser, args):
+ """Writes the non-default command-line options to the specified file."""
+ args_dict = vars(args)
+ # Filter out the arguments that have their default value.
+ # Also filter certain "temporary" arguments.
+ non_default_args = {}
+ for arg in args_dict:
+ if args_dict[arg] != parser.get_default(
+ arg) and arg != 'dump_config_and_exit' and arg != 'no_test_mapping':
+ non_default_args[arg.replace('_', '-')] = args_dict[arg]
+ # Write to the specified file.
+ with open(args.dump_config_and_exit, 'w') as f:
+ json.dump(non_default_args, f, indent=2, sort_keys=True)
def main():
- args = parse_args()
+ parser = get_parser()
+ args = parse_args(parser)
if not args.run: # default is dry-run
print(DRY_RUN_NOTE)
- Runner(args).run_cargo().gen_bp()
+ if args.dump_config_and_exit:
+ dump_config(parser, args)
+ else:
+ Runner(args).run_cargo().gen_bp().apply_patch().dump_test_mapping_files()
if __name__ == '__main__':
diff --git a/scripts/example_crashes.py b/scripts/example_crashes.py
index be72f8885..5d4751cfd 100755
--- a/scripts/example_crashes.py
+++ b/scripts/example_crashes.py
@@ -1,5 +1,3 @@
-#!/usr/bin/env python
-#
# Copyright (C) 2014 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
diff --git a/scripts/gdbclient.py b/scripts/gdbclient.py
index 65f21d718..61fac4000 100755
--- a/scripts/gdbclient.py
+++ b/scripts/gdbclient.py
@@ -62,6 +62,14 @@ def get_gdbserver_path(root, arch):
return path.format(root, arch, "")
+def get_lldb_path(toolchain_path):
+ for lldb_name in ['lldb.sh', 'lldb.cmd', 'lldb', 'lldb.exe']:
+ debugger_path = os.path.join(toolchain_path, "bin", lldb_name)
+ if os.path.isfile(debugger_path):
+ return debugger_path
+ return None
+
+
def get_lldb_server_path(root, clang_base, clang_version, arch):
arch = {
'arm': 'arm',
@@ -104,10 +112,14 @@ def parse_args():
"--user", nargs="?", default="root",
help="user to run commands as on the device [default: root]")
parser.add_argument(
- "--setup-forwarding", default=None, choices=["gdb", "vscode"],
- help=("Setup the gdbserver and port forwarding. Prints commands or " +
+ "--setup-forwarding", default=None,
+ choices=["gdb", "lldb", "vscode", "vscode-gdb", "vscode-lldb"],
+ help=("Setup the gdbserver/lldb-server and port forwarding. Prints commands or " +
".vscode/launch.json configuration needed to connect the debugging " +
- "client to the server."))
+ "client to the server. If 'gdb' and 'vscode-gdb' are only valid if " +
+ "'--no-lldb' is passed. 'vscode' with llbd and 'vscode-lldb' both " +
+ "require the 'vadimcn.vscode-lldb' extension. 'vscode' with '--no-lldb' " +
+ "and 'vscode-gdb' require the 'ms-vscode.cpptools' extension."))
lldb_group = parser.add_mutually_exclusive_group()
lldb_group.add_argument("--lldb", action="store_true", help="Use lldb.")
@@ -121,11 +133,11 @@ def parse_args():
def verify_device(root, device):
- name = device.get_prop("ro.product.name")
+ names = set([device.get_prop("ro.build.product"), device.get_prop("ro.product.name")])
target_device = os.environ["TARGET_PRODUCT"]
- if target_device != name:
+ if target_device not in names:
msg = "TARGET_PRODUCT ({}) does not match attached device ({})"
- sys.exit(msg.format(target_device, name))
+ sys.exit(msg.format(target_device, ", ".join(names)))
def get_remote_pid(device, process_name):
@@ -253,7 +265,27 @@ def handle_switches(args, sysroot):
return (binary_file, pid, run_cmd)
-def generate_vscode_script(gdbpath, root, sysroot, binary_name, port, dalvik_gdb_script, solib_search_path):
+def generate_vscode_lldb_script(root, sysroot, binary_name, port, solib_search_path):
+ # TODO It would be nice if we didn't need to copy this or run the
+ # gdbclient.py program manually. Doing this would probably require
+ # writing a vscode extension or modifying an existing one.
+ # TODO: https://code.visualstudio.com/api/references/vscode-api#debug and
+ # https://code.visualstudio.com/api/extension-guides/debugger-extension and
+ # https://github.com/vadimcn/vscode-lldb/blob/6b775c439992b6615e92f4938ee4e211f1b060cf/extension/pickProcess.ts#L6
+ res = {
+ "name": "(lldbclient.py) Attach {} (port: {})".format(binary_name.split("/")[-1], port),
+ "type": "lldb",
+ "request": "custom",
+ "relativePathBase": root,
+ "sourceMap": { "/b/f/w" : root, '': root, '.': root },
+ "initCommands": ['settings append target.exec-search-paths {}'.format(' '.join(solib_search_path))],
+ "targetCreateCommands": ["target create {}".format(binary_name),
+ "target modules search-paths add / {}/".format(sysroot)],
+ "processCreateCommands": ["gdb-remote {}".format(port)]
+ }
+ return json.dumps(res, indent=4)
+
+def generate_vscode_gdb_script(gdbpath, root, sysroot, binary_name, port, dalvik_gdb_script, solib_search_path):
# TODO It would be nice if we didn't need to copy this or run the
# gdbclient.py program manually. Doing this would probably require
# writing a vscode extension or modifying an existing one.
@@ -337,12 +369,15 @@ end
return gdb_commands
-def generate_lldb_script(sysroot, binary_name, port, solib_search_path):
+def generate_lldb_script(root, sysroot, binary_name, port, solib_search_path):
commands = []
commands.append(
'settings append target.exec-search-paths {}'.format(' '.join(solib_search_path)))
commands.append('target create {}'.format(binary_name))
+ # For RBE support.
+ commands.append("settings append target.source-map '/b/f/w' '{}'".format(root))
+ commands.append("settings append target.source-map '' '{}'".format(root))
commands.append('target modules search-paths add / {}/'.format(sysroot))
commands.append('gdb-remote {}'.format(port))
return '\n'.join(commands)
@@ -369,14 +404,17 @@ def generate_setup_script(debugger_path, sysroot, linker_search_dir, binary_file
"be available").format(dalvik_gdb_script))
dalvik_gdb_script = None
- if debugger == "vscode":
- return generate_vscode_script(
+ if debugger == "vscode-gdb":
+ return generate_vscode_gdb_script(
debugger_path, root, sysroot, binary_file.name, port, dalvik_gdb_script, solib_search_path)
+ if debugger == "vscode-lldb":
+ return generate_vscode_lldb_script(
+ root, sysroot, binary_file.name, port, solib_search_path)
elif debugger == "gdb":
return generate_gdb_script(root, sysroot, binary_file.name, port, dalvik_gdb_script, solib_search_path, connect_timeout)
elif debugger == 'lldb':
return generate_lldb_script(
- sysroot, binary_file.name, port, solib_search_path)
+ root, sysroot, binary_file.name, port, solib_search_path)
else:
raise Exception("Unknown debugger type " + debugger)
@@ -395,6 +433,19 @@ def do_main():
if device is None:
sys.exit("ERROR: Failed to find device.")
+ use_lldb = not args.no_lldb
+ # Error check forwarding.
+ if args.setup_forwarding:
+ if use_lldb and (args.setup_forwarding == "gdb" or args.setup_forwarding == "vscode-gdb"):
+ sys.exit("Error: --setup-forwarding={} requires '--no-lldb'.".format(
+ args.setup_forwarding))
+ elif (not use_lldb) and (args.setup_forwarding == 'lldb' or args.setup_forwarding == 'vscode-lldb'):
+ sys.exit("Error: --setup-forwarding={} requires '--lldb'.".format(
+ args.setup_forwarding))
+ # Pick what vscode-debugger type to use.
+ if args.setup_forwarding == 'vscode':
+ args.setup_forwarding = 'vscode-lldb' if use_lldb else 'vscode-gdb'
+
root = os.environ["ANDROID_BUILD_TOP"]
sysroot = os.path.join(os.environ["ANDROID_PRODUCT_OUT"], "symbols")
@@ -428,7 +479,9 @@ def do_main():
linker_search_dir = ensure_linker(device, sysroot, interp)
tracer_pid = get_tracer_pid(device, pid)
- use_lldb = args.lldb
+ if os.path.basename(__file__) == 'gdbclient.py' and not args.lldb:
+ print("gdb is deprecated in favor of lldb. "
+ "If you can't use lldb, please set --no-lldb and file a bug asap.")
if tracer_pid == 0:
cmd_prefix = args.su_cmd
if args.env:
@@ -456,14 +509,14 @@ def do_main():
remote="tcp:{}".format(args.port))
if use_lldb:
- debugger_path = os.path.join(toolchain_path, "bin", "lldb")
- debugger = 'lldb'
+ debugger_path = get_lldb_path(toolchain_path)
+ debugger = args.setup_forwarding or 'lldb'
else:
debugger_path = os.path.join(
root, "prebuilts", "gdb", platform_name, "bin", "gdb")
debugger = args.setup_forwarding or "gdb"
- # Generate a gdb script.
+ # Generate a gdb/lldb script.
setup_commands = generate_setup_script(debugger_path=debugger_path,
sysroot=sysroot,
linker_search_dir=linker_search_dir,
@@ -472,26 +525,27 @@ def do_main():
port=args.port,
debugger=debugger)
- if use_lldb or not args.setup_forwarding:
+ if not args.setup_forwarding:
# Print a newline to separate our messages from the GDB session.
print("")
# Start gdb.
gdbrunner.start_gdb(debugger_path, setup_commands, lldb=use_lldb)
else:
+ debugger_name = "lldb" if use_lldb else "gdb"
print("")
print(setup_commands)
print("")
- if args.setup_forwarding == "vscode":
+ if args.setup_forwarding == "vscode-{}".format(debugger_name):
print(textwrap.dedent("""
Paste the above json into .vscode/launch.json and start the debugger as
normal. Press enter in this terminal once debugging is finished to shutdown
the gdbserver and close all the ports."""))
else:
print(textwrap.dedent("""
- Paste the above gdb commands into the gdb frontend to setup the gdbserver
- connection. Press enter in this terminal once debugging is finished to
- shutdown the gdbserver and close all the ports."""))
+ Paste the above {name} commands into the {name} frontend to setup the
+ gdbserver connection. Press enter in this terminal once debugging is
+ finished to shutdown the gdbserver and close all the ports.""".format(name=debugger_name)))
print("")
raw_input("Press enter to shutdown gdbserver")
diff --git a/scripts/get_rust_pkg.py b/scripts/get_rust_pkg.py
new file mode 100755
index 000000000..6b402aa19
--- /dev/null
+++ b/scripts/get_rust_pkg.py
@@ -0,0 +1,446 @@
+#!/usr/bin/env python3
+#
+# Copyright (C) 2020 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Fetch a Rust package from crates.io.
+
+Usage: get_rust_pkg.py -v syn-1.0.7
+Get the package syn-1.0.7 from crates.io and untar it into ./syn-1.0.7.
+
+Usage: get_rust_pkg.py -v -o tmp syn
+Get the latest version of package syn, say 1.0.17,
+and untar it into tmp/syn-1.0.17.
+
+Usage: get_rust_pkg.py -show bindgen cxx
+Count dependent packages of bindgen and cxx.
+
+When downloading a package, its target directory should not exist,
+or the download will be skipped.
+"""
+
+import argparse
+import functools
+import json
+import os
+import re
+import shutil
+import sys
+import tarfile
+import tempfile
+import urllib.request
+
+PKG_VERSION_PATTERN = r"(.*)-([0-9]+\.[0-9]+\.[0-9]+.*)"
+
+PKG_VERSION_MATCHER = re.compile(PKG_VERSION_PATTERN)
+
+VERSION_PATTERN = r"([0-9]+)\.([0-9]+)\.([0-9]+)"
+
+VERSION_MATCHER = re.compile(VERSION_PATTERN)
+
+
+def parse_args():
+ """Parse main arguments."""
+ parser = argparse.ArgumentParser("get_rust_pkg")
+ parser.add_argument(
+ "-v", action="store_true", default=False, help="echo executed commands")
+ parser.add_argument(
+ "-o", metavar="out_dir", default=".", help="output directory")
+ parser.add_argument(
+ "-add3prf", "--add3prf",
+ action="store_true",
+ default=False,
+ help="call add3prf.py to add third party review files")
+ parser.add_argument(
+ "-show", "--show",
+ action="store_true",
+ default=False,
+ help="show all default dependent packages, using crates.io api")
+ parser.add_argument(
+ dest="pkgs",
+ metavar="pkg_name",
+ nargs="+",
+ help="name of Rust package to be fetched from crates.io")
+ return parser.parse_args()
+
+
+def set2list(a_set):
+ return (" " + " ".join(sorted(a_set))) if a_set else ""
+
+
+def echo(args, msg):
+ if args.v:
+ print("INFO: {}".format(msg), flush=True)
+
+
+def echo_all_deps(args, kind, deps):
+ if args.v and deps:
+ print("INFO: now {} in {}:{}".format(len(deps), kind, set2list(deps)))
+
+
+def pkg_base_name(pkg):
+ match = PKG_VERSION_MATCHER.match(pkg)
+ if match is not None:
+ return (match.group(1), match.group(2))
+ else:
+ return (pkg, "")
+
+
+def get_version_numbers(version):
+ match = VERSION_MATCHER.match(version)
+ if match is not None:
+ return tuple(int(match.group(i)) for i in range(1, 4))
+ return (0, 0, 0)
+
+
+def is_newer_version(args, prev_version, prev_id, check_version, check_id):
+ """Return true if check_version+id is newer than prev_version+id."""
+ echo(args, "checking version={} id={}".format(check_version, check_id))
+ return ((get_version_numbers(check_version), check_id) >
+ (get_version_numbers(prev_version), prev_id))
+
+
+def get_max_version(pkg):
+ """Ask crates.io for a pkg's latest version."""
+ url = "https://crates.io/api/v1/crates/" + pkg
+ with urllib.request.urlopen(url) as request:
+ data = json.loads(request.read().decode())
+ return data["crate"]["max_version"]
+
+
+def find_dl_path(args, name):
+ """Ask crates.io for the latest version download path."""
+ base_name, version = pkg_base_name(name)
+ if not version:
+ version = get_max_version(name)
+ url = "https://crates.io/api/v1/crates/{}/{}".format(base_name, version)
+ echo(args, "try to get dl_path from {}".format(url))
+ with urllib.request.urlopen(url) as request:
+ data = json.loads(request.read().decode())
+ if "version" not in data or "dl_path" not in data["version"]:
+ print("ERROR: cannot find version {} of package {}".format(
+ version, base_name))
+ return None
+ echo(args, "found download path for version {}".format(version))
+ return data["version"]["dl_path"]
+
+
+def fetch_pkg(args, pkg, dl_path):
+ """Fetch package from crates.io and untar it into a subdirectory."""
+ if not dl_path:
+ print("ERROR: cannot find download path for '{}'".format(pkg))
+ return False
+ url = "https://crates.io" + dl_path
+ tmp_dir = tempfile.mkdtemp()
+ echo(args, "fetch tar file from {}".format(url))
+ tar_file, _ = urllib.request.urlretrieve(url)
+ with tarfile.open(tar_file, mode="r") as tfile:
+ echo(args, "extract tar file {} into {}".format(tar_file, tmp_dir))
+ tfile.extractall(tmp_dir)
+ files = os.listdir(tmp_dir)
+ # There should be only one directory in the tar file,
+ # but it might not be (name + "-" + version)
+ pkg_tmp_dir = os.path.join(tmp_dir, files[0])
+ echo(args, "untared package in {}".format(pkg_tmp_dir))
+ dest_dir = os.path.join(args.o, files[0])
+ if os.path.exists(dest_dir):
+ print("ERROR: do not overwrite existing {}".format(dest_dir))
+ return False # leave tar_file and tmp_dir
+ else:
+ echo(args, "move {} to {}".format(pkg_tmp_dir, dest_dir))
+ shutil.move(pkg_tmp_dir, dest_dir)
+ echo(args, "delete downloaded tar file {}".format(tar_file))
+ os.remove(tar_file)
+ echo(args, "delete temp directory {}".format(tmp_dir))
+ shutil.rmtree(tmp_dir)
+ print("SUCCESS: downloaded package to '{}'".format(dest_dir))
+ if args.add3prf:
+ echo(args, "Calling add3prf.py in {}".format(dest_dir))
+ cwd = os.getcwd()
+ os.chdir(dest_dir)
+ os.system("add3prf.py")
+ os.chdir(cwd)
+ return True
+
+
+def get_crate_dependencies(args, pkg):
+ """Ask crates.io for pkg's dependencies."""
+ echo(args, "Ask crates.io for {} ...".format(pkg))
+ try:
+ url = "https://crates.io/api/v1/crates/{}/{}/dependencies".format(
+ pkg, get_max_version(pkg))
+ with urllib.request.urlopen(url) as request:
+ data = json.loads(request.read().decode())
+ except urllib.error.HTTPError:
+ print("ERROR: failed to find {}".format(pkg))
+ return False, None, None
+ build_deps = set()
+ dev_deps = set()
+ for crate in data["dependencies"]:
+ if not crate["optional"]: # some package has a lot of optional features
+ # dev_deps is a super set of build_deps
+ dev_deps.add(crate["crate_id"])
+ if crate["kind"] != "dev":
+ build_deps.add(crate["crate_id"])
+ return True, build_deps, dev_deps
+
+
+def compare_pkg_deps(pkg1, pkg2):
+ """Compare dependency order of pkg1 and pkg2."""
+ base1, build_deps1, dev_deps1 = pkg1
+ base2, build_deps2, dev_deps2 = pkg2
+ # Some pkg1 can be build-dependent (non-dev-dependent) on pkg2,
+ # when pkg2 is only test-dependent (dev-dependent) on pkg1.
+ # This is not really a build dependency cycle, because pkg2
+ # can be built before pkg1, but tested after pkg1.
+ # So the dependency order is based on build_deps first, and then dev_deps.
+ if base1 in build_deps2:
+ return -1 # pkg2 needs base1
+ if base2 in build_deps1:
+ return 1 # pkg1 needs base2
+ if base1 in dev_deps2:
+ return -1 # pkg2 needs base1
+ if base2 in dev_deps1:
+ return 1 # pkg1 needs base2
+ # If there is no dependency between pkg1 and pkg2,
+ # order them by the size of build_deps or dev_deps, or the name.
+ count1 = (len(build_deps1), len(dev_deps1), base1)
+ count2 = (len(build_deps2), len(dev_deps2), base2)
+ if count1 != count2:
+ return -1 if count1 < count2 else 1
+ return 0
+
+
+def sort_found_pkgs(tuples):
+ """A topological sort of tuples based on build_deps."""
+ # tuples is a list of (base_name, build_deps, dev_deps)
+
+ # Use build_deps as the dependency relation in a topological sort.
+ # The new_tuples list is used in topological sort. It is the input tuples
+ # prefixed with a changing build_deps during the sorting process.
+ # Collect all package base names.
+ # Dependent packages not found in all_base_names will be treated as
+ # "external" and ignored in topological sort.
+ all_base_names = set(map(lambda t: t[0], tuples))
+ new_tuples = []
+ all_names = set()
+ for (base_name, build_deps, dev_deps) in tuples:
+ new_tuples.append((build_deps, (base_name, build_deps, dev_deps)))
+ all_names = all_names.union(build_deps)
+ external_names = all_names.difference(all_base_names)
+ new_tuples = list(
+ map(lambda t: (t[0].difference(external_names), t[1]), new_tuples))
+
+ sorted_tuples = []
+ # A brute force topological sort;
+ # tuples with empty build_deps are put before the others.
+ while new_tuples:
+ first_group = list(filter(lambda t: not t[0], new_tuples))
+ other_group = list(filter(lambda t: t[0], new_tuples))
+ new_tuples = []
+ if first_group:
+ # Remove the extra build_deps in first_group,
+ # then sort it, and add its tuples to the sorted_tuples list.
+ first_group = list(map(lambda t: t[1], first_group))
+ first_group.sort(key=functools.cmp_to_key(compare_pkg_deps))
+ sorted_tuples.extend(first_group)
+ # Copy other_group to new_tuples but remove names in the first_group.
+ base_names = set(map(lambda t: t[0], first_group))
+ new_tuples = list(
+ map(lambda t: (t[0].difference(base_names), t[1]), other_group))
+ else:
+ # There is a bug, or a cycle in the build_deps.
+ # If we include all optional dependent packages into build_deps,
+ # we will see one cycle: futures-util has an optional dependent
+ # on futures, which has a normal dependent on futures-util.
+ print("ERROR: leftover in topological sort: {}".format(
+ list(map(lambda t: t[1][1], other_group))))
+ # Anyway, sort the other_group to include them into final report.
+ other_group = list(map(lambda t: t[1], other_group))
+ other_group.sort(key=functools.cmp_to_key(compare_pkg_deps))
+ sorted_tuples.extend(other_group)
+ return sorted_tuples
+
+
+def show_all_dependencies(args, found_pkgs):
+ """Topological sort found_pkgs and report number of dependent packages."""
+ found_pkgs = sort_found_pkgs(found_pkgs)
+ max_length = functools.reduce(lambda a, t: max(a, len(t[0])), found_pkgs, 1)
+ name_format = "{:" + str(max_length) + "s}"
+ print("\n##### Summary of all dependent package counts #####")
+ pattern = "{:>9s}_deps[k] = # of {}dependent packages of {}"
+ for (prefix, suffix) in [(" ", "pkg[k]"), ("all_", "pkg[1] to pkg[k]")]:
+ for (name, kind) in [("build", "non-dev-"), ("dev", "all ")]:
+ print(pattern.format(prefix + name, kind, suffix))
+ print(("{:>4s} " + name_format + " {:>10s} {:>10s} {:>14s} {:>14s}").format(
+ "k", "pkg", "build_deps", "dev_deps", "all_build_deps", "all_dev_deps"))
+ all_pkgs = set()
+ all_build_deps = set()
+ all_dev_deps = set()
+ k = 0
+ prev_all_build_deps = set()
+ prev_all_dev_deps = set()
+ for (pkg, build_deps, dev_deps) in found_pkgs:
+ all_pkgs.add(pkg)
+ all_build_deps = all_build_deps.union(build_deps).difference(all_pkgs)
+ all_dev_deps = all_dev_deps.union(dev_deps).difference(all_pkgs)
+ k += 1
+ print(("{:4d} " + name_format + " {:10d} {:10d} {:14d} {:14d}").format(
+ k, pkg, len(build_deps), len(dev_deps), len(all_build_deps),
+ len(all_dev_deps)))
+ if prev_all_build_deps != all_build_deps:
+ echo_all_deps(args, "all_build_deps", all_build_deps)
+ prev_all_build_deps = all_build_deps
+ if prev_all_dev_deps != all_dev_deps:
+ echo_all_deps(args, "all_dev_deps", all_dev_deps)
+ prev_all_dev_deps = all_dev_deps
+ print("\nNOTE: from all {} package(s):{}".format(
+ len(all_pkgs), set2list(all_pkgs)))
+ for (kind, deps) in [("non-dev-", all_build_deps), ("", all_dev_deps)]:
+ if deps:
+ print("NOTE: found {:3d} other {}dependent package(s):{}".format(
+ len(deps), kind, set2list(deps)))
+
+
+def crates_io_find_pkgs(args, pkgs, found_pkgs):
+ """Call crates.io api to find direct dependent packages."""
+ success = True
+ for pkg in sorted(pkgs):
+ ok, build_deps, dev_deps = get_crate_dependencies(args, pkg)
+ if not ok:
+ success = False
+ else:
+ found_pkgs.append((pkg, build_deps, dev_deps))
+ return success
+
+
+def add_non_dev_dependencies(args, all_deps, core_pkgs, visited, pkg):
+ """Add reachable non-dev dependencies to all_deps[pkg]'s dependencies."""
+ if pkg not in all_deps:
+ ok, build_deps, dev_deps = get_crate_dependencies(args, pkg)
+ if not ok:
+ return set()
+ all_deps[pkg] = (pkg, build_deps, dev_deps)
+ else:
+ (_, build_deps, dev_deps) = all_deps[pkg]
+ if pkg in visited:
+ return build_deps
+ visited.add(pkg)
+
+ for p in sorted(build_deps):
+ if p not in core_pkgs and pkg in core_pkgs:
+ core_pkgs.add(p)
+ deps = add_non_dev_dependencies(args, all_deps, core_pkgs, visited, p)
+ build_deps = build_deps.union(deps)
+ if pkg in core_pkgs:
+ for p in sorted(dev_deps):
+ deps = add_non_dev_dependencies(args, all_deps, core_pkgs, visited, p)
+ dev_deps = dev_deps.union(deps)
+ all_deps[pkg] = (pkg, build_deps, dev_deps)
+ return build_deps
+
+
+def add_indirect_build_deps(args, found_pkgs):
+ """Add all indirect dependencies and return a new found_pkgs."""
+ all_deps = dict(map(lambda t: (t[0], t), found_pkgs))
+ core_pkgs = set(map(lambda t: t[0], found_pkgs))
+ dev_pkgs = set()
+ dump_pkgs(args, "BEFORE", all_deps, core_pkgs, dev_pkgs)
+ visited = set()
+ for pkg in sorted(core_pkgs):
+ add_non_dev_dependencies(args, all_deps, core_pkgs, visited, pkg)
+ # Revisit core packages to add build_deps into core_pkgs and other deps.
+ check_again = True
+ while check_again:
+ pattern = "Revisiting {} core packages:{}"
+ echo(args, pattern.format(len(core_pkgs), set2list(core_pkgs)))
+ check_again = False
+ visited = set()
+ num_core_pkgs = len(core_pkgs)
+ for pkg in sorted(core_pkgs):
+ (_, build_deps, dev_deps) = all_deps[pkg]
+ (num_build_deps, num_dev_deps) = (len(build_deps), len(dev_deps))
+ add_non_dev_dependencies(args, all_deps, core_pkgs, visited, pkg)
+ (_, build_deps, dev_deps) = all_deps[pkg]
+ (new_num_build_deps, new_num_dev_deps) = (len(build_deps), len(dev_deps))
+ # If build_deps, dev_deps, or core_pkgs was changed, check again.
+ if (num_build_deps != new_num_build_deps or
+ num_dev_deps != new_num_dev_deps or num_core_pkgs != len(core_pkgs)):
+ check_again = True
+ dev_pkgs = visited.difference(core_pkgs)
+ dump_pkgs(args, "AFTER", all_deps, core_pkgs, dev_pkgs)
+ found_pkgs = list(map(lambda p: all_deps[p], core_pkgs))
+ found_pkgs.sort(key=lambda t: t[0])
+ return found_pkgs
+
+
+def echo_dump_found_pkgs(args, msg, all_deps, pkgs):
+ if not args.v or not pkgs:
+ return
+ echo(args, msg)
+ for pkg in sorted(pkgs):
+ (_, build_deps, dev_deps) = all_deps[pkg]
+ for (name, deps) in [("normal", build_deps), ("dev", dev_deps)]:
+ pattern = " {} has {} " + name + " deps:{}"
+ echo(args, pattern.format(pkg, len(deps), set2list(deps)))
+
+
+def dump_pkgs(args, msg, all_deps, core_pkgs, dev_pkgs):
+ echo_dump_found_pkgs(args, msg + " core_pkgs:", all_deps, core_pkgs)
+ echo_dump_found_pkgs(args, msg + " other_dev_pkgs:", all_deps, dev_pkgs)
+
+
+def show_dependencies(args):
+ """Calls crates.io api to find dependent packages; returns True on success."""
+ all_pkgs = set(map(lambda p: pkg_base_name(p)[0], args.pkgs))
+ if "" in all_pkgs:
+ # TODO(chh): detect and report ill formed names in args.pkgs
+ print("WARNING: skip some ill formatted pkg arguments.")
+ all_pkgs = all_pkgs.remove("")
+ if not all_pkgs:
+ print("ERROR: no valid pkg names to show dependencies.")
+ return False
+ pkgs = sorted(all_pkgs)
+ found_pkgs = []
+ success = crates_io_find_pkgs(args, pkgs, found_pkgs)
+ if not found_pkgs:
+ return False
+ # All normal (non-dev) dependent packages will be added into found_pkgs.
+ found_pkgs = add_indirect_build_deps(args, found_pkgs)
+ show_all_dependencies(args, found_pkgs)
+ return success
+
+
+def main():
+ args = parse_args()
+ if args.show:
+ # only show dependencies, not to fetch any package
+ if not show_dependencies(args):
+ sys.exit(2)
+ return
+ echo(args, "to fetch packages = {}".format(args.pkgs))
+ success = True
+ for pkg in args.pkgs:
+ echo(args, "trying to fetch package '{}'".format(pkg))
+ try:
+ if not fetch_pkg(args, pkg, find_dl_path(args, pkg)):
+ success = False
+ except urllib.error.HTTPError:
+ print("ERROR: unknown package '{}'".format(pkg))
+ success = False
+ if not success:
+ sys.exit(1)
+
+
+if __name__ == "__main__":
+ main()
diff --git a/scripts/lldbclient.py b/scripts/lldbclient.py
new file mode 120000
index 000000000..96364a8df
--- /dev/null
+++ b/scripts/lldbclient.py
@@ -0,0 +1 @@
+gdbclient.py \ No newline at end of file
diff --git a/scripts/llvm-gcov b/scripts/llvm-gcov
new file mode 100755
index 000000000..498c724c0
--- /dev/null
+++ b/scripts/llvm-gcov
@@ -0,0 +1,3 @@
+#!/bin/bash
+# Wrapper script around 'llvm-cov gcov'.
+exec llvm-cov gcov $@
diff --git a/scripts/stack b/scripts/stack
index ef28980fc..aaa32f417 100755
--- a/scripts/stack
+++ b/scripts/stack
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
#
# Copyright (C) 2013 The Android Open Source Project
#
@@ -42,10 +42,10 @@ def main():
if args.syms:
symbol.SYMBOLS_DIR = args.syms
if args.file == '-':
- print "Reading native crash info from stdin"
+ print("Reading native crash info from stdin")
f = sys.stdin
else:
- print "Searching for native crashes in %s" % args.file
+ print("Searching for native crashes in %s" % args.file)
f = open(args.file, "r")
lines = f.readlines()
diff --git a/scripts/stack_core.py b/scripts/stack_core.py
index 977e4cb5f..3f22e3874 100755
--- a/scripts/stack_core.py
+++ b/scripts/stack_core.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
#
# Copyright (C) 2013 The Android Open Source Project
#
@@ -27,15 +27,15 @@ import example_crashes
def ConvertTrace(lines):
tracer = TraceConverter()
- print "Reading symbols from", symbol.SYMBOLS_DIR
+ print("Reading symbols from", symbol.SYMBOLS_DIR)
tracer.ConvertTrace(lines)
class TraceConverter:
- process_info_line = re.compile("(pid: [0-9]+, tid: [0-9]+.*)")
- revision_line = re.compile("(Revision: \'(.*)\')")
- signal_line = re.compile("(signal [0-9]+ \(.*\).*)")
- abort_message_line = re.compile("(Abort message: '.*')")
- thread_line = re.compile("(.*)(\-\-\- ){15}\-\-\-")
+ process_info_line = re.compile(r"(pid: [0-9]+, tid: [0-9]+.*)")
+ revision_line = re.compile(r"(Revision: '(.*)')")
+ signal_line = re.compile(r"(signal [0-9]+ \(.*\).*)")
+ abort_message_line = re.compile(r"(Abort message: '.*')")
+ thread_line = re.compile(r"(.*)(--- ){15}---")
dalvik_jni_thread_line = re.compile("(\".*\" prio=[0-9]+ tid=[0-9]+ NATIVE.*)")
dalvik_native_thread_line = re.compile("(\".*\" sysTid=[0-9]+ nice=[0-9]+.*)")
register_line = re.compile("$a")
@@ -43,14 +43,14 @@ class TraceConverter:
sanitizer_trace_line = re.compile("$a")
value_line = re.compile("$a")
code_line = re.compile("$a")
- zipinfo_central_directory_line = re.compile("Central\s+directory\s+entry")
+ zipinfo_central_directory_line = re.compile(r"Central\s+directory\s+entry")
zipinfo_central_info_match = re.compile(
- "^\s*(\S+)$\s*offset of local header from start of archive:\s*(\d+)"
- ".*^\s*compressed size:\s+(\d+)", re.M | re.S)
- unreachable_line = re.compile("((\d+ bytes in \d+ unreachable allocations)|"+\
- "(\d+ bytes unreachable at [0-9a-f]+)|"+\
- "(referencing \d+ unreachable bytes in \d+ allocation(s)?)|"+\
- "(and \d+ similar unreachable bytes in \d+ allocation(s)?))")
+ r"^\s*(\S+)$\s*offset of local header from start of archive:\s*(\d+)"
+ r".*^\s*compressed size:\s+(\d+)", re.M | re.S)
+ unreachable_line = re.compile(r"((\d+ bytes in \d+ unreachable allocations)|"
+ r"(\d+ bytes unreachable at [0-9a-f]+)|"
+ r"(referencing \d+ unreachable bytes in \d+ allocation(s)?)|"
+ r"(and \d+ similar unreachable bytes in \d+ allocation(s)?))")
trace_lines = []
value_lines = []
last_frame = -1
@@ -89,35 +89,35 @@ class TraceConverter:
# 03-25 00:51:05.520 I/DEBUG ( 65): #00 pc 001cf42e /data/data/com.my.project/lib/libmyproject.so
# Please note the spacing differences.
self.trace_line = re.compile(
- ".*" # Random start stuff.
- "\#(?P<frame>[0-9]+)" # Frame number.
- "[ \t]+..[ \t]+" # (space)pc(space).
- "(?P<offset>[0-9a-f]" + self.width + ")[ \t]+" # Offset (hex number given without
- # 0x prefix).
- "(?P<dso>\[[^\]]+\]|[^\r\n \t]*)" # Library name.
- "( \(offset (?P<so_offset>0x[0-9a-fA-F]+)\))?" # Offset into the file to find the start of the shared so.
- "(?P<symbolpresent> \((?P<symbol>.*)\))?") # Is the symbol there?
- # pylint: disable-msg=C6310
+ r".*" # Random start stuff.
+ r"\#(?P<frame>[0-9]+)" # Frame number.
+ r"[ \t]+..[ \t]+" # (space)pc(space).
+ r"(?P<offset>[0-9a-f]" + self.width + ")[ \t]+" # Offset (hex number given without
+ # 0x prefix).
+ r"(?P<dso>\[[^\]]+\]|[^\r\n \t]*)" # Library name.
+ r"( \(offset (?P<so_offset>0x[0-9a-fA-F]+)\))?" # Offset into the file to find the start of the shared so.
+ r"(?P<symbolpresent> \((?P<symbol>.*)\))?") # Is the symbol there?
+ # pylint: disable-msg=C6310
# Sanitizer output. This is different from debuggerd output, and it is easier to handle this as
# its own regex. Example:
# 08-19 05:29:26.283 397 403 I : #0 0xb6a15237 (/system/lib/libclang_rt.asan-arm-android.so+0x4f237)
self.sanitizer_trace_line = re.compile(
- ".*" # Random start stuff.
- "\#(?P<frame>[0-9]+)" # Frame number.
- "[ \t]+0x[0-9a-f]+[ \t]+" # PC, not interesting to us.
- "\(" # Opening paren.
- "(?P<dso>[^+]+)" # Library name.
- "\+" # '+'
- "0x(?P<offset>[0-9a-f]+)" # Offset (hex number given with
- # 0x prefix).
- "\)") # Closin paren.
- # pylint: disable-msg=C6310
+ r".*" # Random start stuff.
+ r"\#(?P<frame>[0-9]+)" # Frame number.
+ r"[ \t]+0x[0-9a-f]+[ \t]+" # PC, not interesting to us.
+ r"\(" # Opening paren.
+ r"(?P<dso>[^+]+)" # Library name.
+ r"\+" # '+'
+ r"0x(?P<offset>[0-9a-f]+)" # Offset (hex number given with
+ # 0x prefix).
+ r"\)") # Closing paren.
+ # pylint: disable-msg=C6310
# Examples of matched value lines include:
# bea4170c 8018e4e9 /data/data/com.my.project/lib/libmyproject.so
# bea4170c 8018e4e9 /data/data/com.my.project/lib/libmyproject.so (symbol)
# 03-25 00:51:05.530 I/DEBUG ( 65): bea4170c 8018e4e9 /data/data/com.my.project/lib/libmyproject.so
# Again, note the spacing differences.
- self.value_line = re.compile("(.*)([0-9a-f]" + self.width + ")[ \t]+([0-9a-f]" + self.width + ")[ \t]+([^\r\n \t]*)( \((.*)\))?")
+ self.value_line = re.compile(r"(.*)([0-9a-f]" + self.width + r")[ \t]+([0-9a-f]" + self.width + r")[ \t]+([^\r\n \t]*)( \((.*)\))?")
# Lines from 'code around' sections of the output will be matched before
# value lines because otheriwse the 'code around' sections will be confused as
# value lines.
@@ -125,39 +125,35 @@ class TraceConverter:
# Examples include:
# 801cf40c ffffc4cc 00b2f2c5 00b2f1c7 00c1e1a8
# 03-25 00:51:05.530 I/DEBUG ( 65): 801cf40c ffffc4cc 00b2f2c5 00b2f1c7 00c1e1a8
- self.code_line = re.compile("(.*)[ \t]*[a-f0-9]" + self.width +
- "[ \t]*[a-f0-9]" + self.width +
- "[ \t]*[a-f0-9]" + self.width +
- "[ \t]*[a-f0-9]" + self.width +
- "[ \t]*[a-f0-9]" + self.width +
- "[ \t]*[ \r\n]") # pylint: disable-msg=C6310
+ self.code_line = re.compile(r"(.*)[ \t]*[a-f0-9]" + self.width +
+ r"[ \t]*[a-f0-9]" + self.width +
+ r"[ \t]*[a-f0-9]" + self.width +
+ r"[ \t]*[a-f0-9]" + self.width +
+ r"[ \t]*[a-f0-9]" + self.width +
+ r"[ \t]*[ \r\n]") # pylint: disable-msg=C6310
def CleanLine(self, ln):
# AndroidFeedback adds zero width spaces into its crash reports. These
# should be removed or the regular expresssions will fail to match.
- return unicode(ln, errors='ignore')
+ return ln.encode().decode(encoding='utf8', errors='ignore')
def PrintTraceLines(self, trace_lines):
"""Print back trace."""
- maxlen = max(map(lambda tl: len(tl[1]), trace_lines))
- print
- print "Stack Trace:"
- print " RELADDR " + self.spacing + "FUNCTION".ljust(maxlen) + " FILE:LINE"
+ maxlen = max(len(tl[1]) for tl in trace_lines)
+ print("\nStack Trace:")
+ print(" RELADDR " + self.spacing + "FUNCTION".ljust(maxlen) + " FILE:LINE")
for tl in self.trace_lines:
(addr, symbol_with_offset, location) = tl
- print " %8s %s %s" % (addr, symbol_with_offset.ljust(maxlen), location)
- return
+ print(" %8s %s %s" % (addr, symbol_with_offset.ljust(maxlen), location))
def PrintValueLines(self, value_lines):
"""Print stack data values."""
- maxlen = max(map(lambda tl: len(tl[2]), self.value_lines))
- print
- print "Stack Data:"
- print " ADDR " + self.spacing + "VALUE " + "FUNCTION".ljust(maxlen) + " FILE:LINE"
+ maxlen = max(len(tl[2]) for tl in self.value_lines)
+ print("\nStack Data:")
+ print(" ADDR " + self.spacing + "VALUE " + "FUNCTION".ljust(maxlen) + " FILE:LINE")
for vl in self.value_lines:
(addr, value, symbol_with_offset, location) = vl
- print " %8s %8s %s %s" % (addr, value, symbol_with_offset.ljust(maxlen), location)
- return
+ print(" %8s %8s %s %s" % (addr, value, symbol_with_offset.ljust(maxlen), location))
def PrintOutput(self, trace_lines, value_lines):
if self.trace_lines:
@@ -166,8 +162,7 @@ class TraceConverter:
self.PrintValueLines(self.value_lines)
def PrintDivider(self):
- print
- print "-----------------------------------------------------\n"
+ print("\n-----------------------------------------------------\n")
def DeleteApkTmpFiles(self):
for _, _, tmp_files in self.apk_info.values():
@@ -175,7 +170,7 @@ class TraceConverter:
os.unlink(tmp_file)
def ConvertTrace(self, lines):
- lines = map(self.CleanLine, lines)
+ lines = [self.CleanLine(line) for line in lines]
try:
if not symbol.ARCH:
symbol.SetAbi(lines)
@@ -252,18 +247,18 @@ class TraceConverter:
return None, None
if not "ANDROID_PRODUCT_OUT" in os.environ:
- print "ANDROID_PRODUCT_OUT environment variable not set."
+ print("ANDROID_PRODUCT_OUT environment variable not set.")
return None, None
out_dir = os.environ["ANDROID_PRODUCT_OUT"]
if not os.path.exists(out_dir):
- print "ANDROID_PRODUCT_OUT " + out_dir + " does not exist."
+ print("ANDROID_PRODUCT_OUT", out_dir, "does not exist.")
return None, None
if apk.startswith("/"):
apk_full_path = out_dir + apk
else:
apk_full_path = os.path.join(out_dir, apk)
if not os.path.exists(apk_full_path):
- print "Cannot find apk " + apk;
+ print("Cannot find apk", apk)
return None, None
cmd = subprocess.Popen(["zipinfo", "-v", apk_full_path], stdout=subprocess.PIPE)
@@ -322,23 +317,23 @@ class TraceConverter:
self.value_lines = []
self.last_frame = -1
if process_header:
- print process_header.group(1)
+ print(process_header.group(1))
if signal_header:
- print signal_header.group(1)
+ print(signal_header.group(1))
if abort_message_header:
- print abort_message_header.group(1)
+ print(abort_message_header.group(1))
if register_header:
- print register_header.group(1)
+ print(register_header.group(1))
if thread_header:
- print thread_header.group(1)
+ print(thread_header.group(1))
if dalvik_jni_thread_header:
- print dalvik_jni_thread_header.group(1)
+ print(dalvik_jni_thread_header.group(1))
if dalvik_native_thread_header:
- print dalvik_native_thread_header.group(1)
+ print(dalvik_native_thread_header.group(1))
if revision_header:
- print revision_header.group(1)
+ print(revision_header.group(1))
if unreachable_header:
- print unreachable_header.group(1)
+ print(unreachable_header.group(1))
return True
trace_line_dict = self.MatchTraceLine(line)
if trace_line_dict is not None:
@@ -391,6 +386,17 @@ class TraceConverter:
lib = area
lib_name = None
+ # When using atest, test paths are different between the out/ directory
+ # and device. Apply fixups.
+ if lib.startswith("/data/local/tests/") or lib.startswith("/data/local/tmp/"):
+ test_name = lib.rsplit("/", 1)[-1]
+ prefix = "/data/nativetest"
+ if symbol.ARCH.endswith("64"):
+ prefix += "64"
+ if lib.startswith("/data/local/tests/vendor/"):
+ prefix += "/vendor"
+ lib = prefix + "/" + test_name + "/" + test_name
+
# If a calls b which further calls c and c is inlined to b, we want to
# display "a -> b -> c" in the stack trace instead of just "a -> c"
info = symbol.SymbolInformation(lib, code_addr)
@@ -459,7 +465,7 @@ class RegisterPatternTests(unittest.TestCase):
tc.ProcessLine(line)
is_register = (re.search(stupid_pattern, line) is not None)
matched = (tc.register_line.search(line) is not None)
- self.assertEquals(matched, is_register, line)
+ self.assertEqual(matched, is_register, line)
tc.PrintOutput(tc.trace_lines, tc.value_lines)
def test_arm_registers(self):
@@ -486,7 +492,7 @@ class LibmemunreachablePatternTests(unittest.TestCase):
lines = example_crashes.libmemunreachable.split('\n')
symbol.SetAbi(lines)
- self.assertEquals(symbol.ARCH, "arm")
+ self.assertEqual(symbol.ARCH, "arm")
tc.UpdateAbiRegexes()
header_lines = 0
@@ -497,8 +503,8 @@ class LibmemunreachablePatternTests(unittest.TestCase):
header_lines += 1
if tc.MatchTraceLine(line) is not None:
trace_lines += 1
- self.assertEquals(header_lines, 3)
- self.assertEquals(trace_lines, 2)
+ self.assertEqual(header_lines, 3)
+ self.assertEqual(trace_lines, 2)
tc.PrintOutput(tc.trace_lines, tc.value_lines)
class LongASANStackTests(unittest.TestCase):
@@ -531,4 +537,4 @@ class ValueLinesTest(unittest.TestCase):
self.assertEqual([], tc.value_lines)
if __name__ == '__main__':
- unittest.main()
+ unittest.main(verbosity=2)
diff --git a/scripts/symbol.py b/scripts/symbol.py
index e6560e42d..360a2cbc3 100755
--- a/scripts/symbol.py
+++ b/scripts/symbol.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python3
#
# Copyright (C) 2013 The Android Open Source Project
#
@@ -28,12 +28,7 @@ import signal
import subprocess
import unittest
-try:
- ANDROID_BUILD_TOP = str(os.environ["ANDROID_BUILD_TOP"])
- if not ANDROID_BUILD_TOP:
- ANDROID_BUILD_TOP = "."
-except:
- ANDROID_BUILD_TOP = "."
+ANDROID_BUILD_TOP = os.environ.get("ANDROID_BUILD_TOP", ".")
def FindSymbolsDir():
saveddir = os.getcwd()
@@ -41,8 +36,8 @@ def FindSymbolsDir():
stream = None
try:
cmd = "build/soong/soong_ui.bash --dumpvar-mode --abs TARGET_OUT_UNSTRIPPED"
- stream = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True).stdout
- return os.path.join(ANDROID_BUILD_TOP, str(stream.read().strip()))
+ stream = subprocess.Popen(cmd, stdout=subprocess.PIPE, universal_newlines=True, shell=True).stdout
+ return str(stream.read().strip())
finally:
if stream is not None:
stream.close()
@@ -56,6 +51,7 @@ ARCH = None
# These are private. Do not access them from other modules.
_CACHED_TOOLCHAIN = None
_CACHED_TOOLCHAIN_ARCH = None
+_CACHED_CXX_FILT = None
# Caches for symbolized information.
_SYMBOL_INFORMATION_ADDR2LINE_CACHE = {}
@@ -95,7 +91,7 @@ class ProcessCache:
return pipe
def SpawnProcess(self, cmd):
- return subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
+ return subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, universal_newlines=True)
def TerminateProcess(self, pipe):
pipe.stdin.close()
@@ -139,40 +135,23 @@ def ToolPath(tool, toolchain=None):
"""Return a fully-qualified path to the specified tool"""
if not toolchain:
toolchain = FindToolchain()
- return glob.glob(os.path.join(toolchain, "*-" + tool))[0]
+ return os.path.join(toolchain, tool)
def FindToolchain():
"""Returns the toolchain matching ARCH."""
+
global _CACHED_TOOLCHAIN, _CACHED_TOOLCHAIN_ARCH
if _CACHED_TOOLCHAIN is not None and _CACHED_TOOLCHAIN_ARCH == ARCH:
return _CACHED_TOOLCHAIN
- # We use slightly different names from GCC, and there's only one toolchain
- # for x86/x86_64. Note that these are the names of the top-level directory
- # rather than the _different_ names used lower down the directory hierarchy!
- gcc_dir = ARCH
- if gcc_dir == "arm64":
- gcc_dir = "aarch64"
- elif gcc_dir == "mips64":
- gcc_dir = "mips"
- elif gcc_dir == "x86_64":
- gcc_dir = "x86"
-
- os_name = platform.system().lower();
-
- available_toolchains = glob.glob("%s/prebuilts/gcc/%s-x86/%s/*-linux-*/bin/" % (ANDROID_BUILD_TOP, os_name, gcc_dir))
- if len(available_toolchains) == 0:
- raise Exception("Could not find tool chain for %s" % (ARCH))
-
- toolchain = sorted(available_toolchains)[-1]
+ llvm_binutils_dir = ANDROID_BUILD_TOP + "/prebuilts/clang/host/linux-x86/llvm-binutils-stable/";
+ if not os.path.exists(llvm_binutils_dir):
+ raise Exception("Could not find llvm tool chain directory %s" % (llvm_binutils_dir))
- if not os.path.exists(ToolPath("addr2line", toolchain)):
- raise Exception("No addr2line for %s" % (toolchain))
-
- _CACHED_TOOLCHAIN = toolchain
+ _CACHED_TOOLCHAIN = llvm_binutils_dir
_CACHED_TOOLCHAIN_ARCH = ARCH
- print("Using %s toolchain from: %s" % (_CACHED_TOOLCHAIN_ARCH, _CACHED_TOOLCHAIN))
+ print("Using", _CACHED_TOOLCHAIN_ARCH, "toolchain from:", _CACHED_TOOLCHAIN)
return _CACHED_TOOLCHAIN
@@ -222,7 +201,7 @@ def SymbolInformationForSet(lib, unique_addrs):
if not lib:
return None
- addr_to_line = CallAddr2LineForSet(lib, unique_addrs)
+ addr_to_line = CallLlvmSymbolizerForSet(lib, unique_addrs)
if not addr_to_line:
return None
@@ -247,7 +226,7 @@ def SymbolInformationForSet(lib, unique_addrs):
return result
-def CallAddr2LineForSet(lib, unique_addrs):
+def CallLlvmSymbolizerForSet(lib, unique_addrs):
"""Look up line and symbol information for a set of addresses.
Args:
@@ -298,8 +277,8 @@ def CallAddr2LineForSet(lib, unique_addrs):
if os.path.isdir(symbols):
return None
- cmd = [ToolPath("addr2line"), "--functions", "--inlines",
- "--demangle", "--exe=" + symbols]
+ cmd = [ToolPath("llvm-symbolizer"), "--functions", "--inlines",
+ "--demangle", "--obj=" + symbols, "--output-style=GNU"]
child = _PIPE_ADDR2LINE_CACHE.GetProcess(cmd)
for addr in addrs:
@@ -310,19 +289,16 @@ def CallAddr2LineForSet(lib, unique_addrs):
first = True
while True:
symbol = child.stdout.readline().strip()
- if symbol == "??":
- symbol = None
- location = child.stdout.readline().strip()
- if location == "??:0" or location == "??:?":
- location = None
- if symbol is None and location is None:
+ if not symbol:
break
+ location = child.stdout.readline().strip()
records.append((symbol, location))
if first:
# Write a blank line as a sentinel so we know when to stop
# reading inlines from the output.
- # The blank line will cause addr2line to emit "??\n??:0\n".
+ # The blank line will cause llvm-symbolizer to emit a blank line.
child.stdin.write("\n")
+ child.stdin.flush()
first = False
except IOError as e:
# Remove the / in front of the library name to match other output.
@@ -391,7 +367,7 @@ def CallObjdumpForSet(lib, unique_addrs):
start_addr_dec = str(StripPC(int(addrs[0], 16)))
stop_addr_dec = str(StripPC(int(addrs[-1], 16)) + 8)
- cmd = [ToolPath("objdump"),
+ cmd = [ToolPath("llvm-objdump"),
"--section=.text",
"--demangle",
"--disassemble",
@@ -414,7 +390,7 @@ def CallObjdumpForSet(lib, unique_addrs):
current_symbol_addr = 0 # The address of the current function.
addr_index = 0 # The address that we are currently looking for.
- stream = subprocess.Popen(cmd, stdout=subprocess.PIPE).stdout
+ stream = subprocess.Popen(cmd, stdout=subprocess.PIPE, universal_newlines=True).stdout
for line in stream:
# Is it a function line like:
# 000177b0 <android::IBinder::~IBinder()>:
@@ -455,7 +431,17 @@ def CallCppFilt(mangled_symbol):
if mangled_symbol in _SYMBOL_DEMANGLING_CACHE:
return _SYMBOL_DEMANGLING_CACHE[mangled_symbol]
- cmd = [ToolPath("c++filt")]
+ # TODO: Replace with llvm-cxxfilt when available.
+ global _CACHED_CXX_FILT
+ if not _CACHED_CXX_FILT:
+ os_name = platform.system().lower()
+ toolchains = glob.glob("%s/prebuilts/gcc/%s-*/host/*-linux-*/bin/*c++filt" %
+ (ANDROID_BUILD_TOP, os_name))
+ if not toolchains:
+ raise Exception("Could not find gcc c++filt tool")
+ _CACHED_CXX_FILT = sorted(toolchains)[-1]
+
+ cmd = [_CACHED_CXX_FILT]
process = _PIPE_CPPFILT_CACHE.GetProcess(cmd)
process.stdin.write(mangled_symbol)
process.stdin.write("\n")
diff --git a/scripts/update_crate_tests.py b/scripts/update_crate_tests.py
new file mode 100755
index 000000000..d55cf8327
--- /dev/null
+++ b/scripts/update_crate_tests.py
@@ -0,0 +1,176 @@
+#!/usr/bin/env python3
+#
+# Copyright (C) 2020 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Add tests to TEST_MAPPING. Include tests for reverse dependencies."""
+import json
+import os
+import platform
+import subprocess
+import sys
+
+test_options = {
+ "ring_device_test_tests_digest_tests": [{"test-timeout": "600000"}],
+ "ring_device_test_src_lib": [{"test-timeout": "100000"}],
+}
+test_exclude = [
+ "aidl_test_rust_client",
+ "aidl_test_rust_service"
+ ]
+exclude_paths = [
+ "//external/adhd",
+ "//external/crosvm",
+ "//external/libchromeos-rs",
+ "//external/vm_tools"
+ ]
+
+class Env(object):
+ def __init__(self, path):
+ try:
+ self.ANDROID_BUILD_TOP = os.environ['ANDROID_BUILD_TOP']
+ except:
+ sys.exit('ERROR: this script must be run from an Android tree.')
+ if path == None:
+ self.cwd = os.getcwd()
+ else:
+ self.cwd = path
+ try:
+ self.cwd_relative = self.cwd.split(self.ANDROID_BUILD_TOP)[1]
+ self.setup = True
+ except:
+ # Mark setup as failed if a path to a rust crate is not provided.
+ self.setup = False
+
+class Bazel(object):
+ # set up the Bazel queryview
+ def __init__(self, env):
+ os.chdir(env.ANDROID_BUILD_TOP)
+ print("Building Bazel Queryview. This can take a couple of minutes...")
+ cmd = "./build/soong/soong_ui.bash --build-mode --all-modules --dir=. queryview"
+ try:
+ out = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT)
+ self.setup = True
+ except subprocess.CalledProcessError as e:
+ print("Error: Unable to update TEST_MAPPING due to the following build error:")
+ print(e.output)
+ # Mark setup as failed if the Bazel queryview fails to build.
+ self.setup = False
+ os.chdir(env.cwd)
+
+ def path(self):
+ # Only tested on Linux.
+ if platform.system() != 'Linux':
+ sys.exit('ERROR: this script has only been tested on Linux.')
+ return "/usr/bin/bazel"
+
+ # Return all modules for a given path.
+ def query_modules(self, path):
+ with open(os.devnull, 'wb') as DEVNULL:
+ cmd = self.path() + " query --config=queryview /" + path + ":all"
+ out = subprocess.check_output(cmd, shell=True, stderr=DEVNULL, text=True).strip().split("\n")
+ modules = set()
+ for line in out:
+ # speed up by excluding unused modules.
+ if "windows_x86" in line:
+ continue
+ modules.add(line)
+ return modules
+
+ # Return all reverse dependencies for a single module.
+ def query_rdeps(self, module):
+ with open(os.devnull, 'wb') as DEVNULL:
+ cmd = (self.path() + " query --config=queryview \'rdeps(//..., " +
+ module + ")\' --output=label_kind")
+ out = (subprocess.check_output(cmd, shell=True, stderr=DEVNULL, text=True)
+ .strip().split("\n"))
+ if '' in out:
+ out.remove('')
+ return out
+
+ def exclude_module(self, module):
+ for path in exclude_paths:
+ if module.startswith(path):
+ return True
+ return False
+
+ # Return all reverse dependency tests for modules in this package.
+ def query_rdep_tests(self, modules):
+ rdep_tests = set()
+ for module in modules:
+ for rdep in self.query_rdeps(module):
+ rule_type, tmp, mod = rdep.split(" ")
+ if rule_type == "rust_test_" or rule_type == "rust_test":
+ if self.exclude_module(mod) == False:
+ rdep_tests.add(mod.split(":")[1].split("--")[0])
+ return rdep_tests
+
+
+class Crate(object):
+ def __init__(self, path, bazel):
+ self.modules = bazel.query_modules(path)
+ self.rdep_tests = bazel.query_rdep_tests(self.modules)
+
+ def get_rdep_tests(self):
+ return self.rdep_tests
+
+
+class TestMapping(object):
+ def __init__(self, path):
+ self.env = Env(path)
+ self.bazel = Bazel(self.env)
+
+ def create_test_mapping(self, path):
+ if self.env.setup == False or self.bazel.setup == False:
+ return
+ tests = self.get_tests(path)
+ if not bool(tests):
+ return
+ test_mapping = self.tests_to_mapping(tests)
+ self.write_test_mapping(test_mapping)
+
+ def get_tests(self, path):
+ # for each path collect local Rust modules.
+ if path is not None and path != "":
+ return Crate(self.env.cwd_relative + "/" + path, self.bazel).get_rdep_tests()
+ else:
+ return Crate(self.env.cwd_relative, self.bazel).get_rdep_tests()
+
+ def tests_to_mapping(self, tests):
+ test_mapping = {"presubmit": []}
+ for test in tests:
+ if test in test_exclude:
+ continue
+ if test in test_options:
+ test_mapping["presubmit"].append({"name": test, "options": test_options[test]})
+ else:
+ test_mapping["presubmit"].append({"name": test})
+ test_mapping["presubmit"] = sorted(test_mapping["presubmit"], key=lambda t: t["name"])
+ return test_mapping
+
+ def write_test_mapping(self, test_mapping):
+ with open("TEST_MAPPING", "w") as json_file:
+ json_file.write("// Generated by update_crate_tests.py for tests that depend on this crate.\n")
+ json.dump(test_mapping, json_file, indent=2, separators=(',', ': '), sort_keys=True)
+ json_file.write("\n")
+ print("TEST_MAPPING successfully updated!")
+
+def main():
+ if len(sys.argv) == 2:
+ path = sys.argv[1]
+ else:
+ path = None
+ TestMapping(path).create_test_mapping(None)
+
+if __name__ == '__main__':
+ main()
diff --git a/sdk/Android.bp b/sdk/Android.bp
index 0b1a31865..d2cd3e08a 100644
--- a/sdk/Android.bp
+++ b/sdk/Android.bp
@@ -1,3 +1,16 @@
+package {
+ // See: http://go/android-license-faq
+ // A large-scale-change added 'default_applicable_licenses' to import
+ // all of the 'license_kinds' from "development_license"
+ // to get the below license kinds:
+ // SPDX-license-identifier-BSD
+ // SPDX-license-identifier-CPL-1.0
+ // SPDX-license-identifier-MIT
+ // SPDX-license-identifier-Unicode-DFS
+ // SPDX-license-identifier-W3C
+ default_applicable_licenses: ["development_license"],
+}
+
genrule {
name: "platform_tools_version",
cmd: "sed 's/$${PLATFORM_SDK_VERSION}/0/ ; s/^Pkg.Revision=\\(.*\\)/#define PLATFORM_TOOLS_VERSION \"\\1\"/p ; d' $(in) > $(out)",
diff --git a/sdk/build_tools_source.prop_template b/sdk/build_tools_source.prop_template
index fb40467c8..83bf78d20 100644
--- a/sdk/build_tools_source.prop_template
+++ b/sdk/build_tools_source.prop_template
@@ -1,3 +1,3 @@
Pkg.UserSrc=false
-Pkg.Revision=${PLATFORM_SDK_VERSION}.0.3
-#Pkg.Revision=30.0.0 rc4
+Pkg.Revision=${PLATFORM_SDK_VERSION}.0.0
+#Pkg.Revision=31.0.0 rc5
diff --git a/sdk/plat_tools_source.prop_template b/sdk/plat_tools_source.prop_template
index f9c5398be..cdbfd93b1 100644
--- a/sdk/plat_tools_source.prop_template
+++ b/sdk/plat_tools_source.prop_template
@@ -1,2 +1,2 @@
Pkg.UserSrc=false
-Pkg.Revision=29.0.6
+Pkg.Revision=31.0.2
diff --git a/sdk/platform_source.prop_template b/sdk/platform_source.prop_template
index 9dc99a0a1..35a00af81 100644
--- a/sdk/platform_source.prop_template
+++ b/sdk/platform_source.prop_template
@@ -2,7 +2,7 @@ Pkg.Desc=Android SDK Platform ${PLATFORM_VERSION}
Pkg.UserSrc=false
Platform.Version=${PLATFORM_VERSION}
Platform.CodeName=
-Pkg.Revision=3
+Pkg.Revision=1
AndroidVersion.ApiLevel=${PLATFORM_SDK_VERSION}
AndroidVersion.CodeName=${PLATFORM_VERSION_CODENAME}
Layoutlib.Api=15
diff --git a/sdk/sdk_files_NOTICE.txt b/sdk/sdk_files_NOTICE.txt
index 4bb35b57f..7e9633f78 100644
--- a/sdk/sdk_files_NOTICE.txt
+++ b/sdk/sdk_files_NOTICE.txt
@@ -9738,7 +9738,6 @@ Notices for file(s):
/bin/aapt
/bin/aidl
/bin/dexdump
-/bin/dx
/bin/jasmin
/bin/split-select
/framework/android-mock-generatorlib.jar
diff --git a/sys-img/OWNERS b/sys-img/OWNERS
index 434450475..5bf4e9457 100644
--- a/sys-img/OWNERS
+++ b/sys-img/OWNERS
@@ -1,2 +1,4 @@
bohu@google.com
-huanr@google.com
+rajukulkarni@google.com
+lfy@google.com
+jainne@google.com
diff --git a/sys-img/images_arm64-v8a_source.prop_template b/sys-img/images_arm64-v8a_source.prop_template
index 54f52d56e..e553746a5 100644
--- a/sys-img/images_arm64-v8a_source.prop_template
+++ b/sys-img/images_arm64-v8a_source.prop_template
@@ -1,6 +1,7 @@
Pkg.Desc=Android SDK System Image
Pkg.UserSrc=false
-Pkg.Revision=1
+Pkg.Revision=2
+Pkg.Dependencies=emulator#29.1.11
AndroidVersion.ApiLevel=${PLATFORM_SDK_VERSION}
AndroidVersion.CodeName=${PLATFORM_VERSION_CODENAME}
SystemImage.Abi=arm64-v8a
diff --git a/sys-img/images_armeabi-v7a_source.prop_template b/sys-img/images_armeabi-v7a_source.prop_template
index eb6837457..2851d28fb 100644
--- a/sys-img/images_armeabi-v7a_source.prop_template
+++ b/sys-img/images_armeabi-v7a_source.prop_template
@@ -1,7 +1,7 @@
Pkg.Desc=Android SDK System Image
Pkg.UserSrc=false
-Pkg.Revision=1
-Pkg.Dependencies=emulator#28.1.9
+Pkg.Revision=2
+Pkg.Dependencies=emulator#29.1.11
AndroidVersion.ApiLevel=${PLATFORM_SDK_VERSION}
AndroidVersion.CodeName=${PLATFORM_VERSION_CODENAME}
SystemImage.Abi=armeabi-v7a
diff --git a/sys-img/images_armeabi_source.prop_template b/sys-img/images_armeabi_source.prop_template
index cd926d095..fb4e8088b 100644
--- a/sys-img/images_armeabi_source.prop_template
+++ b/sys-img/images_armeabi_source.prop_template
@@ -1,7 +1,7 @@
Pkg.Desc=Android SDK System Image
Pkg.UserSrc=false
-Pkg.Revision=1
-Pkg.Dependencies=emulator#28.1.9
+Pkg.Revision=2
+Pkg.Dependencies=emulator#29.1.11
AndroidVersion.ApiLevel=${PLATFORM_SDK_VERSION}
AndroidVersion.CodeName=${PLATFORM_VERSION_CODENAME}
SystemImage.Abi=armeabi
diff --git a/sys-img/images_x86_64_source.prop_template b/sys-img/images_x86_64_source.prop_template
index 26fdbdc9a..fe8ba6981 100644
--- a/sys-img/images_x86_64_source.prop_template
+++ b/sys-img/images_x86_64_source.prop_template
@@ -1,6 +1,6 @@
Pkg.Desc=Android SDK System Image
Pkg.UserSrc=false
-Pkg.Revision=7
+Pkg.Revision=2
Pkg.Dependencies=emulator#29.1.11
AndroidVersion.ApiLevel=${PLATFORM_SDK_VERSION}
AndroidVersion.CodeName=${PLATFORM_VERSION_CODENAME}
diff --git a/sys-img/images_x86_source.prop_template b/sys-img/images_x86_source.prop_template
index 438422b16..76daa9f48 100644
--- a/sys-img/images_x86_source.prop_template
+++ b/sys-img/images_x86_source.prop_template
@@ -1,6 +1,6 @@
Pkg.Desc=Android SDK System Image
Pkg.UserSrc=false
-Pkg.Revision=7
+Pkg.Revision=2
Pkg.Dependencies=emulator#29.1.11
AndroidVersion.ApiLevel=${PLATFORM_SDK_VERSION}
AndroidVersion.CodeName=${PLATFORM_VERSION_CODENAME}
diff --git a/testrunner/Android.mk b/testrunner/Android.mk
index d0f773db8..8c80143cd 100644
--- a/testrunner/Android.mk
+++ b/testrunner/Android.mk
@@ -10,6 +10,8 @@ LOCAL_PATH := $(call my-dir)
########################
include $(CLEAR_VARS)
LOCAL_MODULE := test_defs.xml
+LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
+LOCAL_LICENSE_CONDITIONS := notice
LOCAL_MODULE_TAGS := tests
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_PATH := $(local_target_dir)
@@ -18,6 +20,8 @@ include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := coverage_targets.xml
+LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
+LOCAL_LICENSE_CONDITIONS := notice
LOCAL_MODULE_TAGS := tests
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_PATH := $(local_target_dir)
diff --git a/testrunner/tests/Android_java.mk b/testrunner/tests/Android_java.mk
index ff9138a53..2d6ac8836 100644
--- a/testrunner/tests/Android_java.mk
+++ b/testrunner/tests/Android_java.mk
@@ -20,6 +20,8 @@ LOCAL_JAVA_LIBRARIES := foo android.test.runner
# Include all test java files.
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_PACKAGE_NAME := ApiDemosTests
+LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
+LOCAL_LICENSE_CONDITIONS := notice
LOCAL_INSTRUMENTATION_FOR := ApiDemos
LOCAL_SDK_VERSION := current
diff --git a/testrunner/tests/Android_native.mk b/testrunner/tests/Android_native.mk
index 6273ccbd8..e7ca0bf85 100644
--- a/testrunner/tests/Android_native.mk
+++ b/testrunner/tests/Android_native.mk
@@ -15,6 +15,8 @@
include $(CLEAR_VARS)
test_module := foo
LOCAL_MODULE := $(test_module)
+LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
+LOCAL_LICENSE_CONDITIONS := notice
recursive_var := $(recursive_var)
LOCAL_MODULE_TAGS := tags
LOCAL_SRC_FILES := src
diff --git a/tools/Android.bp b/tools/Android.bp
index b44c29601..4e90ee0e6 100644
--- a/tools/Android.bp
+++ b/tools/Android.bp
@@ -1 +1,11 @@
+package {
+ // See: http://go/android-license-faq
+ // A large-scale-change added 'default_applicable_licenses' to import
+ // all of the 'license_kinds' from "development_license"
+ // to get the below license kinds:
+ // SPDX-license-identifier-Apache-2.0
+ // legacy_unencumbered
+ default_applicable_licenses: ["development_license"],
+}
+
subdirs = ["*"]
diff --git a/tools/apkcheck/Android.bp b/tools/apkcheck/Android.bp
index 72997b527..8c71a6339 100644
--- a/tools/apkcheck/Android.bp
+++ b/tools/apkcheck/Android.bp
@@ -12,6 +12,10 @@
// See the License for the specific language governing permissions and
// limitations under the License.
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
java_binary_host {
name: "apkcheck",
wrapper: "etc/apkcheck",
diff --git a/tools/bugreport/Android.bp b/tools/bugreport/Android.bp
index 1144516ee..34d2dfb51 100644
--- a/tools/bugreport/Android.bp
+++ b/tools/bugreport/Android.bp
@@ -1,6 +1,10 @@
// Copyright 2006 The Android Open Source Project
//
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
java_binary_host {
name: "BugReport",
wrapper: "bugreport",
diff --git a/tools/etc1tool/Android.bp b/tools/etc1tool/Android.bp
index bfde78548..35383da9d 100644
--- a/tools/etc1tool/Android.bp
+++ b/tools/etc1tool/Android.bp
@@ -3,6 +3,10 @@
// Android.mk for etc1tool
//
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
cc_binary_host {
name: "etc1tool",
diff --git a/tools/hosttestlib/src/com/android/hosttest/DeviceConnector.java b/tools/hosttestlib/src/com/android/hosttest/DeviceConnector.java
deleted file mode 100644
index 8974d71a3..000000000
--- a/tools/hosttestlib/src/com/android/hosttest/DeviceConnector.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.hosttest;
-
-import com.android.ddmlib.AndroidDebugBridge;
-import com.android.ddmlib.IDevice;
-import com.android.ddmlib.AndroidDebugBridge.IDeviceChangeListener;
-
-
-/**
- * A helper class that can connect to a ddmlib {@link IDevice}
- */
-public class DeviceConnector {
-
- /**
- * The maximum time to wait for a device to be connected.
- */
- private static final int MAX_WAIT_DEVICE_TIME = 5000;
-
- /**
- * Initializes DDMS library, and connects to specified Android device
- *
- * @param deviceSerial the device serial to connect to. If <code>null</code> connect to first
- * discovered device.
- *
- * @return the {@link IDevice} found
- * @throws IllegalArgumentException if no device cannot be found.
- */
- public IDevice connectToDevice(String deviceSerial) {
- // initialize DDMS with no clientSupport aka debugger support
- AndroidDebugBridge.init(false /* clientSupport */);
- AndroidDebugBridge adbBridge = AndroidDebugBridge.createBridge();
- for (IDevice device : adbBridge.getDevices()) {
- if (deviceSerial == null) {
- return device;
- } else if (deviceSerial.equals(device.getSerialNumber())) {
- return device;
- }
- }
- // TODO: get some sort of logger interface as param instead
- System.out.println("Waiting for device...");
- NewDeviceListener listener = new NewDeviceListener(deviceSerial);
- AndroidDebugBridge.addDeviceChangeListener(listener);
- IDevice device = listener.waitForDevice(MAX_WAIT_DEVICE_TIME);
- AndroidDebugBridge.removeDeviceChangeListener(listener);
- if (device == null) {
- throw new IllegalArgumentException("Could not connect to device");
- } else {
- System.out.println(String.format("Connected to %s", device.getSerialNumber()));
- }
- return device;
- }
-
- /**
- * Listener for new Android devices
- */
- private static class NewDeviceListener implements IDeviceChangeListener {
- private IDevice mDevice;
- private String mSerial;
-
- public NewDeviceListener(String serial) {
- mSerial = serial;
- }
-
- public void deviceChanged(IDevice device, int changeMask) {
- }
-
- public void deviceConnected(IDevice device) {
- if (mSerial == null) {
- setDevice(device);
- } else if (mSerial.equals(device.getSerialNumber())) {
- setDevice(device);
- }
- }
-
- private synchronized void setDevice(IDevice device) {
- mDevice = device;
- notify();
- }
-
- public void deviceDisconnected(IDevice device) {
- }
-
- public IDevice waitForDevice(long waitTime) {
- synchronized(this) {
- if (mDevice == null) {
- try {
- wait(waitTime);
- } catch (InterruptedException e) {
- System.out.println("Waiting for device interrupted");
- }
- }
- }
- return mDevice;
- }
- }
-}
diff --git a/tools/hosttestlib/src/com/android/hosttest/DeviceTest.java b/tools/hosttestlib/src/com/android/hosttest/DeviceTest.java
deleted file mode 100644
index a782380e4..000000000
--- a/tools/hosttestlib/src/com/android/hosttest/DeviceTest.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.hosttest;
-
-import com.android.ddmlib.IDevice;
-
-import junit.framework.Test;
-
-/**
- * Helper JUnit test that stores reference to a Android device and test data.
- */
-public interface DeviceTest extends Test {
-
- /**
- * Sets the device under test
- * @param device the Android device to test
- */
- public void setDevice(IDevice device);
-
- /**
- * Retrieves the Android device under test
- * @return the {@link IDevice} device.
- */
- public IDevice getDevice();
-
- /**
- * Retrieves host file system path that contains test app files
- * @return {@link String} containing path, or <code>null</code>
- */
- public String getTestAppPath();
-
- /**
- * Sets host file system path that contains test app files
- * @param path absolute file system path to test data files
- */
- public void setTestAppPath(String path);
-}
diff --git a/tools/hosttestlib/src/com/android/hosttest/DeviceTestCase.java b/tools/hosttestlib/src/com/android/hosttest/DeviceTestCase.java
deleted file mode 100644
index 42535d8e6..000000000
--- a/tools/hosttestlib/src/com/android/hosttest/DeviceTestCase.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.hosttest;
-
-import com.android.ddmlib.IDevice;
-
-import junit.framework.TestCase;
-
-/**
- * Helper JUnit test case that stores reference to an Android device and test data.
- *
- * Can be extended to verify an Android device's response to various adb commands.
- */
-public abstract class DeviceTestCase extends TestCase implements DeviceTest {
-
- /** Android device under test */
- private IDevice mDevice = null;
- /** optionally, used to store path to test data files */
- private String mTestDataPath = null;
-
- protected DeviceTestCase() {
- }
-
- /**
- * {@inheritDoc}
- */
- public void setDevice(IDevice device) {
- mDevice = device;
- }
-
- /**
- * {@inheritDoc}
- */
- public IDevice getDevice() {
- return mDevice;
- }
-
- /**
- * {@inheritDoc}
- */
- public String getTestAppPath() {
- return mTestDataPath;
- }
-
- /**
- * {@inheritDoc}
- */
- public void setTestAppPath(String path) {
- mTestDataPath = path;
- }
-
- @Override
- protected void setUp() throws Exception {
- // ensure device has been set before test is run
- assertNotNull(getDevice());
- }
-}
diff --git a/tools/hosttestlib/src/com/android/hosttest/DeviceTestRunner.java b/tools/hosttestlib/src/com/android/hosttest/DeviceTestRunner.java
deleted file mode 100644
index 31ba31c1a..000000000
--- a/tools/hosttestlib/src/com/android/hosttest/DeviceTestRunner.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.hosttest;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import junit.framework.Test;
-import junit.framework.TestResult;
-import junit.textui.TestRunner;
-
-import com.android.ddmlib.AndroidDebugBridge;
-import com.android.ddmlib.IDevice;
-import com.android.ddmlib.Log;
-import com.android.ddmlib.AndroidDebugBridge.IDeviceChangeListener;
-
-/**
- * Command line interface for running DeviceTest tests.
- *
- * Extends junit.textui.TestRunner to handle optional -s (device serial) and -p (test data)
- * arguments, and then pass their values to the instantiated DeviceTests.
- *
- * Provided test class must be a DeviceTest.
- *
- * @see junit.textui.TestRunner for more information on command line syntax.
- */
-public class DeviceTestRunner extends TestRunner {
-
- private static final String LOG_TAG = "DeviceTestRunner";
- private String mDeviceSerial = null;
- private IDevice mDevice = null;
- private String mTestDataPath = null;
-
- private DeviceTestRunner() {
- }
-
- /**
- * Starts the test run.
- * Extracts out DeviceTestCase specific command line arguments, then passes control to parent
- * TestRunner.
- * @param args command line arguments
- * @return {@link TestResult}
- */
- @Override
- public TestResult start(String[] args) throws Exception {
- // holds unprocessed arguments to pass to parent
- List<String> parentArgs = new ArrayList<String>();
- for (int i=0; i < args.length; i++) {
- if (args[i].equals("-s")) {
- i++;
- mDeviceSerial = extractArg(args, i);
- } else if (args[i].equals("-p")) {
- i++;
- mTestDataPath = extractArg(args, i);
- } else {
- // unrecognized arg, must be for parent
- parentArgs.add(args[i]);
- }
- }
- DeviceConnector connector = new DeviceConnector();
- mDevice = connector.connectToDevice(mDeviceSerial);
- return super.start(parentArgs.toArray(new String[parentArgs.size()]));
- }
-
- private String extractArg(String[] args, int index) {
- if (args.length <= index) {
- printUsage();
- throw new IllegalArgumentException("Error: not enough arguments");
- }
- return args[index];
- }
-
-
- /**
- * Main entry point.
- *
- * Establishes connection to provided adb device and runs tests
- *
- * @param args expects:
- * test class to run
- * optionally, device serial number. If unspecified, will connect to first device found
- * optionally, file system path to test data files
- */
- public static void main(String[] args) {
- DeviceTestRunner aTestRunner = new DeviceTestRunner();
- try {
- TestResult r = aTestRunner.start(args);
- if (!r.wasSuccessful())
- System.exit(FAILURE_EXIT);
- System.exit(SUCCESS_EXIT);
- } catch(Exception e) {
- System.err.println(e.getMessage());
- System.exit(EXCEPTION_EXIT);
- }
- }
-
- private static void printUsage() {
- System.out.println("Usage: DeviceTestRunner <test_class> [-s device_serial] " +
- "[-p test_data_path]");
- }
-
- /**
- * Override parent to set DeviceTest data
- */
- @Override
- public TestResult doRun(Test test, boolean wait) {
- if (test instanceof DeviceTest) {
- DeviceTest deviceTest = (DeviceTest)test;
- deviceTest.setDevice(mDevice);
- deviceTest.setTestAppPath(mTestDataPath);
- } else {
- Log.w(LOG_TAG, String.format("%s test class is not a DeviceTest.",
- test.getClass().getName()));
- }
- return super.doRun(test, wait);
- }
-
- /**
- * Override parent to create DeviceTestSuite wrapper, instead of TestSuite
- */
- @SuppressWarnings("unchecked")
- @Override
- protected TestResult runSingleMethod(String testCase, String method, boolean wait)
- throws Exception {
- Class testClass = loadSuiteClass(testCase);
- Test test = DeviceTestSuite.createTest(testClass, method);
- return doRun(test, wait);
- }
-}
diff --git a/tools/hosttestlib/src/com/android/hosttest/DeviceTestSuite.java b/tools/hosttestlib/src/com/android/hosttest/DeviceTestSuite.java
deleted file mode 100644
index 65bdaaafe..000000000
--- a/tools/hosttestlib/src/com/android/hosttest/DeviceTestSuite.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.hosttest;
-
-import com.android.ddmlib.IDevice;
-
-import junit.framework.Test;
-import junit.framework.TestResult;
-import junit.framework.TestSuite;
-
-/**
- * Helper JUnit test suite that stores reference to an Android device and test data.
- */
-public class DeviceTestSuite extends TestSuite implements DeviceTest {
-
- private IDevice mDevice = null;
- private String mTestDataPath = null;
-
- public DeviceTestSuite(Class testClass) {
- super(testClass);
- }
-
- public DeviceTestSuite() {
- super();
- }
-
- /**
- * Adds the tests from the given class to the suite
- */
- @Override
- public void addTestSuite(Class testClass) {
- addTest(new DeviceTestSuite(testClass));
- }
-
- /**
- * Overrides parent method to pass in device and test app path to included test
- */
- @Override
- public void runTest(Test test, TestResult result) {
- if (test instanceof DeviceTest) {
- DeviceTest deviceTest = (DeviceTest)test;
- deviceTest.setDevice(mDevice);
- deviceTest.setTestAppPath(mTestDataPath);
- }
- test.run(result);
- }
-
- /**
- * {@inheritDoc}
- */
- public IDevice getDevice() {
- return mDevice;
- }
-
- /**
- * {@inheritDoc}
- */
- public String getTestAppPath() {
- return mTestDataPath;
- }
-
- /**
- * {@inheritDoc}
- */
- public void setDevice(IDevice device) {
- mDevice = device;
- }
-
- /**
- * {@inheritDoc}
- */
- public void setTestAppPath(String path) {
- mTestDataPath = path;
- }
-}
diff --git a/tools/idegen/Android.bp b/tools/idegen/Android.bp
index 5e57fe0cd..b1aa3e47c 100644
--- a/tools/idegen/Android.bp
+++ b/tools/idegen/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
java_library_host {
name: "idegen",
srcs: ["**/*.java"],
diff --git a/tools/idegen/src/Main.java b/tools/idegen/src/Main.java
index 294dbee17..b7fb4cba3 100644
--- a/tools/idegen/src/Main.java
+++ b/tools/idegen/src/Main.java
@@ -14,20 +14,6 @@
* limitations under the License.
*/
-import java.io.File;
-import java.io.FileFilter;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.BufferedReader;
-import java.io.FileNotFoundException;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
/**
* Generates IntelliJ and Eclipse project configurations.
*/
diff --git a/tools/line_endings/Android.bp b/tools/line_endings/Android.bp
index 2e5f2e397..db0bc80b8 100644
--- a/tools/line_endings/Android.bp
+++ b/tools/line_endings/Android.bp
@@ -2,6 +2,15 @@
//
// Copies files into the directory structure described by a manifest
+package {
+ // See: http://go/android-license-faq
+ // A large-scale-change added 'default_applicable_licenses' to import
+ // all of the 'license_kinds' from "development_license"
+ // to get the below license kinds:
+ // legacy_restricted
+ default_applicable_licenses: ["development_license"],
+}
+
cc_binary_host {
name: "line_endings",
srcs: ["line_endings.c"],
diff --git a/tools/mkstubs/Android.bp b/tools/mkstubs/Android.bp
index cdc57ffa3..821539de6 100644
--- a/tools/mkstubs/Android.bp
+++ b/tools/mkstubs/Android.bp
@@ -14,6 +14,10 @@
// limitations under the License.
//
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
java_library_host {
name: "mkstubs",
srcs: ["src/**/*.java"],
diff --git a/tools/ndk/.gitignore b/tools/ndk/.gitignore
new file mode 100644
index 000000000..a81c8ee12
--- /dev/null
+++ b/tools/ndk/.gitignore
@@ -0,0 +1,138 @@
+# Byte-compiled / optimized / DLL files
+__pycache__/
+*.py[cod]
+*$py.class
+
+# C extensions
+*.so
+
+# Distribution / packaging
+.Python
+build/
+develop-eggs/
+dist/
+downloads/
+eggs/
+.eggs/
+lib/
+lib64/
+parts/
+sdist/
+var/
+wheels/
+share/python-wheels/
+*.egg-info/
+.installed.cfg
+*.egg
+MANIFEST
+
+# PyInstaller
+# Usually these files are written by a python script from a template
+# before PyInstaller builds the exe, so as to inject date/other infos into it.
+*.manifest
+*.spec
+
+# Installer logs
+pip-log.txt
+pip-delete-this-directory.txt
+
+# Unit test / coverage reports
+htmlcov/
+.tox/
+.nox/
+.coverage
+.coverage.*
+.cache
+nosetests.xml
+coverage.xml
+*.cover
+*.py,cover
+.hypothesis/
+.pytest_cache/
+cover/
+
+# Translations
+*.mo
+*.pot
+
+# Django stuff:
+*.log
+local_settings.py
+db.sqlite3
+db.sqlite3-journal
+
+# Flask stuff:
+instance/
+.webassets-cache
+
+# Scrapy stuff:
+.scrapy
+
+# Sphinx documentation
+docs/_build/
+
+# PyBuilder
+.pybuilder/
+target/
+
+# Jupyter Notebook
+.ipynb_checkpoints
+
+# IPython
+profile_default/
+ipython_config.py
+
+# pyenv
+# For a library or package, you might want to ignore these files since the code is
+# intended to run in multiple environments; otherwise, check them in:
+# .python-version
+
+# pipenv
+# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
+# However, in case of collaboration, if having platform-specific dependencies or dependencies
+# having no cross-platform support, pipenv may install dependencies that don't work, or not
+# install all needed dependencies.
+#Pipfile.lock
+
+# PEP 582; used by e.g. github.com/David-OConnor/pyflow
+__pypackages__/
+
+# Celery stuff
+celerybeat-schedule
+celerybeat.pid
+
+# SageMath parsed files
+*.sage.py
+
+# Environments
+.env
+.venv
+env/
+venv/
+ENV/
+env.bak/
+venv.bak/
+
+# Spyder project settings
+.spyderproject
+.spyproject
+
+# Rope project settings
+.ropeproject
+
+# mkdocs documentation
+/site
+
+# mypy
+.mypy_cache/
+.dmypy.json
+dmypy.json
+
+# Pyre type checker
+.pyre/
+
+# pytype static type analyzer
+.pytype/
+
+# Cython debug symbols
+cython_debug/
diff --git a/ndk/OWNERS b/tools/ndk/OWNERS
index 14a30711c..7310b199a 100644
--- a/ndk/OWNERS
+++ b/tools/ndk/OWNERS
@@ -1,3 +1,4 @@
danalbert@google.com
enh@google.com
+hhb@google.com
rprichard@google.com
diff --git a/tools/ndk/build_ndk_docs.py b/tools/ndk/build_ndk_docs.py
new file mode 100755
index 000000000..6234434da
--- /dev/null
+++ b/tools/ndk/build_ndk_docs.py
@@ -0,0 +1,85 @@
+#!/usr/bin/env python3
+#
+# Copyright (C) 2020 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+"""Generates the NDK API docs for local viewing.
+
+Note that the local docs will not exactly match the docs that are uploaded to
+devsite. The theming is different and the per-file view is not available.
+Ensure that your documentation is accessible from the module view or it will
+not be discoverable on devsite.
+"""
+import argparse
+import os
+from pathlib import Path
+import shutil
+import subprocess
+import sys
+
+THIS_DIR = Path(__file__).resolve().parent
+ANDROID_TOP = THIS_DIR.parents[2]
+
+
+def check_environment() -> None:
+ """Validates that we have everything we need from the environment."""
+ if shutil.which('doxygen') is None:
+ sys.exit('Doxygen not found. Run `sudo apt install doxygen`.')
+
+ if 'ANDROID_PRODUCT_OUT' not in os.environ:
+ sys.exit('Could not find ANDROID_PRODUCT_OUT. Run lunch.')
+
+
+def build_ndk() -> None:
+ """Builds the NDK sysroot."""
+ subprocess.run(["build/soong/soong_ui.bash", "--make-mode", "ndk"],
+ cwd=ANDROID_TOP,
+ check=True)
+
+
+def generate_docs() -> None:
+ """Generates the NDK API reference."""
+ product_out = Path(os.environ['ANDROID_PRODUCT_OUT'])
+ out_dir = product_out.parents[1] / 'common/ndk-docs'
+ html_dir = out_dir / 'html'
+ input_dir = product_out.parents[2] / 'soong/ndk/sysroot/usr/include'
+ doxyfile_template = ANDROID_TOP / 'frameworks/native/docs/Doxyfile'
+ out_dir.mkdir(parents=True, exist_ok=True)
+ doxyfile = out_dir / 'Doxyfile'
+
+ doxyfile_contents = doxyfile_template.read_text()
+ doxyfile_contents += f'\nINPUT={input_dir}\nHTML_OUTPUT={html_dir}'
+ doxyfile.write_text(doxyfile_contents)
+
+ subprocess.run(['doxygen', str(doxyfile)], cwd=ANDROID_TOP, check=True)
+ index = html_dir / 'index.html'
+ print(f'Generated NDK API documentation to {index.as_uri()}')
+
+
+def parse_args() -> argparse.Namespace:
+ """Parses command line arguments."""
+ parser = argparse.ArgumentParser(description=sys.modules[__name__].__doc__)
+ return parser.parse_args()
+
+
+def main() -> None:
+ """Program entry point."""
+ _ = parse_args()
+ check_environment()
+ build_ndk()
+ generate_docs()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/tools/privapp_permissions/privapp_permissions.py b/tools/privapp_permissions/privapp_permissions.py
index 4016573a4..6e8451c73 100755
--- a/tools/privapp_permissions/privapp_permissions.py
+++ b/tools/privapp_permissions/privapp_permissions.py
@@ -37,12 +37,19 @@ Generates privapp-permissions.xml file for priv-apps.
Usage:
Specify which apk to generate priv-app permissions for. If no apk is \
-specified, this will default to all APKs under "<ANDROID_PRODUCT_OUT>/ \
-system/priv-app".
+specified, this will default to all APKs under "<ANDROID_PRODUCT_OUT>/\
+<all the partitions>/priv-app/".
+
+ To specify a target partition(s), use "-p <PARTITION>," where <PARTITION> \
+can be "system", "product", "system/product", "system_ext", \
+"system/system_ext", "system,system/product,vendor,system_ext", etc.
+
+ When using adb, adb pull can take a long time. To see the adb pull \
+progress, use "-v"
Examples:
- For all APKs under $ANDROID_PRODUCT_OUT:
+ For all APKs under $ANDROID_PRODUCT_OUT/<all partitions>/priv-app/:
# If the build environment has not been set up, do so:
. build/envsetup.sh
lunch product_name
@@ -50,17 +57,27 @@ Examples:
# then use:
cd development/tools/privapp_permissions/
./privapp_permissions.py
+ # or to search for apks in "product" partition
+ ./privapp_permissions.py -p product
+ # or to search for apks in system, product, and vendor partitions
+ ./privapp_permissions.py -p system,product,vendor
- For a given apk:
+ For an APK against $ANDROID_PRODUCT_OUT/<all partitions>/etc/permissions/:
./privapp_permissions.py path/to/the.apk
+ # or against /product/etc/permissions/
+ ./privapp_permissions.py path/to/the.apk -p product
- For an APK already on the device:
+ For an APK already on the device against /<all partitions>/etc/permissions/:
./privapp_permissions.py device:/device/path/to/the.apk
+ # or against /product/etc/permissions/
+ ./privapp_permissions.py path/to/the.apk -p product
- For all APKs on a device:
+ For all APKs on a device under /<all partitions>/priv-app/:
./privapp_permissions.py -d
# or if more than one device is attached
- ./privapp_permissions.py -s <ANDROID_SERIAL>\
+ ./privapp_permissions.py -s <ANDROID_SERIAL>
+ # or for all APKs on the "system" partitions
+ ./privapp_permissions.py -d -p system
"""
# An array of all generated temp directories.
@@ -68,6 +85,10 @@ temp_dirs = []
# An array of all generated temp files.
temp_files = []
+def vprint(enable, message, *args):
+ if enable:
+ # Use stderr to avoid poluting print_xml result
+ sys.stderr.write(message % args + '\n')
class MissingResourceError(Exception):
"""Raised when a dependency cannot be located."""
@@ -76,9 +97,10 @@ class MissingResourceError(Exception):
class Adb(object):
"""A small wrapper around ADB calls."""
- def __init__(self, path, serial=None):
+ def __init__(self, path, serial=None, verbose=False):
self.path = path
self.serial = serial
+ self.verbose = verbose
def pull(self, src, dst=None):
"""A wrapper for `adb -s <SERIAL> pull <src> <dst>`.
@@ -96,18 +118,26 @@ class Adb(object):
else:
_, dst = tempfile.mkstemp()
temp_files.append(dst)
- self.call('pull %s %s' % (src, dst))
+ self.call('pull %s %s' % (src, dst), False, self.verbose)
return dst
- def call(self, cmdline):
+ def call(self, cmdline, getoutput=True, verbose=False):
"""Calls an adb command.
Throws:
subprocess.CalledProcessError upon command failure.
"""
command = '%s -s %s %s' % (self.path, self.serial, cmdline)
- return get_output(command)
-
+ if getoutput:
+ return get_output(command)
+ else:
+ # Handle verbose mode only when the output is not needed
+ # This is mainly for adb pull, which can take a long time
+ extracmd = ' > /dev/null 2>&1'
+ if verbose:
+ # Use stderr to avoid poluting print_xml result
+ extracmd = ' 1>&2'
+ os.system(command + extracmd)
class Aapt(object):
def __init__(self, path):
@@ -136,10 +166,17 @@ class Resources(object):
"""
def __init__(self, adb_path=None, aapt_path=None, use_device=None,
- serial=None, apks=None):
+ serial=None, partitions=None, verbose=False,
+ writetodisk=None, systemfile=None, productfile=None,
+ apks=None):
self.adb = Resources._resolve_adb(adb_path)
self.aapt = Resources._resolve_aapt(aapt_path)
+ self.verbose = self.adb.verbose = verbose
+ self.writetodisk = writetodisk
+ self.systemfile = systemfile;
+ self.productfile = productfile;
+
self._is_android_env = 'ANDROID_PRODUCT_OUT' in os.environ and \
'ANDROID_HOST_OUT' in os.environ
use_device = use_device or serial or \
@@ -156,12 +193,42 @@ class Resources(object):
'You must either set up your build environment, or specify a '
'device to run against. See --help for more info.')
- self.privapp_apks = self._resolve_apks(apks)
- self.permissions_dir = self._resolve_sys_path('system/etc/permissions')
- self.sysconfig_dir = self._resolve_sys_path('system/etc/sysconfig')
+ if apks and (partitions == "all" or partitions.find(',') != -1):
+ # override the partition to "system
+ print('\n# Defaulting the target partition to "system". '
+ 'Use -p option to specify the target partition '
+ '(must provide one target instead of a list).\n',
+ file=sys.stderr)
+ partitions = "system"
+
+ if partitions == "all":
+ # This is the default scenario
+ # Find all the partitions where priv-app exists
+ self.partitions = self._get_partitions()
+ else:
+ # Initialize self.partitions with the specified partitions
+ self.partitions = []
+ for p in partitions.split(','):
+ if p.endswith('/'):
+ p = p[:-1]
+ self.partitions.append(p)
+ # Check if the directory exists
+ self._check_dir(p + '/priv-app')
+
+ vprint(self.verbose,
+ '# Examining the partitions: ' + str(self.partitions))
+
+ # Create dictionary of array (partition as the key)
+ self.privapp_apks = self._resolve_apks(apks, self.partitions)
+ self.permissions_dirs = self._resolve_sys_paths('etc/permissions',
+ self.partitions)
+ self.sysconfig_dirs = self._resolve_sys_paths('etc/sysconfig',
+ self.partitions)
+
+ # Always use the one in /system partition,
+ # as that is the only place we will find framework-res.apk
self.framework_res_apk = self._resolve_sys_path('system/framework/'
'framework-res.apk')
-
@staticmethod
def _resolve_adb(adb_path):
"""Resolves ADB from either the cmdline argument or the os environment.
@@ -278,20 +345,75 @@ class Resources(object):
'devices.', file=sys.stderr)
raise
- def _resolve_apks(self, apks):
+ def _get_partitions(self):
+ """Find all the partitions to examine
+
+ Returns:
+ The array of partitions where priv-app exists
+ Raises:
+ MissingResourceError find command over adb shell fails.
+ """
+ if not self.adb.serial:
+ privapp_dirs = get_output('cd %s; find * -name "priv-app"'
+ % os.environ['ANDROID_PRODUCT_OUT']
+ + ' -type d | grep -v obj').split()
+ else:
+ try:
+ privapp_dirs = self.adb.call('shell find \'/!(proc)\' \
+ -name "priv-app" -type d').split()
+ except subprocess.CalledProcessError:
+ raise MissingResourceError(
+ '"adb shell find / -name priv-app -type d" did not succeed'
+ ' on device "%s".' % self.adb.serial)
+
+ # Remove 'priv-app' from the privapp_dirs
+ partitions = []
+ for i in range(len(privapp_dirs)):
+ partitions.append('/'.join(privapp_dirs[i].split('/')[:-1]))
+
+ return partitions
+
+ def _check_dir(self, directory):
+ """Check if a given directory is valid
+
+ Raises:
+ MissingResourceError if a given directory does not exist.
+ """
+ if not self.adb.serial:
+ if not os.path.isdir(os.environ['ANDROID_PRODUCT_OUT']
+ + '/' + directory):
+ raise MissingResourceError(
+ '%s does not exist' % directory)
+ else:
+ try:
+ self.adb.call('shell ls %s' % directory)
+ except subprocess.CalledProcessError:
+ raise MissingResourceError(
+ '"adb shell ls %s" did not succeed on '
+ 'device "%s".' % (directory, self.adb.serial))
+
+
+ def _resolve_apks(self, apks, partitions):
"""Resolves all APKs to run against.
Returns:
If no apk is specified in the arguments, return all apks in
- system/priv-app. Otherwise, returns a list with the specified apk.
+ priv-app in all the partitions.
+ Otherwise, returns a list with the specified apk.
Throws:
- MissingResourceError if the specified apk or system/priv-app cannot
- be found.
+ MissingResourceError if the specified apk or
+ <partition>/priv-app cannot be found.
"""
+ results = {}
if not apks:
- return self._resolve_all_privapps()
-
- ret_apks = []
+ for p in partitions:
+ results[p] = self._resolve_all_privapps(p)
+ return results
+
+ # The first element is what is passed via '-p' option
+ # (default is overwritten to 'system' when apk is specified)
+ p = partitions[0]
+ results[p] = []
for apk in apks:
if apk.startswith(DEVICE_PREFIX):
device_apk = apk[len(DEVICE_PREFIX):]
@@ -301,35 +423,48 @@ class Resources(object):
raise MissingResourceError(
'File "%s" could not be located on device "%s".' %
(device_apk, self.adb.serial))
- ret_apks.append(apk)
+ results[p].append(apk)
elif not os.path.isfile(apk):
raise MissingResourceError('File "%s" does not exist.' % apk)
else:
- ret_apks.append(apk)
- return ret_apks
+ results[p].append(apk)
+ return results
- def _resolve_all_privapps(self):
- """Extract package name and requested permissions."""
- if self._is_android_env:
+ def _resolve_all_privapps(self, partition):
+ """Resolves all APKs in <partition>/priv-app
+
+ Returns:
+ Return all apks in <partition>/priv-app
+ Throws:
+ MissingResourceError <partition>/priv-app cannot be found.
+ """
+ if not self.adb.serial:
priv_app_dir = os.path.join(os.environ['ANDROID_PRODUCT_OUT'],
- 'system/priv-app')
+ partition + '/priv-app')
else:
try:
- priv_app_dir = self.adb.pull('/system/priv-app/')
+ priv_app_dir = self.adb.pull(partition + '/priv-app/')
except subprocess.CalledProcessError:
raise MissingResourceError(
- 'Directory "/system/priv-app" could not be pulled from on '
- 'device "%s".' % self.adb.serial)
-
+ 'Directory "%s/priv-app" could not be pulled from on '
+ 'device "%s".' % (partition, self.adb.serial))
return get_output('find %s -name "*.apk"' % priv_app_dir).split()
def _resolve_sys_path(self, file_path):
"""Resolves a path that is a part of an Android System Image."""
- if self._is_android_env:
+ if not self.adb.serial:
return os.path.join(os.environ['ANDROID_PRODUCT_OUT'], file_path)
else:
return self.adb.pull(file_path)
+ def _resolve_sys_paths(self, file_path, partitions):
+ """Resolves a path that is a part of an Android System Image, for the
+ specified partitions."""
+ results = {}
+ for p in partitions:
+ results[p] = self._resolve_sys_path(p + '/' + file_path)
+ return results
+
def get_output(command):
"""Returns the output of the command as a string.
@@ -358,10 +493,19 @@ def parse_args():
'details.'
)
parser.add_argument(
+ '-v',
+ '--verbose',
+ action='store_true',
+ default=False,
+ required=False,
+ help='Whether or not to enable more verbose logs such as '
+ 'adb pull progress to be shown'
+ )
+ parser.add_argument(
'--adb',
type=str,
required=False,
- metavar='<ADB_PATH',
+ metavar='<ADB_PATH>',
help='Path to adb. If none specified, uses the environment\'s adb.'
)
parser.add_argument(
@@ -384,35 +528,109 @@ def parse_args():
'code 1. If -s is given, -d is not needed.'
)
parser.add_argument(
+ '-p',
+ '--partitions',
+ type=str,
+ required=False,
+ default='all',
+ metavar='<PARTITION>',
+ help='The target partition(s) to examine permissions for. '
+ 'It is set to "all" by default, which means all the partitions '
+ 'where priv-app diectory exists will be examined'
+ 'Use "," as a delimiter when specifying multiple partitions. '
+ 'E.g. "system,product"'
+ )
+ parser.add_argument(
'apks',
nargs='*',
type=str,
help='A list of paths to priv-app APKs to generate permissions for. '
'To make a path device-side, prefix the path with "device:".'
)
+ parser.add_argument(
+ '-w',
+ '--writetodisk',
+ action='store_true',
+ default=False,
+ required=False,
+ help='Whether or not to store the generated permissions directly to '
+ 'a file. See --systemfile/--productfile for more information.'
+ )
+ parser.add_argument(
+ '--systemfile',
+ default='./system.xml',
+ required=False,
+ help='Path to system permissions file. Default value is ./system.xml'
+ )
+ parser.add_argument(
+ '--productfile',
+ default='./product.xml',
+ required=False,
+ help='Path to system permissions file. Default value is ./product.xml'
+ )
cmd_args = parser.parse_args()
return cmd_args
def create_permission_file(resources):
+ """Prints out/creates permission file with missing permissions."""
+ # First extract privileged permissions from framework-res.apk
+ priv_permissions = extract_priv_permissions(resources.aapt,
+ resources.framework_res_apk)
+
+ results = {}
+ for p in resources.partitions:
+ results[p], apps_redefine_base = \
+ generate_missing_permissions(resources, priv_permissions, p)
+ enable_print = True
+ vprint(enable_print, '#' * 80)
+ vprint(enable_print, '#')
+ if resources.writetodisk:
+ # Check if it is likely a product partition
+ if p.endswith('product'):
+ out_file_name = resources.productfile;
+ # Check if it is a system partition
+ elif p.endswith('system'):
+ out_file_name = resources.systemfile
+ # Fallback to the partition name itself
+ else:
+ out_file_name = str(p).replace('/', '_') + '.xml'
+
+ out_file = open(out_file_name, 'w')
+ vprint(enable_print, '# %s XML written to %s:', p, out_file_name)
+ vprint(enable_print, '#')
+ vprint(enable_print, '#' * 80)
+ print_xml(results[p], apps_redefine_base, p, out_file)
+ out_file.close()
+ else:
+ vprint(enable_print, '# %s XML:', p)
+ vprint(enable_print, '#')
+ vprint(enable_print, '#' * 80)
+
+ # Print it to stdout regardless of whether writing to a file or not
+ print_xml(results[p], apps_redefine_base, p)
+
+
+def generate_missing_permissions(resources, priv_permissions, partition):
+ """Generates the missing permissions for the specified partition."""
# Parse base XML files in /etc dir, permissions listed there don't have
# to be re-added
base_permissions = {}
- base_xml_files = itertools.chain(list_xml_files(resources.permissions_dir),
- list_xml_files(resources.sysconfig_dir))
+ base_xml_files = itertools.chain(
+ list_xml_files(resources.permissions_dirs[partition]),
+ list_xml_files(resources.sysconfig_dirs[partition]))
+
for xml_file in base_xml_files:
parse_config_xml(xml_file, base_permissions)
- priv_permissions = extract_priv_permissions(resources.aapt,
- resources.framework_res_apk)
-
apps_redefine_base = []
results = {}
- for priv_app in resources.privapp_apks:
+ for priv_app in resources.privapp_apks[partition]:
pkg_info = extract_pkg_and_requested_permissions(resources.aapt,
priv_app)
pkg_name = pkg_info['package_name']
+ # get intersection of what's requested by app and by framework
priv_perms = get_priv_permissions(pkg_info['permissions'],
priv_permissions)
# Compute diff against permissions defined in base file
@@ -425,12 +643,14 @@ def create_permission_file(resources):
if priv_perms:
results[pkg_name] = sorted(priv_perms)
- print_xml(results, apps_redefine_base)
+ return results, apps_redefine_base
-def print_xml(results, apps_redefine_base, fd=sys.stdout):
+def print_xml(results, apps_redefine_base, partition, fd=sys.stdout):
"""Print results to the given file."""
- fd.write('<?xml version="1.0" encoding="utf-8"?>\n<permissions>\n')
+ fd.write('<?xml version="1.0" encoding="utf-8"?>\n')
+ fd.write('<!-- for the partition: /%s -->\n' % partition)
+ fd.write('<permissions>\n')
for package_name in sorted(results):
if package_name in apps_redefine_base:
fd.write(' <!-- Additional permissions on top of %s -->\n' %
@@ -561,7 +781,6 @@ def cleanup():
del temp_dirs[:]
del temp_files[:]
-
if __name__ == '__main__':
args = parse_args()
try:
@@ -570,6 +789,11 @@ if __name__ == '__main__':
adb_path=args.adb,
use_device=args.device,
serial=args.serial,
+ partitions=args.partitions,
+ verbose=args.verbose,
+ writetodisk=args.writetodisk,
+ systemfile=args.systemfile,
+ productfile=args.productfile,
apks=args.apks
)
create_permission_file(tool_resources)
diff --git a/tools/repo_diff/repo_diff_android.py b/tools/repo_diff/repo_diff_android.py
index 822abb500..aed7fae81 100755
--- a/tools/repo_diff/repo_diff_android.py
+++ b/tools/repo_diff/repo_diff_android.py
@@ -68,6 +68,15 @@ def repo_init(url, rev, workspace):
workspace: the folder to init and sync code
"""
+ try:
+ subprocess.check_output("repo", stderr=subprocess.PIPE,
+ cwd=os.path.dirname(workspace), shell=True)
+ except subprocess.CalledProcessError:
+ pass
+ else:
+ raise ValueError("cannot repo-init workspace (%s), workspace is within an "
+ "existing tree" % workspace)
+
print("repo init:\n url: %s\n rev: %s\n workspace: %s" %
(url, rev, workspace))
diff --git a/tools/repo_pull/README.md b/tools/repo_pull/README.md
index c4723ea41..c8c04bc89 100644
--- a/tools/repo_pull/README.md
+++ b/tools/repo_pull/README.md
@@ -70,7 +70,6 @@ These are common queries:
### Options
* `-g` or `--gerrit` specifies the URL of the Gerrit Code Review website.
- *(required)*
* `-b` or `--branch` specifies the local branch name that will be passed to
`repo start`.
diff --git a/tools/repo_pull/gerrit.py b/tools/repo_pull/gerrit.py
index 063b35105..9679d9d0c 100755
--- a/tools/repo_pull/gerrit.py
+++ b/tools/repo_pull/gerrit.py
@@ -25,21 +25,63 @@ import base64
import json
import os
import sys
+import xml.dom.minidom
try:
+ # PY3
+ from urllib.error import HTTPError
+ from urllib.parse import urlencode, urlparse
from urllib.request import (
- HTTPBasicAuthHandler, Request, build_opener) # PY3
+ HTTPBasicAuthHandler, Request, build_opener
+ )
except ImportError:
+ # PY2
+ from urllib import urlencode
from urllib2 import (
- HTTPBasicAuthHandler, Request, build_opener) # PY2
+ HTTPBasicAuthHandler, HTTPError, Request, build_opener
+ )
+ from urlparse import urlparse
try:
- # pylint: disable=ungrouped-imports
- from urllib.parse import urlencode, urlparse # PY3
+ # PY3.5
+ from subprocess import PIPE, run
except ImportError:
- # pylint: disable=ungrouped-imports
- from urllib import urlencode # PY2
- from urlparse import urlparse # PY2
+ from subprocess import CalledProcessError, PIPE, Popen
+
+ class CompletedProcess(object):
+ """Process execution result returned by subprocess.run()."""
+ # pylint: disable=too-few-public-methods
+
+ def __init__(self, args, returncode, stdout, stderr):
+ self.args = args
+ self.returncode = returncode
+ self.stdout = stdout
+ self.stderr = stderr
+
+ def run(*args, **kwargs):
+ """Run a command with subprocess.Popen() and redirect input/output."""
+
+ check = kwargs.pop('check', False)
+
+ try:
+ stdin = kwargs.pop('input')
+ assert 'stdin' not in kwargs
+ kwargs['stdin'] = PIPE
+ except KeyError:
+ stdin = None
+
+ proc = Popen(*args, **kwargs)
+ try:
+ stdout, stderr = proc.communicate(stdin)
+ except:
+ proc.kill()
+ proc.wait()
+ raise
+ returncode = proc.wait()
+
+ if check and returncode:
+ raise CalledProcessError(returncode, args, stdout)
+ return CompletedProcess(args, returncode, stdout, stderr)
def load_auth_credentials_from_file(cookie_file):
@@ -107,7 +149,15 @@ def create_url_opener_from_args(args):
def _decode_xssi_json(data):
- """Trim XSSI protector and decode JSON objects."""
+ """Trim XSSI protector and decode JSON objects.
+
+ Returns:
+ An object returned by json.loads().
+
+ Raises:
+ ValueError: If data doesn't start with a XSSI token.
+ json.JSONDecodeError: If data failed to decode.
+ """
# Decode UTF-8
data = data.decode('utf-8')
@@ -139,6 +189,14 @@ def query_change_lists(url_opener, gerrit, query_string, limits):
def _make_json_post_request(url_opener, url, data, method='POST'):
+ """Open an URL request and decode its response.
+
+ Returns a 3-tuple of (code, body, json).
+ code: A numerical value, the HTTP status code of the response.
+ body: A bytes, the response body.
+ json: An object, the parsed JSON response.
+ """
+
data = json.dumps(data).encode('utf-8')
headers = {
'Content-Type': 'application/json; charset=UTF-8',
@@ -146,13 +204,22 @@ def _make_json_post_request(url_opener, url, data, method='POST'):
request = Request(url, data, headers)
request.get_method = lambda: method
- response_file = url_opener.open(request)
+
try:
+ response_file = url_opener.open(request)
+ except HTTPError as error:
+ response_file = error
+
+ with response_file:
res_code = response_file.getcode()
- res_json = _decode_xssi_json(response_file.read())
- return (res_code, res_json)
- finally:
- response_file.close()
+ res_body = response_file.read()
+ try:
+ res_json = _decode_xssi_json(res_body)
+ except ValueError:
+ # The response isn't JSON if it doesn't start with a XSSI token.
+ # Possibly a plain text error message or empty body.
+ res_json = None
+ return (res_code, res_body, res_json)
def set_review(url_opener, gerrit_url, change_id, labels, message):
@@ -170,6 +237,14 @@ def set_review(url_opener, gerrit_url, change_id, labels, message):
return _make_json_post_request(url_opener, url, data)
+def submit(url_opener, gerrit_url, change_id):
+ """Submit a change list."""
+
+ url = '{}/a/changes/{}/submit'.format(gerrit_url, change_id)
+
+ return _make_json_post_request(url_opener, url, {})
+
+
def abandon(url_opener, gerrit_url, change_id, message):
"""Abandon a change list."""
@@ -182,6 +257,14 @@ def abandon(url_opener, gerrit_url, change_id, message):
return _make_json_post_request(url_opener, url, data)
+def restore(url_opener, gerrit_url, change_id):
+ """Restore a change list."""
+
+ url = '{}/a/changes/{}/restore'.format(gerrit_url, change_id)
+
+ return _make_json_post_request(url_opener, url, {})
+
+
def set_topic(url_opener, gerrit_url, change_id, name):
"""Set the topic name."""
@@ -194,13 +277,8 @@ def delete_topic(url_opener, gerrit_url, change_id):
"""Delete the topic name."""
url = '{}/a/changes/{}/topic'.format(gerrit_url, change_id)
- request = Request(url)
- request.get_method = lambda: 'DELETE'
- response_file = url_opener.open(request)
- try:
- return (response_file.getcode(), response_file.read())
- finally:
- response_file.close()
+
+ return _make_json_post_request(url_opener, url, {}, method='DELETE')
def set_hashtags(url_opener, gerrit_url, change_id, add_tags=None,
@@ -218,6 +296,28 @@ def set_hashtags(url_opener, gerrit_url, change_id, add_tags=None,
return _make_json_post_request(url_opener, url, data)
+def add_reviewers(url_opener, gerrit_url, change_id, reviewers):
+ """Add reviewers."""
+
+ url = '{}/a/changes/{}/revisions/current/review'.format(
+ gerrit_url, change_id)
+
+ data = {}
+ if reviewers:
+ data['reviewers'] = reviewers
+
+ return _make_json_post_request(url_opener, url, data)
+
+
+def delete_reviewer(url_opener, gerrit_url, change_id, name):
+ """Delete reviewer."""
+
+ url = '{}/a/changes/{}/reviewers/{}/delete'.format(
+ gerrit_url, change_id, name)
+
+ return _make_json_post_request(url_opener, url, {})
+
+
def get_patch(url_opener, gerrit_url, change_id, revision_id='current'):
"""Download the patch file."""
@@ -230,14 +330,28 @@ def get_patch(url_opener, gerrit_url, change_id, revision_id='current'):
finally:
response_file.close()
+def find_gerrit_name():
+ """Find the gerrit instance specified in the default remote."""
+ manifest_cmd = ['repo', 'manifest']
+ raw_manifest_xml = run(manifest_cmd, stdout=PIPE, check=True).stdout
+
+ manifest_xml = xml.dom.minidom.parseString(raw_manifest_xml)
+ default_remote = manifest_xml.getElementsByTagName('default')[0]
+ default_remote_name = default_remote.getAttribute('remote')
+ for remote in manifest_xml.getElementsByTagName('remote'):
+ name = remote.getAttribute('name')
+ review = remote.getAttribute('review')
+ if review and name == default_remote_name:
+ return review.rstrip('/')
+
+ raise ValueError('cannot find gerrit URL from manifest')
def _parse_args():
"""Parse command line options."""
parser = argparse.ArgumentParser()
parser.add_argument('query', help='Change list query string')
- parser.add_argument('-g', '--gerrit', required=True,
- help='Gerrit review URL')
+ parser.add_argument('-g', '--gerrit', help='Gerrit review URL')
parser.add_argument('--gitcookies',
default=os.path.expanduser('~/.gitcookies'),
@@ -252,6 +366,14 @@ def main():
"""Main function"""
args = _parse_args()
+ if not args.gerrit:
+ try:
+ args.gerrit = find_gerrit_name()
+ # pylint: disable=bare-except
+ except:
+ print('gerrit instance not found, use [-g GERRIT]')
+ sys.exit(1)
+
# Query change lists
url_opener = create_url_opener_from_args(args)
change_lists = query_change_lists(
diff --git a/tools/repo_pull/repo_patch.py b/tools/repo_pull/repo_patch.py
index 393870609..f97d21104 100755
--- a/tools/repo_pull/repo_patch.py
+++ b/tools/repo_pull/repo_patch.py
@@ -23,17 +23,18 @@ from __future__ import print_function
import argparse
import os
+import sys
-from gerrit import create_url_opener_from_args, query_change_lists, get_patch
-
+from gerrit import (
+ create_url_opener_from_args, find_gerrit_name, query_change_lists, get_patch
+)
def _parse_args():
"""Parse command line options."""
parser = argparse.ArgumentParser()
parser.add_argument('query', help='Change list query string')
- parser.add_argument('-g', '--gerrit', required=True,
- help='Gerrit review URL')
+ parser.add_argument('-g', '--gerrit', help='Gerrit review URL')
parser.add_argument('--gitcookies',
default=os.path.expanduser('~/.gitcookies'),
@@ -48,6 +49,14 @@ def main():
"""Main function"""
args = _parse_args()
+ if not args.gerrit:
+ try:
+ args.gerrit = find_gerrit_name()
+ # pylint: disable=bare-except
+ except:
+ print('gerrit instance not found, use [-g GERRIT]')
+ sys.exit(1)
+
# Query change lists
url_opener = create_url_opener_from_args(args)
change_lists = query_change_lists(
diff --git a/tools/repo_pull/repo_pull.py b/tools/repo_pull/repo_pull.py
index 2042614e2..157ede5f1 100755
--- a/tools/repo_pull/repo_pull.py
+++ b/tools/repo_pull/repo_pull.py
@@ -31,7 +31,10 @@ import re
import sys
import xml.dom.minidom
-from gerrit import create_url_opener_from_args, query_change_lists
+from gerrit import (
+ create_url_opener_from_args, find_gerrit_name, query_change_lists, run
+)
+from subprocess import PIPE
try:
# pylint: disable=redefined-builtin
@@ -50,46 +53,6 @@ except ImportError:
"""Quote a string if it contains special characters."""
return txt if _SHELL_SIMPLE_PATTERN.match(txt) else json.dumps(txt)
-try:
- from subprocess import PIPE, run # PY3.5
-except ImportError:
- from subprocess import CalledProcessError, PIPE, Popen
-
- class CompletedProcess(object):
- """Process execution result returned by subprocess.run()."""
- # pylint: disable=too-few-public-methods
-
- def __init__(self, args, returncode, stdout, stderr):
- self.args = args
- self.returncode = returncode
- self.stdout = stdout
- self.stderr = stderr
-
- def run(*args, **kwargs):
- """Run a command with subprocess.Popen() and redirect input/output."""
-
- check = kwargs.pop('check', False)
-
- try:
- stdin = kwargs.pop('input')
- assert 'stdin' not in kwargs
- kwargs['stdin'] = PIPE
- except KeyError:
- stdin = None
-
- proc = Popen(*args, **kwargs)
- try:
- stdout, stderr = proc.communicate(stdin)
- except:
- proc.kill()
- proc.wait()
- raise
- returncode = proc.wait()
-
- if check and returncode:
- raise CalledProcessError(returncode, args, stdout)
- return CompletedProcess(args, returncode, stdout, stderr)
-
if bytes is str:
def write_bytes(data, file): # PY2
@@ -154,34 +117,28 @@ class ChangeList(object):
return len(self.parents) > 1
-def find_manifest_xml(dir_path):
- """Find the path to manifest.xml for this Android source tree."""
- dir_path_prev = None
- while dir_path != dir_path_prev:
- path = os.path.join(dir_path, '.repo', 'manifest.xml')
- if os.path.exists(path):
- return path
- dir_path_prev = dir_path
- dir_path = os.path.dirname(dir_path)
+def find_repo_top(curdir):
+ """Find the top directory for this git-repo source tree."""
+ olddir = None
+ while curdir != olddir:
+ if os.path.exists(os.path.join(curdir, '.repo')):
+ return curdir
+ olddir = curdir
+ curdir = os.path.dirname(curdir)
raise ValueError('.repo dir not found')
-def build_project_name_dir_dict(manifest_path):
+def build_project_name_dir_dict(manifest_name):
"""Build the mapping from Gerrit project name to source tree project
directory path."""
+ manifest_cmd = ['repo', 'manifest']
+ if manifest_name:
+ manifest_cmd.extend(['-m', manifest_name])
+ raw_manifest_xml = run(manifest_cmd, stdout=PIPE, check=True).stdout
+
+ manifest_xml = xml.dom.minidom.parseString(raw_manifest_xml)
project_dirs = {}
- parsed_xml = xml.dom.minidom.parse(manifest_path)
-
- includes = parsed_xml.getElementsByTagName('include')
- for include in includes:
- include_path = include.getAttribute('name')
- if not os.path.isabs(include_path):
- manifest_dir = os.path.dirname(os.path.realpath(manifest_path))
- include_path = os.path.join(manifest_dir, include_path)
- project_dirs.update(build_project_name_dir_dict(include_path))
-
- projects = parsed_xml.getElementsByTagName('project')
- for project in projects:
+ for project in manifest_xml.getElementsByTagName('project'):
name = project.getAttribute('name')
path = project.getAttribute('path')
if path:
@@ -301,15 +258,14 @@ def _sh_quote_commands(cmds):
def _main_bash(args):
"""Print the bash command to pull the change lists."""
-
+ repo_top = find_repo_top(os.getcwd())
+ project_dirs = build_project_name_dir_dict(args.manifest)
branch_name = _get_local_branch_name_from_args(args)
- manifest_path = _get_manifest_xml_from_args(args)
- project_dirs = build_project_name_dir_dict(manifest_path)
-
change_lists = _get_change_lists_from_args(args)
change_list_groups = group_and_sort_change_lists(change_lists)
+ print(_sh_quote_command(['pushd', repo_top]))
for changes in change_list_groups:
for change in changes:
project_dir = project_dirs.get(change.project, change.project)
@@ -319,6 +275,7 @@ def _main_bash(args):
change, branch_name, args.merge, args.pick))
cmds.append(['popd'])
print(_sh_quote_commands(cmds))
+ print(_sh_quote_command(['popd']))
def _do_pull_change_lists_for_project(task):
@@ -329,6 +286,7 @@ def _do_pull_change_lists_for_project(task):
merge_opt = task_opts['merge_opt']
pick_opt = task_opts['pick_opt']
project_dirs = task_opts['project_dirs']
+ repo_top = task_opts['repo_top']
for i, change in enumerate(changes):
try:
@@ -341,7 +299,7 @@ def _do_pull_change_lists_for_project(task):
print(change.commit_sha1[0:10], i + 1, cwd)
cmds = build_pull_commands(change, branch_name, merge_opt, pick_opt)
for cmd in cmds:
- proc = run(cmd, cwd=cwd, stderr=PIPE)
+ proc = run(cmd, cwd=os.path.join(repo_top, cwd), stderr=PIPE)
if proc.returncode != 0:
return (change, changes[i + 1:], cmd, proc.stderr)
return None
@@ -368,12 +326,10 @@ def _print_pull_failures(failures, file=sys.stderr):
def _main_pull(args):
"""Pull the change lists."""
-
+ repo_top = find_repo_top(os.getcwd())
+ project_dirs = build_project_name_dir_dict(args.manifest)
branch_name = _get_local_branch_name_from_args(args)
- manifest_path = _get_manifest_xml_from_args(args)
- project_dirs = build_project_name_dir_dict(manifest_path)
-
# Collect change lists
change_lists = _get_change_lists_from_args(args)
change_list_groups = group_and_sort_change_lists(change_lists)
@@ -384,6 +340,7 @@ def _main_pull(args):
'merge_opt': args.merge,
'pick_opt': args.pick,
'project_dirs': project_dirs,
+ 'repo_top': repo_top,
}
# Run the commands to pull the change lists
@@ -410,8 +367,7 @@ def _parse_args():
help='Commands')
parser.add_argument('query', help='Change list query string')
- parser.add_argument('-g', '--gerrit', required=True,
- help='Gerrit review URL')
+ parser.add_argument('-g', '--gerrit', help='Gerrit review URL')
parser.add_argument('--gitcookies',
default=os.path.expanduser('~/.gitcookies'),
@@ -439,14 +395,6 @@ def _parse_args():
return parser.parse_args()
-def _get_manifest_xml_from_args(args):
- """Get the path to manifest.xml from args."""
- manifest_path = args.manifest
- if not args.manifest:
- manifest_path = find_manifest_xml(os.getcwd())
- return manifest_path
-
-
def _get_change_lists_from_args(args):
"""Query the change lists by args."""
url_opener = create_url_opener_from_args(args)
@@ -465,6 +413,15 @@ def _get_local_branch_name_from_args(args):
def main():
"""Main function"""
args = _parse_args()
+
+ if not args.gerrit:
+ try:
+ args.gerrit = find_gerrit_name()
+ # pylint: disable=bare-except
+ except:
+ print('gerrit instance not found, use [-g GERRIT]')
+ sys.exit(1)
+
if args.command == 'json':
_main_json(args)
elif args.command == 'bash':
diff --git a/tools/repo_pull/repo_review.py b/tools/repo_pull/repo_review.py
index 2279e4b1c..e62820fbd 100755
--- a/tools/repo_pull/repo_review.py
+++ b/tools/repo_pull/repo_review.py
@@ -31,8 +31,10 @@ except ImportError:
from urllib2 import HTTPError # PY2
from gerrit import (
- abandon, create_url_opener_from_args, delete_topic, query_change_lists,
- set_hashtags, set_review, set_topic)
+ abandon, add_reviewers, create_url_opener_from_args, delete_reviewer,
+ delete_topic, find_gerrit_name, query_change_lists, restore, set_hashtags,
+ set_review, set_topic, submit
+)
def _get_labels_from_args(args):
@@ -86,8 +88,7 @@ def _parse_args():
parser = argparse.ArgumentParser()
parser.add_argument('query', help='Change list query string')
- parser.add_argument('-g', '--gerrit', required=True,
- help='Gerrit review URL')
+ parser.add_argument('-g', '--gerrit', help='Gerrit review URL')
parser.add_argument('--gitcookies',
default=os.path.expanduser('~/.gitcookies'),
@@ -99,7 +100,10 @@ def _parse_args():
help='Labels to be added')
parser.add_argument('-m', '--message', help='Review message')
+ parser.add_argument('--submit', action='store_true', help='Submit a CL')
+
parser.add_argument('--abandon', help='Abandon a CL with a message')
+ parser.add_argument('--restore', action='store_true', help='Restore a CL')
parser.add_argument('--add-hashtag', action='append', help='Add hashtag')
parser.add_argument('--remove-hashtag', action='append',
@@ -112,6 +116,10 @@ def _parse_args():
help='Delete topic name')
parser.add_argument('--remove-topic', action='store_true',
help='Delete topic name', dest='delete_topic')
+ parser.add_argument('--add-reviewer', action='append', default=[],
+ help='Add reviewer')
+ parser.add_argument('--delete-reviewer', action='append', default=[],
+ help='Delete reviewer')
return parser.parse_args()
@@ -120,12 +128,18 @@ def _has_task(args):
"""Determine whether a task has been specified in the arguments."""
if args.label is not None or args.message is not None:
return True
+ if args.submit:
+ return True
if args.abandon is not None:
return True
+ if args.restore:
+ return True
if args.add_hashtag or args.remove_hashtag:
return True
if args.set_topic or args.delete_topic:
return True
+ if args.add_reviewer or args.delete_reviewer:
+ return True
return False
@@ -133,7 +147,7 @@ _SEP_SPLIT = '=' * 79
_SEP = '-' * 79
-def _print_error(change, res_code, res_json):
+def _print_error(change, res_code, res_body, res_json):
"""Print the error message"""
change_id = change['change_id']
@@ -152,19 +166,19 @@ def _print_error(change, res_code, res_json):
json.dump(res_json, sys.stderr, indent=4,
separators=(', ', ': '))
print(file=sys.stderr)
+ elif res_body:
+ print(_SEP, file=sys.stderr)
+ print(res_body.decode('utf-8'), file=sys.stderr)
print(_SEP_SPLIT, file=sys.stderr)
def _do_task(change, func, *args, **kwargs):
"""Process a task and report errors when necessary."""
- try:
- res_code, res_json = func(*args)
- except HTTPError as error:
- res_code = error.code
- res_json = None
+
+ res_code, res_body, res_json = func(*args)
if res_code != kwargs.get('expected_http_code', 200):
- _print_error(change, res_code, res_json)
+ _print_error(change, res_code, res_body, res_json)
errors = kwargs.get('errors')
if errors is not None:
@@ -176,15 +190,28 @@ def main():
# Parse and check the command line options
args = _parse_args()
+
+ if not args.gerrit:
+ try:
+ args.gerrit = find_gerrit_name()
+ # pylint: disable=bare-except
+ except:
+ print('gerrit instance not found, use [-g GERRIT]')
+ sys.exit(1)
+
if not _has_task(args):
- print('error: Either --label, --message, --abandon, --add-hashtag, '
- '--remove-hashtag, --set-topic, or --delete-topic must be ',
- 'specified', file=sys.stderr)
+ print('error: Either --label, --message, --submit, --abandon, --restore, '
+ '--add-hashtag, --remove-hashtag, --set-topic, --delete-topic, '
+ '--add-reviewer or --delete-reviewer must be specified',
+ file=sys.stderr)
sys.exit(1)
# Convert label arguments
labels = _get_labels_from_args(args)
+ # Convert reviewer arguments
+ new_reviewers = [{'reviewer': name} for name in args.add_reviewer]
+
# Load authentication credentials
url_opener = create_url_opener_from_args(args)
@@ -217,9 +244,22 @@ def main():
if args.delete_topic:
_do_task(change, delete_topic, url_opener, args.gerrit,
change['id'], expected_http_code=204, errors=errors)
+ if args.submit:
+ _do_task(change, submit, url_opener, args.gerrit, change['id'],
+ errors=errors)
if args.abandon:
_do_task(change, abandon, url_opener, args.gerrit, change['id'],
args.abandon, errors=errors)
+ if args.restore:
+ _do_task(change, restore, url_opener, args.gerrit, change['id'],
+ errors=errors)
+ if args.add_reviewer:
+ _do_task(change, add_reviewers, url_opener, args.gerrit,
+ change['id'], new_reviewers, errors=errors)
+ for name in args.delete_reviewer:
+ _do_task(change, delete_reviewer, url_opener, args.gerrit,
+ change['id'], name, expected_http_code=204, errors=errors)
+
if errors['num_errors']:
sys.exit(1)
diff --git a/tools/rmtypedefs/Android.bp b/tools/rmtypedefs/Android.bp
index 1b64f4710..a548241e0 100644
--- a/tools/rmtypedefs/Android.bp
+++ b/tools/rmtypedefs/Android.bp
@@ -12,6 +12,10 @@
// See the License for the specific language governing permissions and
// limitations under the License.
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
java_binary_host {
name: "rmtypedefs",
srcs: ["src/**/*.java"],
diff --git a/tools/winscope/.babelrc b/tools/winscope/.babelrc
index 3ed94dff9..cedf24f1a 100644
--- a/tools/winscope/.babelrc
+++ b/tools/winscope/.babelrc
@@ -1,5 +1,5 @@
{
"presets": [
- ["env", { "modules": false }]
+ "@babel/preset-env"
]
-}
+} \ No newline at end of file
diff --git a/tools/winscope/.eslintrc.json b/tools/winscope/.eslintrc.json
new file mode 100644
index 000000000..b5271d119
--- /dev/null
+++ b/tools/winscope/.eslintrc.json
@@ -0,0 +1,35 @@
+{
+ "env": {
+ "browser": true,
+ "es6": true
+ },
+ "extends": [
+ "plugin:vue/essential",
+ "google"
+ ],
+ "globals": {
+ "Atomics": "readonly",
+ "SharedArrayBuffer": "readonly"
+ },
+ "parserOptions": {
+ "ecmaVersion": 11,
+ "sourceType": "module"
+ },
+ "plugins": [
+ "vue"
+ ],
+ "rules": {
+ "require-jsdoc": [
+ "error",
+ {
+ "require": {
+ "FunctionDeclaration": false,
+ "MethodDefinition": false,
+ "ClassDeclaration": false,
+ "ArrowFunctionExpression": false,
+ "FunctionExpression": false
+ }
+ }
+ ]
+ }
+} \ No newline at end of file
diff --git a/tools/winscope/.gitignore b/tools/winscope/.gitignore
index 1eba9d2a0..75eede8a0 100644
--- a/tools/winscope/.gitignore
+++ b/tools/winscope/.gitignore
@@ -1,2 +1,8 @@
node_modules/
adb_proxy/venv/
+.vscode/
+dist/
+kotlin_build/
+yarn-error.log
+kotlin_build/
+.eslintcache
diff --git a/tools/winscope/README.md b/tools/winscope/README.md
index 8821601f0..f34c0224d 100644
--- a/tools/winscope/README.md
+++ b/tools/winscope/README.md
@@ -17,6 +17,27 @@ contain the proto definitions for their internal states.
* Navigate to `development/tools/winscope`
* Run `yarn run dev`
+### Update IntDefMapping
+* Build `framework-minus-apex-intdefs` module and a preprocessor will
+generate the latest IntDefMapping. From the `ANDROID_ROOT` run:
+```
+. build/envsetup.sh
+m framework-minus-apex-intdefs
+```
+
+* Copy the generated `intDefMapping.json` files to the `prebuilts` repo.
+```
+python3 -c 'import sys,json,collections; print(json.dumps(collections.OrderedDict(sorted(collections.ChainMap(*map(lambda x:json.load(open(x)), sys.argv[1:])).items())), indent=2))' $(find out/soong/.intermediates/frameworks/base -iname intDefMapping.json) > ./prebuilts/misc/common/winscope/intDefMapping.json
+```
+
+* Upload the changes.
+```
+cd ./prebuilts/misc/common/winscope
+repo start intdef-update
+git commit -am "Update intdef mapping" "Test: N/A"
+repo upload --cbr .
+```
+
### Building with internal extensions
Internal paths in vendor/ which are not available in AOSP must be replaced by
stub files. See getWaylandSafePath for an example
diff --git a/tools/winscope/adb_proxy/winscope_proxy.py b/tools/winscope/adb_proxy/winscope_proxy.py
index c799a8d48..7cf135eb4 100755
--- a/tools/winscope/adb_proxy/winscope_proxy.py
+++ b/tools/winscope/adb_proxy/winscope_proxy.py
@@ -38,6 +38,7 @@ from enum import Enum
from http import HTTPStatus
from http.server import HTTPServer, BaseHTTPRequestHandler
from tempfile import NamedTemporaryFile
+import base64
# CONFIG #
@@ -46,7 +47,7 @@ LOG_LEVEL = logging.WARNING
PORT = 5544
# Keep in sync with WINSCOPE_PROXY_VERSION in Winscope DataAdb.vue
-VERSION = '0.5'
+VERSION = '0.8'
WINSCOPE_VERSION_HEADER = "Winscope-Proxy-Version"
WINSCOPE_TOKEN_HEADER = "Winscope-Token"
@@ -62,47 +63,122 @@ logging.basicConfig(stream=sys.stderr, level=LOG_LEVEL,
log = logging.getLogger("ADBProxy")
+class File:
+ def __init__(self, file, filetype) -> None:
+ self.file = file
+ self.type = filetype
+
+ def get_filepaths(self, device_id):
+ return [self.file]
+
+ def get_filetype(self):
+ return self.type
+
+
+class FileMatcher:
+ def __init__(self, path, matcher, filetype) -> None:
+ self.path = path
+ self.matcher = matcher
+ self.type = filetype
+
+ def get_filepaths(self, device_id):
+ matchingFiles = call_adb(
+ f"shell su root find {self.path} -name {self.matcher}", device_id)
+
+ return matchingFiles.split('\n')[:-1]
+
+ def get_filetype(self):
+ return self.type
+
+
class TraceTarget:
"""Defines a single parameter to trace.
Attributes:
- file: the path on the device the trace results are saved to.
+ file_matchers: the matchers used to identify the paths on the device the trace results are saved to.
trace_start: command to start the trace from adb shell, must not block.
trace_stop: command to stop the trace, should block until the trace is stopped.
"""
- def __init__(self, file: str, trace_start: str, trace_stop: str) -> None:
- self.file = file
+ def __init__(self, files, trace_start: str, trace_stop: str) -> None:
+ if type(files) is not list:
+ files = [files]
+ self.files = files
self.trace_start = trace_start
self.trace_stop = trace_stop
+# Order of files matters as they will be expected in that order and decoded in that order
TRACE_TARGETS = {
"window_trace": TraceTarget(
- "/data/misc/wmtrace/wm_trace.pb",
+ File("/data/misc/wmtrace/wm_trace.pb", "window_trace"),
'su root cmd window tracing start\necho "WM trace started."',
'su root cmd window tracing stop >/dev/null 2>&1'
),
"layers_trace": TraceTarget(
- "/data/misc/wmtrace/layers_trace.pb",
+ File("/data/misc/wmtrace/layers_trace.pb", "layers_trace"),
'su root service call SurfaceFlinger 1025 i32 1\necho "SF trace started."',
'su root service call SurfaceFlinger 1025 i32 0 >/dev/null 2>&1'
),
"screen_recording": TraceTarget(
- "/data/local/tmp/screen.winscope.mp4",
+ File("/data/local/tmp/screen.winscope.mp4", "screen_recording"),
'screenrecord --bit-rate 8M /data/local/tmp/screen.winscope.mp4 >/dev/null 2>&1 &\necho "ScreenRecorder started."',
'pkill -l SIGINT screenrecord >/dev/null 2>&1'
),
"transaction": TraceTarget(
- "/data/misc/wmtrace/transaction_trace.pb",
+ [
+ File("/data/misc/wmtrace/transaction_trace.pb", "transactions"),
+ FileMatcher("/data/misc/wmtrace/", "transaction_merges_*.pb",
+ "transaction_merges"),
+ ],
'su root service call SurfaceFlinger 1020 i32 1\necho "SF transactions recording started."',
'su root service call SurfaceFlinger 1020 i32 0 >/dev/null 2>&1'
),
"proto_log": TraceTarget(
- "/data/misc/wmtrace/wm_log.pb",
+ File("/data/misc/wmtrace/wm_log.pb", "proto_log"),
'su root cmd window logging start\necho "WM logging started."',
'su root cmd window logging stop >/dev/null 2>&1'
),
+ "ime_trace_clients": TraceTarget(
+ File("/data/misc/wmtrace/ime_trace_clients.pb", "ime_trace_clients"),
+ 'su root ime tracing start\necho "Clients IME trace started."',
+ 'su root ime tracing stop >/dev/null 2>&1'
+ ),
+ "ime_trace_service": TraceTarget(
+ File("/data/misc/wmtrace/ime_trace_service.pb", "ime_trace_service"),
+ 'su root ime tracing start\necho "Service IME trace started."',
+ 'su root ime tracing stop >/dev/null 2>&1'
+ ),
+ "ime_trace_managerservice": TraceTarget(
+ File("/data/misc/wmtrace/ime_trace_managerservice.pb", "ime_trace_managerservice"),
+ 'su root ime tracing start\necho "ManagerService IME trace started."',
+ 'su root ime tracing stop >/dev/null 2>&1'
+ ),
+}
+
+
+class SurfaceFlingerTraceConfig:
+ """Handles optional configuration for surfaceflinger traces.
+ """
+
+ def __init__(self) -> None:
+ # default config flags CRITICAL | INPUT | SYNC
+ self.flags = 1 << 0 | 1 << 1 | 1 << 6
+
+ def add(self, config: str) -> None:
+ self.flags |= CONFIG_FLAG[config]
+
+ def is_valid(self, config: str) -> bool:
+ return config in CONFIG_FLAG
+
+ def command(self) -> str:
+ return f'su root service call SurfaceFlinger 1033 i32 {self.flags}'
+
+
+CONFIG_FLAG = {
+ "composition": 1 << 2,
+ "metadata": 1 << 3,
+ "hwc": 1 << 4
}
@@ -114,18 +190,20 @@ class DumpTarget:
dump_command: command to dump state to file.
"""
- def __init__(self, file: str, dump_command: str) -> None:
- self.file = file
+ def __init__(self, files, dump_command: str) -> None:
+ if type(files) is not list:
+ files = [files]
+ self.files = files
self.dump_command = dump_command
DUMP_TARGETS = {
"window_dump": DumpTarget(
- "/data/local/tmp/wm_dump.pb",
+ File("/data/local/tmp/wm_dump.pb", "window_dump"),
'su root dumpsys window --proto > /data/local/tmp/wm_dump.pb'
),
"layers_dump": DumpTarget(
- "/data/local/tmp/sf_dump.pb",
+ File("/data/local/tmp/sf_dump.pb", "layers_dump"),
'su root dumpsys SurfaceFlinger --proto > /data/local/tmp/sf_dump.pb'
)
}
@@ -139,18 +217,21 @@ def get_token() -> str:
try:
with open(WINSCOPE_TOKEN_LOCATION, 'r') as token_file:
token = token_file.readline()
- log.debug("Loaded token {} from {}".format(token, WINSCOPE_TOKEN_LOCATION))
+ log.debug("Loaded token {} from {}".format(
+ token, WINSCOPE_TOKEN_LOCATION))
return token
except IOError:
token = secrets.token_hex(32)
os.makedirs(os.path.dirname(WINSCOPE_TOKEN_LOCATION), exist_ok=True)
try:
with open(WINSCOPE_TOKEN_LOCATION, 'w') as token_file:
- log.debug("Created and saved token {} to {}".format(token, WINSCOPE_TOKEN_LOCATION))
+ log.debug("Created and saved token {} to {}".format(
+ token, WINSCOPE_TOKEN_LOCATION))
token_file.write(token)
os.chmod(WINSCOPE_TOKEN_LOCATION, 0o600)
except IOError:
- log.error("Unable to save persistent token {} to {}".format(token, WINSCOPE_TOKEN_LOCATION))
+ log.error("Unable to save persistent token {} to {}".format(
+ token, WINSCOPE_TOKEN_LOCATION))
return token
@@ -167,8 +248,10 @@ def add_standard_headers(server):
server.send_header('Cache-Control', 'no-cache, no-store, must-revalidate')
server.send_header('Access-Control-Allow-Origin', '*')
server.send_header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS')
- server.send_header('Access-Control-Allow-Headers', WINSCOPE_TOKEN_HEADER + ', Content-Type, Content-Length')
- server.send_header('Access-Control-Expose-Headers', 'Winscope-Proxy-Version')
+ server.send_header('Access-Control-Allow-Headers',
+ WINSCOPE_TOKEN_HEADER + ', Content-Type, Content-Length')
+ server.send_header('Access-Control-Expose-Headers',
+ 'Winscope-Proxy-Version')
server.send_header(WINSCOPE_VERSION_HEADER, VERSION)
server.end_headers()
@@ -192,7 +275,7 @@ class BadRequest(Exception):
class RequestRouter:
- """Handles HTTP request authenticationn and routing"""
+ """Handles HTTP request authentication and routing"""
def __init__(self, handler):
self.request = handler
@@ -208,7 +291,8 @@ class RequestRouter:
def __internal_error(self, error: str):
log.error("Internal error: " + error)
- self.request.respond(HTTPStatus.INTERNAL_SERVER_ERROR, error.encode("utf-8"), 'text/txt')
+ self.request.respond(HTTPStatus.INTERNAL_SERVER_ERROR,
+ error.encode("utf-8"), 'text/txt')
def __bad_token(self):
log.info("Bad token")
@@ -241,11 +325,15 @@ def call_adb(params: str, device: str = None, stdin: bytes = None):
log.debug("Call: " + ' '.join(command))
return subprocess.check_output(command, stderr=subprocess.STDOUT, input=stdin).decode('utf-8')
except OSError as ex:
- log.debug('Error executing adb command: {}\n{}'.format(' '.join(command), repr(ex)))
- raise AdbError('Error executing adb command: {}\n{}'.format(' '.join(command), repr(ex)))
+ log.debug('Error executing adb command: {}\n{}'.format(
+ ' '.join(command), repr(ex)))
+ raise AdbError('Error executing adb command: {}\n{}'.format(
+ ' '.join(command), repr(ex)))
except subprocess.CalledProcessError as ex:
- log.debug('Error executing adb command: {}\n{}'.format(' '.join(command), ex.output.decode("utf-8")))
- raise AdbError('Error executing adb command: adb {}\n{}'.format(params, ex.output.decode("utf-8")))
+ log.debug('Error executing adb command: {}\n{}'.format(
+ ' '.join(command), ex.output.decode("utf-8")))
+ raise AdbError('Error executing adb command: adb {}\n{}'.format(
+ params, ex.output.decode("utf-8")))
def call_adb_outfile(params: str, outfile, device: str = None, stdin: bytes = None):
@@ -260,12 +348,14 @@ def call_adb_outfile(params: str, outfile, device: str = None, stdin: bytes = No
raise AdbError('Error executing adb command: adb {}\n'.format(params) + err.decode(
'utf-8') + '\n' + outfile.read().decode('utf-8'))
except OSError as ex:
- log.debug('Error executing adb command: adb {}\n{}'.format(params, repr(ex)))
- raise AdbError('Error executing adb command: adb {}\n{}'.format(params, repr(ex)))
+ log.debug('Error executing adb command: adb {}\n{}'.format(
+ params, repr(ex)))
+ raise AdbError(
+ 'Error executing adb command: adb {}\n{}'.format(params, repr(ex)))
class ListDevicesEndpoint(RequestEndpoint):
- ADB_INFO_RE = re.compile("^([A-Za-z0-9\\-]+)\\s+(\\w+)(.*model:(\\w+))?")
+ ADB_INFO_RE = re.compile("^([A-Za-z0-9.:\\-]+)\\s+(\\w+)(.*model:(\\w+))?")
def process(self, server, path):
lines = list(filter(None, call_adb('devices -l').split('\n')))
@@ -280,7 +370,7 @@ class ListDevicesEndpoint(RequestEndpoint):
class DeviceRequestEndpoint(RequestEndpoint):
def process(self, server, path):
- if len(path) > 0 and re.fullmatch("[A-Za-z0-9\\-]+", path[0]):
+ if len(path) > 0 and re.fullmatch("[A-Za-z0-9.:\\-]+", path[0]):
self.process_with_device(server, path[1:], path[0])
else:
raise BadRequest("Device id not specified")
@@ -289,34 +379,51 @@ class DeviceRequestEndpoint(RequestEndpoint):
def process_with_device(self, server, path, device_id):
pass
+ def get_request(self, server) -> str:
+ try:
+ length = int(server.headers["Content-Length"])
+ except KeyError as err:
+ raise BadRequest("Missing Content-Length header\n" + str(err))
+ except ValueError as err:
+ raise BadRequest("Content length unreadable\n" + str(err))
+ return json.loads(server.rfile.read(length).decode("utf-8"))
+
-class FetchFileEndpoint(DeviceRequestEndpoint):
+class FetchFilesEndpoint(DeviceRequestEndpoint):
def process_with_device(self, server, path, device_id):
if len(path) != 1:
raise BadRequest("File not specified")
if path[0] in TRACE_TARGETS:
- file_path = TRACE_TARGETS[path[0]].file
+ files = TRACE_TARGETS[path[0]].files
elif path[0] in DUMP_TARGETS:
- file_path = DUMP_TARGETS[path[0]].file
+ files = DUMP_TARGETS[path[0]].files
else:
raise BadRequest("Unknown file specified")
- with NamedTemporaryFile() as tmp:
- log.debug("Fetching file {} from device to {}".format(file_path, tmp.name))
- call_adb_outfile('exec-out su root cat ' + file_path, tmp, device_id)
- log.debug("Deleting file {} from device".format(file_path))
- call_adb('shell su root rm ' + file_path, device_id)
- server.send_response(HTTPStatus.OK)
- server.send_header('X-Content-Type-Options', 'nosniff')
- server.send_header('Content-type', 'application/octet-stream')
- add_standard_headers(server)
- log.debug("Uploading file {}".format(tmp.name))
- while True:
- buf = tmp.read(1024)
- if buf:
- server.wfile.write(buf)
- else:
- break
+ file_buffers = dict()
+
+ for f in files:
+ file_type = f.get_filetype()
+ file_paths = f.get_filepaths(device_id)
+
+ for file_path in file_paths:
+ with NamedTemporaryFile() as tmp:
+ log.debug(
+ f"Fetching file {file_path} from device to {tmp.name}")
+ call_adb_outfile('exec-out su root cat ' +
+ file_path, tmp, device_id)
+ log.debug(f"Deleting file {file_path} from device")
+ call_adb('shell su root rm ' + file_path, device_id)
+ log.debug(f"Uploading file {tmp.name}")
+ if file_type not in file_buffers:
+ file_buffers[file_type] = []
+ buf = base64.encodebytes(tmp.read()).decode("utf-8")
+ file_buffers[file_type].append(buf)
+
+ # server.send_header('X-Content-Type-Options', 'nosniff')
+ # add_standard_headers(server)
+ j = json.dumps(file_buffers)
+ server.respond(HTTPStatus.OK, j.encode("utf-8"), "text/json")
def check_root(device_id):
@@ -341,34 +448,41 @@ class TraceThread(threading.Thread):
self.process = subprocess.Popen(shell, stdout=subprocess.PIPE,
stderr=subprocess.PIPE, stdin=subprocess.PIPE, start_new_session=True)
except OSError as ex:
- raise AdbError('Error executing adb command: adb shell\n{}'.format(repr(ex)))
+ raise AdbError(
+ 'Error executing adb command: adb shell\n{}'.format(repr(ex)))
super().__init__()
def timeout(self):
if self.is_alive():
- log.warning("Keep-alive timeout for trace on {}".format(self._device_id))
+ log.warning(
+ "Keep-alive timeout for trace on {}".format(self._device_id))
self.end_trace()
if self._device_id in TRACE_THREADS:
TRACE_THREADS.pop(self._device_id)
def reset_timer(self):
- log.debug("Resetting keep-alive clock for trace on {}".format(self._device_id))
+ log.debug(
+ "Resetting keep-alive clock for trace on {}".format(self._device_id))
if self._keep_alive_timer:
self._keep_alive_timer.cancel()
- self._keep_alive_timer = threading.Timer(KEEP_ALIVE_INTERVAL_S, self.timeout)
+ self._keep_alive_timer = threading.Timer(
+ KEEP_ALIVE_INTERVAL_S, self.timeout)
self._keep_alive_timer.start()
def end_trace(self):
if self._keep_alive_timer:
self._keep_alive_timer.cancel()
- log.debug("Sending SIGINT to the trace process on {}".format(self._device_id))
+ log.debug("Sending SIGINT to the trace process on {}".format(
+ self._device_id))
self.process.send_signal(signal.SIGINT)
try:
- log.debug("Waiting for trace shell to exit for {}".format(self._device_id))
+ log.debug("Waiting for trace shell to exit for {}".format(
+ self._device_id))
self.process.wait(timeout=5)
except TimeoutError:
- log.debug("TIMEOUT - sending SIGKILL to the trace process on {}".format(self._device_id))
+ log.debug(
+ "TIMEOUT - sending SIGKILL to the trace process on {}".format(self._device_id))
self.process.kill()
self.join()
@@ -380,8 +494,10 @@ class TraceThread(threading.Thread):
time.sleep(0.2)
for i in range(10):
if call_adb("shell su root cat /data/local/tmp/winscope_status", device=self._device_id) == 'TRACE_OK\n':
- call_adb("shell su root rm /data/local/tmp/winscope_status", device=self._device_id)
- log.debug("Trace finished successfully on {}".format(self._device_id))
+ call_adb(
+ "shell su root rm /data/local/tmp/winscope_status", device=self._device_id)
+ log.debug("Trace finished successfully on {}".format(
+ self._device_id))
self._success = True
break
log.debug("Still waiting for cleanup on {}".format(self._device_id))
@@ -419,13 +535,7 @@ while true; do sleep 0.1; done
def process_with_device(self, server, path, device_id):
try:
- length = int(server.headers["Content-Length"])
- except KeyError as err:
- raise BadRequest("Missing Content-Length header\n" + str(err))
- except ValueError as err:
- raise BadRequest("Content length unreadable\n" + str(err))
- try:
- requested_types = json.loads(server.rfile.read(length).decode("utf-8"))
+ requested_types = self.get_request(server)
requested_traces = [TRACE_TARGETS[t] for t in requested_types]
except KeyError as err:
raise BadRequest("Unsupported trace target\n" + str(err))
@@ -439,8 +549,10 @@ while true; do sleep 0.1; done
command = StartTrace.TRACE_COMMAND.format(
'\n'.join([t.trace_stop for t in requested_traces]),
'\n'.join([t.trace_start for t in requested_traces]))
- log.debug("Trace requested for {} with targets {}".format(device_id, ','.join(requested_types)))
- TRACE_THREADS[device_id] = TraceThread(device_id, command.encode('utf-8'))
+ log.debug("Trace requested for {} with targets {}".format(
+ device_id, ','.join(requested_types)))
+ TRACE_THREADS[device_id] = TraceThread(
+ device_id, command.encode('utf-8'))
TRACE_THREADS[device_id].start()
server.respond(HTTPStatus.OK, b'', "text/plain")
@@ -453,7 +565,8 @@ class EndTrace(DeviceRequestEndpoint):
TRACE_THREADS[device_id].end_trace()
success = TRACE_THREADS[device_id].success()
- out = TRACE_THREADS[device_id].out + b"\n" + TRACE_THREADS[device_id].err
+ out = TRACE_THREADS[device_id].out + \
+ b"\n" + TRACE_THREADS[device_id].err
command = TRACE_THREADS[device_id].trace_command
TRACE_THREADS.pop(device_id)
if success:
@@ -465,24 +578,50 @@ class EndTrace(DeviceRequestEndpoint):
"utf-8"))
+class ConfigTrace(DeviceRequestEndpoint):
+ def process_with_device(self, server, path, device_id):
+ try:
+ requested_configs = self.get_request(server)
+ config = SurfaceFlingerTraceConfig()
+ for requested_config in requested_configs:
+ if not config.is_valid(requested_config):
+ raise BadRequest(
+ f"Unsupported config {requested_config}\n")
+ config.add(requested_config)
+ except KeyError as err:
+ raise BadRequest("Unsupported trace target\n" + str(err))
+ if device_id in TRACE_THREADS:
+ BadRequest(f"Trace in progress for {device_id}")
+ if not check_root(device_id):
+ raise AdbError(
+ f"Unable to acquire root privileges on the device - check the output of 'adb -s {device_id} shell su root id'")
+ command = config.command()
+ shell = ['adb', '-s', device_id, 'shell']
+ log.debug(f"Starting shell {' '.join(shell)}")
+ process = subprocess.Popen(shell, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
+ stdin=subprocess.PIPE, start_new_session=True)
+ log.debug(f"Changing trace config on device {device_id} cmd:{command}")
+ out, err = process.communicate(command.encode('utf-8'))
+ if process.returncode != 0:
+ raise AdbError(
+ f"Error executing command:\n {command}\n\n### OUTPUT ###{out.decode('utf-8')}\n{err.decode('utf-8')}")
+ log.debug(f"Changing trace config finished on device {device_id}")
+ server.respond(HTTPStatus.OK, b'', "text/plain")
+
+
class StatusEndpoint(DeviceRequestEndpoint):
def process_with_device(self, server, path, device_id):
if device_id not in TRACE_THREADS:
raise BadRequest("No trace in progress for {}".format(device_id))
TRACE_THREADS[device_id].reset_timer()
- server.respond(HTTPStatus.OK, str(TRACE_THREADS[device_id].is_alive()).encode("utf-8"), "text/plain")
+ server.respond(HTTPStatus.OK, str(
+ TRACE_THREADS[device_id].is_alive()).encode("utf-8"), "text/plain")
class DumpEndpoint(DeviceRequestEndpoint):
def process_with_device(self, server, path, device_id):
try:
- length = int(server.headers["Content-Length"])
- except KeyError as err:
- raise BadRequest("Missing Content-Length header\n" + str(err))
- except ValueError as err:
- raise BadRequest("Content length unreadable\n" + str(err))
- try:
- requested_types = json.loads(server.rfile.read(length).decode("utf-8"))
+ requested_types = self.get_request(server)
requested_traces = [DUMP_TARGETS[t] for t in requested_types]
except KeyError as err:
raise BadRequest("Unsupported trace target\n" + str(err))
@@ -491,7 +630,7 @@ class DumpEndpoint(DeviceRequestEndpoint):
if not check_root(device_id):
raise AdbError(
"Unable to acquire root privileges on the device - check the output of 'adb -s {} shell su root id'"
- .format(device_id))
+ .format(device_id))
command = '\n'.join(t.dump_command for t in requested_traces)
shell = ['adb', '-s', device_id, 'shell']
log.debug("Starting dump shell {}".format(' '.join(shell)))
@@ -509,12 +648,17 @@ class DumpEndpoint(DeviceRequestEndpoint):
class ADBWinscopeProxy(BaseHTTPRequestHandler):
def __init__(self, request, client_address, server):
self.router = RequestRouter(self)
- self.router.register_endpoint(RequestType.GET, "devices", ListDevicesEndpoint())
- self.router.register_endpoint(RequestType.GET, "status", StatusEndpoint())
- self.router.register_endpoint(RequestType.GET, "fetch", FetchFileEndpoint())
+ self.router.register_endpoint(
+ RequestType.GET, "devices", ListDevicesEndpoint())
+ self.router.register_endpoint(
+ RequestType.GET, "status", StatusEndpoint())
+ self.router.register_endpoint(
+ RequestType.GET, "fetch", FetchFilesEndpoint())
self.router.register_endpoint(RequestType.POST, "start", StartTrace())
self.router.register_endpoint(RequestType.POST, "end", EndTrace())
self.router.register_endpoint(RequestType.POST, "dump", DumpEndpoint())
+ self.router.register_endpoint(
+ RequestType.POST, "configtrace", ConfigTrace())
super().__init__(request, client_address, server)
def respond(self, code: int, data: bytes, mime: str) -> None:
diff --git a/tools/winscope/env/dev.env.js b/tools/winscope/env/dev.env.js
new file mode 100644
index 000000000..0b533b240
--- /dev/null
+++ b/tools/winscope/env/dev.env.js
@@ -0,0 +1,19 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+module.exports = {
+ NODE_ENV: 'development'
+}; \ No newline at end of file
diff --git a/tools/winscope/env/prod.env.js b/tools/winscope/env/prod.env.js
new file mode 100644
index 000000000..f1bbba029
--- /dev/null
+++ b/tools/winscope/env/prod.env.js
@@ -0,0 +1,19 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+module.exports = {
+ NODE_ENV: 'production'
+}; \ No newline at end of file
diff --git a/tools/winscope/libs/virtualList/Item.js b/tools/winscope/libs/virtualList/Item.js
new file mode 100644
index 000000000..2f1a0e5ef
--- /dev/null
+++ b/tools/winscope/libs/virtualList/Item.js
@@ -0,0 +1,81 @@
+import Vue from 'vue'
+import { ItemProps, SlotProps } from './props'
+
+const Wrapper = {
+ created() {
+ this.shapeKey = this.horizontal ? 'offsetWidth' : 'offsetHeight'
+ },
+
+ mounted() {
+ if (typeof ResizeObserver !== 'undefined') {
+ this.resizeObserver = new ResizeObserver(() => {
+ this.dispatchSizeChange()
+ })
+ this.resizeObserver.observe(this.$el)
+ }
+ },
+
+ // since component will be reused, so dispatch when updated
+ updated() {
+ this.dispatchSizeChange()
+ },
+
+ beforeDestroy() {
+ if (this.resizeObserver) {
+ this.resizeObserver.disconnect()
+ this.resizeObserver = null
+ }
+ },
+
+ methods: {
+ getCurrentSize() {
+ return this.$el ? this.$el[this.shapeKey] : 0
+ },
+
+ // tell parent current size identify by unique key
+ dispatchSizeChange() {
+ this.$parent.$emit(this.event, this.uniqueKey, this.getCurrentSize(), this.hasInitial)
+ }
+ }
+}
+
+// wrapping for item
+export const Item = Vue.component('virtual-list-item', {
+ mixins: [Wrapper],
+
+ props: ItemProps,
+
+ render(h) {
+ const { tag, component, extraProps = {}, index, scopedSlots = {}, uniqueKey } = this
+ extraProps.source = this.source
+ extraProps.index = index
+
+ return h(tag, {
+ key: uniqueKey,
+ attrs: {
+ role: 'item'
+ }
+ }, [h(component, {
+ props: extraProps,
+ scopedSlots: scopedSlots
+ })])
+ }
+})
+
+// wrapping for slot
+export const Slot = Vue.component('virtual-list-slot', {
+ mixins: [Wrapper],
+
+ props: SlotProps,
+
+ render(h) {
+ const { tag, uniqueKey } = this
+
+ return h(tag, {
+ key: uniqueKey,
+ attrs: {
+ role: uniqueKey
+ }
+ }, this.$slots.default)
+ }
+}) \ No newline at end of file
diff --git a/tools/winscope/libs/virtualList/README.md b/tools/winscope/libs/virtualList/README.md
new file mode 100644
index 000000000..0b99a70b0
--- /dev/null
+++ b/tools/winscope/libs/virtualList/README.md
@@ -0,0 +1,3 @@
+# vue-virtual-scroll-list
+
+The original library can be found on GitHub at [https://github.com/tangbc/vue-virtual-scroll-list](https://github.com/tangbc/vue-virtual-scroll-list). \ No newline at end of file
diff --git a/tools/winscope/libs/virtualList/VirtualList.js b/tools/winscope/libs/virtualList/VirtualList.js
new file mode 100644
index 000000000..1a6b632eb
--- /dev/null
+++ b/tools/winscope/libs/virtualList/VirtualList.js
@@ -0,0 +1,354 @@
+import Vue from 'vue'
+import Virtual from './virtual'
+import { Item, Slot } from './Item'
+import { VirtualProps } from './props'
+
+const EVENT_TYPE = {
+ ITEM: 'item_resize',
+ SLOT: 'slot_resize'
+}
+const SLOT_TYPE = {
+ HEADER: 'header', // string value also use for aria role attribute
+ FOOTER: 'footer'
+}
+
+const VirtualList = Vue.component('virtual-list', {
+ props: VirtualProps,
+
+ data() {
+ return {
+ range: null
+ }
+ },
+
+ watch: {
+ 'dataSources.length'() {
+ this.virtual.updateParam('uniqueIds', this.getUniqueIdFromDataSources())
+ this.virtual.handleDataSourcesChange()
+ },
+
+ start(newValue) {
+ this.scrollToIndex(newValue)
+ },
+
+ offset(newValue) {
+ this.scrollToOffset(newValue)
+ }
+ },
+
+ created() {
+ this.isHorizontal = this.direction === 'horizontal'
+ this.directionKey = this.isHorizontal ? 'scrollLeft' : 'scrollTop'
+
+ this.installVirtual()
+
+ // listen item size change
+ this.$on(EVENT_TYPE.ITEM, this.onItemResized)
+
+ // listen slot size change
+ if (this.$slots.header || this.$slots.footer) {
+ this.$on(EVENT_TYPE.SLOT, this.onSlotResized)
+ }
+ },
+
+ // set back offset when awake from keep-alive
+ activated() {
+ this.scrollToOffset(this.virtual.offset)
+ },
+
+ mounted() {
+ // set position
+ if (this.start) {
+ this.scrollToIndex(this.start)
+ } else if (this.offset) {
+ this.scrollToOffset(this.offset)
+ }
+
+ // in page mode we bind scroll event to document
+ if (this.pageMode) {
+ this.updatePageModeFront()
+
+ document.addEventListener('scroll', this.onScroll, {
+ passive: false
+ })
+ }
+ },
+
+ beforeDestroy() {
+ this.virtual.destroy()
+ if (this.pageMode) {
+ document.removeEventListener('scroll', this.onScroll)
+ }
+ },
+
+ methods: {
+ // get item size by id
+ getSize(id) {
+ return this.virtual.sizes.get(id)
+ },
+
+ // get the total number of stored (rendered) items
+ getSizes() {
+ return this.virtual.sizes.size
+ },
+
+ // return current scroll offset
+ getOffset() {
+ if (this.pageMode) {
+ return document.documentElement[this.directionKey] || document.body[this.directionKey]
+ } else {
+ const { root } = this.$refs
+ return root ? Math.ceil(root[this.directionKey]) : 0
+ }
+ },
+
+ // return client viewport size
+ getClientSize() {
+ const key = this.isHorizontal ? 'clientWidth' : 'clientHeight'
+ if (this.pageMode) {
+ return document.documentElement[key] || document.body[key]
+ } else {
+ const { root } = this.$refs
+ return root ? Math.ceil(root[key]) : 0
+ }
+ },
+
+ // return all scroll size
+ getScrollSize() {
+ const key = this.isHorizontal ? 'scrollWidth' : 'scrollHeight'
+ if (this.pageMode) {
+ return document.documentElement[key] || document.body[key]
+ } else {
+ const { root } = this.$refs
+ return root ? Math.ceil(root[key]) : 0
+ }
+ },
+
+ // set current scroll position to a expectant offset
+ scrollToOffset(offset) {
+ if (this.pageMode) {
+ document.body[this.directionKey] = offset
+ document.documentElement[this.directionKey] = offset
+ } else {
+ const { root } = this.$refs
+ if (root) {
+ root[this.directionKey] = offset
+ }
+ }
+ },
+
+ // set current scroll position to a expectant index
+ scrollToIndex(index) {
+ // scroll to bottom
+ if (index >= this.dataSources.length - 1) {
+ this.scrollToBottom()
+ } else {
+ const offset = this.virtual.getOffset(index)
+ this.scrollToOffset(offset)
+ }
+ },
+
+ // set current scroll position to bottom
+ scrollToBottom() {
+ const { shepherd } = this.$refs
+ if (shepherd) {
+ const offset = shepherd[this.isHorizontal ? 'offsetLeft' : 'offsetTop']
+ this.scrollToOffset(offset)
+
+ // check if it's really scrolled to the bottom
+ // maybe list doesn't render and calculate to last range
+ // so we need retry in next event loop until it really at bottom
+ setTimeout(() => {
+ if (this.getOffset() + this.getClientSize() < this.getScrollSize()) {
+ this.scrollToBottom()
+ }
+ }, 3)
+ }
+ },
+
+ // when using page mode we need update slot header size manually
+ // taking root offset relative to the browser as slot header size
+ updatePageModeFront() {
+ const { root } = this.$refs
+ if (root) {
+ const rect = root.getBoundingClientRect()
+ const { defaultView } = root.ownerDocument
+ const offsetFront = this.isHorizontal ? (rect.left + defaultView.pageXOffset) : (rect.top + defaultView.pageYOffset)
+ this.virtual.updateParam('slotHeaderSize', offsetFront)
+ }
+ },
+
+ // reset all state back to initial
+ reset() {
+ this.virtual.destroy()
+ this.scrollToOffset(0)
+ this.installVirtual()
+ },
+
+ // ----------- public method end -----------
+
+ installVirtual() {
+ this.virtual = new Virtual({
+ slotHeaderSize: 0,
+ slotFooterSize: 0,
+ keeps: this.keeps,
+ estimateSize: this.estimateSize,
+ buffer: Math.round(this.keeps / 3), // recommend for a third of keeps
+ uniqueIds: this.getUniqueIdFromDataSources()
+ }, this.onRangeChanged)
+
+ // sync initial range
+ this.range = this.virtual.getRange()
+ },
+
+ getUniqueIdFromDataSources() {
+ const { dataKey } = this
+ return this.dataSources.map((dataSource) => typeof dataKey === 'function' ? dataKey(dataSource) : dataSource[dataKey])
+ },
+
+ // event called when each item mounted or size changed
+ onItemResized(id, size) {
+ this.virtual.saveSize(id, size)
+ this.$emit('resized', id, size)
+ },
+
+ // event called when slot mounted or size changed
+ onSlotResized(type, size, hasInit) {
+ if (type === SLOT_TYPE.HEADER) {
+ this.virtual.updateParam('slotHeaderSize', size)
+ } else if (type === SLOT_TYPE.FOOTER) {
+ this.virtual.updateParam('slotFooterSize', size)
+ }
+
+ if (hasInit) {
+ this.virtual.handleSlotSizeChange()
+ }
+ },
+
+ // here is the re-rendering entry
+ onRangeChanged(range) {
+ this.range = range
+ },
+
+ onScroll(evt) {
+ const offset = this.getOffset()
+ const clientSize = this.getClientSize()
+ const scrollSize = this.getScrollSize()
+
+ // iOS scroll-spring-back behavior will make direction mistake
+ if (offset < 0 || (offset + clientSize > scrollSize + 1) || !scrollSize) {
+ return
+ }
+
+ this.virtual.handleScroll(offset)
+ this.emitEvent(offset, clientSize, scrollSize, evt)
+ },
+
+ // emit event in special position
+ emitEvent(offset, clientSize, scrollSize, evt) {
+ this.$emit('scroll', evt, this.virtual.getRange())
+
+ if (this.virtual.isFront() && !!this.dataSources.length && (offset - this.topThreshold <= 0)) {
+ this.$emit('totop')
+ } else if (this.virtual.isBehind() && (offset + clientSize + this.bottomThreshold >= scrollSize)) {
+ this.$emit('tobottom')
+ }
+ },
+
+ // get the real render slots based on range data
+ // in-place patch strategy will try to reuse components as possible
+ // so those components that are reused will not trigger lifecycle mounted
+ getRenderSlots(h) {
+ const slots = []
+ const { start, end } = this.range
+ const { dataSources, dataKey, itemClass, itemTag, itemStyle, isHorizontal, extraProps, dataComponent, itemScopedSlots } = this
+ for (let index = start; index <= end; index++) {
+ const dataSource = dataSources[index]
+ if (dataSource) {
+ const uniqueKey = typeof dataKey === 'function' ? dataKey(dataSource) : dataSource[dataKey]
+ if (typeof uniqueKey === 'string' || typeof uniqueKey === 'number') {
+ slots.push(h(Item, {
+ props: {
+ index,
+ tag: itemTag,
+ event: EVENT_TYPE.ITEM,
+ horizontal: isHorizontal,
+ uniqueKey: uniqueKey,
+ source: dataSource,
+ extraProps: extraProps,
+ component: dataComponent,
+ scopedSlots: itemScopedSlots
+ },
+ style: itemStyle,
+ class: `${itemClass}${this.itemClassAdd ? ' ' + this.itemClassAdd(index) : ''}`
+ }))
+ } else {
+ console.warn(`Cannot get the data-key '${dataKey}' from data-sources.`)
+ }
+ } else {
+ console.warn(`Cannot get the index '${index}' from data-sources.`)
+ }
+ }
+ return slots
+ }
+ },
+
+ // render function, a closer-to-the-compiler alternative to templates
+ // https://vuejs.org/v2/guide/render-function.html#The-Data-Object-In-Depth
+ render(h) {
+ const { header, footer } = this.$slots
+ const { padFront, padBehind } = this.range
+ const { isHorizontal, pageMode, rootTag, wrapTag, wrapClass, wrapStyle, headerTag, headerClass, headerStyle, footerTag, footerClass, footerStyle } = this
+ const paddingStyle = { padding: isHorizontal ? `0px ${padBehind}px 0px ${padFront}px` : `${padFront}px 0px ${padBehind}px` }
+ const wrapperStyle = wrapStyle ? Object.assign({}, wrapStyle, paddingStyle) : paddingStyle
+
+ return h(rootTag, {
+ ref: 'root',
+ on: {
+ '&scroll': !pageMode && this.onScroll
+ }
+ }, [
+ // header slot
+ header ? h(Slot, {
+ class: headerClass,
+ style: headerStyle,
+ props: {
+ tag: headerTag,
+ event: EVENT_TYPE.SLOT,
+ uniqueKey: SLOT_TYPE.HEADER
+ }
+ }, header) : null,
+
+ // main list
+ h(wrapTag, {
+ class: wrapClass,
+ attrs: {
+ role: 'group'
+ },
+ style: wrapperStyle
+ }, this.getRenderSlots(h)),
+
+ // footer slot
+ footer ? h(Slot, {
+ class: footerClass,
+ style: footerStyle,
+ props: {
+ tag: footerTag,
+ event: EVENT_TYPE.SLOT,
+ uniqueKey: SLOT_TYPE.FOOTER
+ }
+ }, footer) : null,
+
+ // an empty element use to scroll to bottom
+ h('div', {
+ ref: 'shepherd',
+ style: {
+ width: isHorizontal ? '0px' : '100%',
+ height: isHorizontal ? '100%' : '0px'
+ }
+ })
+ ])
+ }
+})
+
+export default VirtualList \ No newline at end of file
diff --git a/tools/winscope/libs/virtualList/props.js b/tools/winscope/libs/virtualList/props.js
new file mode 100644
index 000000000..410b581d8
--- /dev/null
+++ b/tools/winscope/libs/virtualList/props.js
@@ -0,0 +1,150 @@
+export const VirtualProps = {
+ dataKey: {
+ type: [String, Function],
+ required: true
+ },
+ dataSources: {
+ type: Array,
+ required: true
+ },
+ dataComponent: {
+ type: [Object, Function],
+ required: true
+ },
+
+ keeps: {
+ type: Number,
+ default: 30
+ },
+ extraProps: {
+ type: Object
+ },
+ estimateSize: {
+ type: Number,
+ default: 50
+ },
+
+ direction: {
+ type: String,
+ default: 'vertical' // the other value is horizontal
+ },
+ start: {
+ type: Number,
+ default: 0
+ },
+ offset: {
+ type: Number,
+ default: 0
+ },
+ topThreshold: {
+ type: Number,
+ default: 0
+ },
+ bottomThreshold: {
+ type: Number,
+ default: 0
+ },
+ pageMode: {
+ type: Boolean,
+ default: false
+ },
+ rootTag: {
+ type: String,
+ default: 'div'
+ },
+ wrapTag: {
+ type: String,
+ default: 'div'
+ },
+ wrapClass: {
+ type: String,
+ default: ''
+ },
+ wrapStyle: {
+ type: Object
+ },
+ itemTag: {
+ type: String,
+ default: 'div'
+ },
+ itemClass: {
+ type: String,
+ default: ''
+ },
+ itemClassAdd: {
+ type: Function
+ },
+ itemStyle: {
+ type: Object
+ },
+ headerTag: {
+ type: String,
+ default: 'div'
+ },
+ headerClass: {
+ type: String,
+ default: ''
+ },
+ headerStyle: {
+ type: Object
+ },
+ footerTag: {
+ type: String,
+ default: 'div'
+ },
+ footerClass: {
+ type: String,
+ default: ''
+ },
+ footerStyle: {
+ type: Object
+ },
+ itemScopedSlots: {
+ type: Object
+ }
+}
+
+export const ItemProps = {
+ index: {
+ type: Number
+ },
+ event: {
+ type: String
+ },
+ tag: {
+ type: String
+ },
+ horizontal: {
+ type: Boolean
+ },
+ source: {
+ type: Object
+ },
+ component: {
+ type: [Object, Function]
+ },
+ uniqueKey: {
+ type: [String, Number]
+ },
+ extraProps: {
+ type: Object
+ },
+ scopedSlots: {
+ type: Object
+ }
+}
+
+export const SlotProps = {
+ event: {
+ type: String
+ },
+ uniqueKey: {
+ type: String
+ },
+ tag: {
+ type: String
+ },
+ horizontal: {
+ type: Boolean
+ }
+} \ No newline at end of file
diff --git a/tools/winscope/libs/virtualList/virtual.js b/tools/winscope/libs/virtualList/virtual.js
new file mode 100644
index 000000000..94688f51c
--- /dev/null
+++ b/tools/winscope/libs/virtualList/virtual.js
@@ -0,0 +1,305 @@
+const DIRECTION_TYPE = {
+ FRONT: 'FRONT', // scroll up or left
+ BEHIND: 'BEHIND' // scroll down or right
+}
+const CALC_TYPE = {
+ INIT: 'INIT',
+ FIXED: 'FIXED',
+ DYNAMIC: 'DYNAMIC'
+}
+const LEADING_BUFFER = 2
+
+export default class Virtual {
+ constructor(param, callUpdate) {
+ this.init(param, callUpdate)
+ }
+
+ init(param, callUpdate) {
+ // param data
+ this.param = param
+ this.callUpdate = callUpdate
+
+ // size data
+ this.sizes = new Map()
+ this.firstRangeTotalSize = 0
+ this.firstRangeAverageSize = 0
+ this.lastCalcIndex = 0
+ this.fixedSizeValue = 0
+ this.calcType = CALC_TYPE.INIT
+
+ // scroll data
+ this.offset = 0
+ this.direction = ''
+
+ // range data
+ this.range = Object.create(null)
+ if (param) {
+ this.checkRange(0, param.keeps - 1)
+ }
+
+ // benchmark test data
+ // this.__bsearchCalls = 0
+ // this.__getIndexOffsetCalls = 0
+ }
+
+ destroy() {
+ this.init(null, null)
+ }
+
+ // return current render range
+ getRange() {
+ const range = Object.create(null)
+ range.start = this.range.start
+ range.end = this.range.end
+ range.padFront = this.range.padFront
+ range.padBehind = this.range.padBehind
+ return range
+ }
+
+ isBehind() {
+ return this.direction === DIRECTION_TYPE.BEHIND
+ }
+
+ isFront() {
+ return this.direction === DIRECTION_TYPE.FRONT
+ }
+
+ // return start index offset
+ getOffset(start) {
+ return (start < 1 ? 0 : this.getIndexOffset(start)) + this.param.slotHeaderSize
+ }
+
+ updateParam(key, value) {
+ if (this.param && (key in this.param)) {
+ // if uniqueIds change, find out deleted id and remove from size map
+ if (key === 'uniqueIds') {
+ this.sizes.forEach((v, key) => {
+ if (!value.includes(key)) {
+ this.sizes.delete(key)
+ }
+ })
+ }
+ this.param[key] = value
+ }
+ }
+
+ // save each size map by id
+ saveSize(id, size) {
+ this.sizes.set(id, size)
+
+ // we assume size type is fixed at the beginning and remember first size value
+ // if there is no size value different from this at next coming saving
+ // we think it's a fixed size list, otherwise is dynamic size list
+ if (this.calcType === CALC_TYPE.INIT) {
+ this.fixedSizeValue = size
+ this.calcType = CALC_TYPE.FIXED
+ } else if (this.calcType === CALC_TYPE.FIXED && this.fixedSizeValue !== size) {
+ this.calcType = CALC_TYPE.DYNAMIC
+ // it's no use at all
+ delete this.fixedSizeValue
+ }
+
+ // calculate the average size only in the first range
+ if (this.calcType !== CALC_TYPE.FIXED && typeof this.firstRangeTotalSize !== 'undefined') {
+ if (this.sizes.size < Math.min(this.param.keeps, this.param.uniqueIds.length)) {
+ this.firstRangeTotalSize = this.firstRangeTotalSize + size
+ this.firstRangeAverageSize = Math.round(this.firstRangeTotalSize / this.sizes.size)
+ } else {
+ // it's done using
+ delete this.firstRangeTotalSize
+ }
+ }
+ }
+
+ // in some special situation (e.g. length change) we need to update in a row
+ // try going to render next range by a leading buffer according to current direction
+ handleDataSourcesChange() {
+ let start = this.range.start
+
+ if (this.isFront()) {
+ start = start - LEADING_BUFFER
+ } else if (this.isBehind()) {
+ start = start + LEADING_BUFFER
+ }
+
+ start = Math.max(start, 0)
+
+ this.updateRange(this.range.start, this.getEndByStart(start))
+ }
+
+ // when slot size change, we also need force update
+ handleSlotSizeChange() {
+ this.handleDataSourcesChange()
+ }
+
+ // calculating range on scroll
+ handleScroll(offset) {
+ this.direction = offset < this.offset ? DIRECTION_TYPE.FRONT : DIRECTION_TYPE.BEHIND
+ this.offset = offset
+
+ if (this.direction === DIRECTION_TYPE.FRONT) {
+ this.handleFront()
+ } else if (this.direction === DIRECTION_TYPE.BEHIND) {
+ this.handleBehind()
+ }
+ }
+
+ // ----------- public method end -----------
+
+ handleFront() {
+ const overs = this.getScrollOvers()
+ // should not change range if start doesn't exceed overs
+ if (overs > this.range.start) {
+ return
+ }
+
+ // move up start by a buffer length, and make sure its safety
+ const start = Math.max(overs - this.param.buffer, 0)
+ this.checkRange(start, this.getEndByStart(start))
+ }
+
+ handleBehind() {
+ const overs = this.getScrollOvers()
+ // range should not change if scroll overs within buffer
+ if (overs < this.range.start + this.param.buffer) {
+ return
+ }
+
+ this.checkRange(overs, this.getEndByStart(overs))
+ }
+
+ // return the pass overs according to current scroll offset
+ getScrollOvers() {
+ // if slot header exist, we need subtract its size
+ const offset = this.offset - this.param.slotHeaderSize
+ if (offset <= 0) {
+ return 0
+ }
+
+ // if is fixed type, that can be easily
+ if (this.isFixedType()) {
+ return Math.floor(offset / this.fixedSizeValue)
+ }
+
+ let low = 0
+ let middle = 0
+ let middleOffset = 0
+ let high = this.param.uniqueIds.length
+
+ while (low <= high) {
+ // this.__bsearchCalls++
+ middle = low + Math.floor((high - low) / 2)
+ middleOffset = this.getIndexOffset(middle)
+
+ if (middleOffset === offset) {
+ return middle
+ } else if (middleOffset < offset) {
+ low = middle + 1
+ } else if (middleOffset > offset) {
+ high = middle - 1
+ }
+ }
+
+ return low > 0 ? --low : 0
+ }
+
+ // return a scroll offset from given index, can efficiency be improved more here?
+ // although the call frequency is very high, its only a superposition of numbers
+ getIndexOffset(givenIndex) {
+ if (!givenIndex) {
+ return 0
+ }
+
+ let offset = 0
+ let indexSize = 0
+ for (let index = 0; index < givenIndex; index++) {
+ // this.__getIndexOffsetCalls++
+ indexSize = this.sizes.get(this.param.uniqueIds[index])
+ offset = offset + (typeof indexSize === 'number' ? indexSize : this.getEstimateSize())
+ }
+
+ // remember last calculate index
+ this.lastCalcIndex = Math.max(this.lastCalcIndex, givenIndex - 1)
+ this.lastCalcIndex = Math.min(this.lastCalcIndex, this.getLastIndex())
+
+ return offset
+ }
+
+ // is fixed size type
+ isFixedType() {
+ return this.calcType === CALC_TYPE.FIXED
+ }
+
+ // return the real last index
+ getLastIndex() {
+ return this.param.uniqueIds.length - 1
+ }
+
+ // in some conditions range is broke, we need correct it
+ // and then decide whether need update to next range
+ checkRange(start, end) {
+ const keeps = this.param.keeps
+ const total = this.param.uniqueIds.length
+
+ // datas less than keeps, render all
+ if (total <= keeps) {
+ start = 0
+ end = this.getLastIndex()
+ } else if (end - start < keeps - 1) {
+ // if range length is less than keeps, current it base on end
+ start = end - keeps + 1
+ }
+
+ if (this.range.start !== start) {
+ this.updateRange(start, end)
+ }
+ }
+
+ // setting to a new range and re-render
+ updateRange(start, end) {
+ this.range.start = start
+ this.range.end = end
+ this.range.padFront = this.getPadFront()
+ this.range.padBehind = this.getPadBehind()
+ this.callUpdate(this.getRange())
+ }
+
+ // return end base on start
+ getEndByStart(start) {
+ const theoryEnd = start + this.param.keeps - 1
+ const trulyEnd = Math.min(theoryEnd, this.getLastIndex())
+ return trulyEnd
+ }
+
+ // return total front offset
+ getPadFront() {
+ if (this.isFixedType()) {
+ return this.fixedSizeValue * this.range.start
+ } else {
+ return this.getIndexOffset(this.range.start)
+ }
+ }
+
+ // return total behind offset
+ getPadBehind() {
+ const end = this.range.end
+ const lastIndex = this.getLastIndex()
+
+ if (this.isFixedType()) {
+ return (lastIndex - end) * this.fixedSizeValue
+ }
+
+ // if it's all calculated, return the exactly offset
+ if (this.lastCalcIndex === lastIndex) {
+ return this.getIndexOffset(lastIndex) - this.getIndexOffset(end)
+ } else {
+ // if not, use a estimated value
+ return (lastIndex - end) * this.getEstimateSize()
+ }
+ }
+
+ // get the item estimate size
+ getEstimateSize() {
+ return this.isFixedType() ? this.fixedSizeValue : (this.firstRangeAverageSize || this.param.estimateSize)
+ }
+} \ No newline at end of file
diff --git a/tools/winscope/package.json b/tools/winscope/package.json
index 617f577db..6a4633785 100644
--- a/tools/winscope/package.json
+++ b/tools/winscope/package.json
@@ -6,27 +6,66 @@
"private": true,
"scripts": {
"dev": "cross-env NODE_ENV=development webpack-dev-server --open --hot",
- "build": "cross-env NODE_ENV=production webpack --progress --hide-modules"
+ "build": "cross-env NODE_ENV=production webpack --progress --hide-modules",
+ "test": "webpack --config webpack.spec.config.js && jasmine dist/bundleSpec.js"
},
"dependencies": {
+ "cross-env": "^7.0.2",
+ "jszip": "^3.5.0",
+ "kotlin": "^1.3.72",
+ "lodash.clonedeep": "^4.5.0",
+ "ts-loader": "^8.0.3",
+ "typescript": "^4.0.2",
"vue": "^2.3.3",
- "vue-material": "0.8.1"
+ "vue-context": "^5.2.0",
+ "vue-material": "^1.0.0-beta-11",
+ "vuex": "^3.4.0"
},
"devDependencies": {
- "babel-core": "^6.0.0",
- "babel-loader": "^6.0.0",
- "babel-preset-env": "^1.5.1",
- "cross-env": "^3.0.0",
- "css-loader": "^0.25.0",
- "file-loader": "^0.9.0",
- "html-webpack-inline-source-plugin": "^0.0.9",
- "html-webpack-plugin": "^2.30.1",
- "loader-utils": "^1.1.0",
- "protobufjs": "^6.8.0",
- "style-loader": "^0.19.0",
- "vue-loader": "^12.1.0",
- "vue-template-compiler": "^2.3.3",
- "webpack": "^2.6.1",
- "webpack-dev-server": "^2.4.5"
+ "@babel/core": "^7.10.5",
+ "@babel/polyfill": "^7.10.4",
+ "@babel/preset-env": "^7.10.4",
+ "@babel/register": "^7.10.5",
+ "@jetbrains/kotlin-webpack-plugin": "^3.0.2",
+ "@testing-library/vue": "^5.1.0",
+ "@types/lodash": "^4.14.158",
+ "babel-loader": "^8.1.0",
+ "compression-webpack-plugin": "^4.0.0",
+ "cross-env": "^7.0.2",
+ "css-loader": "^3.6.0",
+ "eslint": "^7.1.0",
+ "eslint-config-google": "^0.14.0",
+ "eslint-plugin-vue": "^6.2.2",
+ "file-loader": "^6.0.0",
+ "friendly-errors-webpack-plugin": "^1.7.0",
+ "html-webpack-inline-source-plugin": "^0.0.10",
+ "html-webpack-plugin": "3.2.0",
+ "husky": "^4.2.5",
+ "jasmine": "^3.5.0",
+ "lint-staged": ">=10",
+ "loader-utils": "^2.0.0",
+ "mini-css-extract-plugin": "^0.9.0",
+ "optimize-css-assets-webpack-plugin": "^5.0.3",
+ "protobufjs": "^6.10.0",
+ "source-map-loader": "^1.0.1",
+ "style-loader": "^1.2.1",
+ "ts-loader": "^8.0.1",
+ "typescript": "^3.9.7",
+ "uglifyjs-webpack-plugin": "^2.2.0",
+ "vue-loader": "^15.9.3",
+ "vue-style-loader": "^4.1.2",
+ "vue-template-compiler": "^2.6.11",
+ "webpack": "^4.43.0",
+ "webpack-cli": "^3.3.12",
+ "webpack-dev-server": "^3.11.0",
+ "webpack-merge": "^5.0.9"
+ },
+ "husky": {
+ "hooks": {
+ "pre-commit": "lint-staged"
+ }
+ },
+ "lint-staged": {
+ "*.{js,vue}": "eslint --cache --fix"
}
}
diff --git a/tools/winscope/spec/DiffSpec.js b/tools/winscope/spec/DiffSpec.js
new file mode 100644
index 000000000..68dfa4e82
--- /dev/null
+++ b/tools/winscope/spec/DiffSpec.js
@@ -0,0 +1,267 @@
+import { DiffGenerator, DiffType } from "../src/utils/diff.js";
+import { Node, DiffNode, toPlainObject } from "./utils/tree.js";
+
+function checkDiffTreeWithNoModifiedCheck(oldTree, newTree, expectedDiffTree) {
+ const diffTree = new DiffGenerator(newTree)
+ .compareWith(oldTree)
+ .withUniqueNodeId(node => node.id)
+ .generateDiffTree();
+
+ expect(diffTree).toEqual(expectedDiffTree);
+}
+
+describe("DiffGenerator", () => {
+ it("can generate a simple add diff", () => {
+ const oldTree = new Node({ id: 1 }, [
+ new Node({ id: 2 }, []),
+ new Node({ id: 3 }, []),
+ new Node({ id: 4 }, []),
+ ]);
+
+ const newTree = new Node({ id: 1 }, [
+ new Node({ id: 2 }, []),
+ new Node({ id: 3 }, [
+ new Node({ id: 5 }, []),
+ ]),
+ new Node({ id: 4 }, []),
+ ]);
+
+ const diffTree = new DiffGenerator(newTree)
+ .compareWith(oldTree)
+ .withUniqueNodeId(node => node.id)
+ .withModifiedCheck(() => false)
+ .generateDiffTree();
+
+ const expectedDiffTree = toPlainObject(
+ new DiffNode({ id: 1 }, DiffType.NONE, [
+ new DiffNode({ id: 2 }, DiffType.NONE, []),
+ new DiffNode({ id: 3 }, DiffType.NONE, [
+ new DiffNode({ id: 5 }, DiffType.ADDED, []),
+ ]),
+ new DiffNode({ id: 4 }, DiffType.NONE, []),
+ ])
+ );
+
+ checkDiffTreeWithNoModifiedCheck(oldTree, newTree, expectedDiffTree);
+ });
+
+ it("can generate a simple delete diff", () => {
+ const oldTree = new Node({ id: 1 }, [
+ new Node({ id: 2 }, []),
+ new Node({ id: 3 }, [
+ new Node({ id: 5 }, []),
+ ]),
+ new Node({ id: 4 }, []),
+ ]);
+
+ const newTree = new Node({ id: 1 }, [
+ new Node({ id: 2 }, []),
+ new Node({ id: 3 }, []),
+ new Node({ id: 4 }, []),
+ ]);
+
+ const expectedDiffTree = toPlainObject(
+ new DiffNode({ id: 1 }, DiffType.NONE, [
+ new DiffNode({ id: 2 }, DiffType.NONE, []),
+ new DiffNode({ id: 3 }, DiffType.NONE, [
+ new DiffNode({ id: 5 }, DiffType.DELETED, []),
+ ]),
+ new DiffNode({ id: 4 }, DiffType.NONE, []),
+ ])
+ );
+
+ checkDiffTreeWithNoModifiedCheck(oldTree, newTree, expectedDiffTree);
+ });
+
+ it("can generate a simple move diff", () => {
+ const oldTree = new Node({ id: 1 }, [
+ new Node({ id: 2 }, []),
+ new Node({ id: 3 }, [
+ new Node({ id: 5 }, []),
+ ]),
+ new Node({ id: 4 }, []),
+ ]);
+
+ const newTree = new Node({ id: 1 }, [
+ new Node({ id: 2 }, []),
+ new Node({ id: 3 }, []),
+ new Node({ id: 4 }, [
+ new Node({ id: 5 }, []),
+ ]),
+ ]);
+
+ const expectedDiffTree = toPlainObject(
+ new DiffNode({ id: 1 }, DiffType.NONE, [
+ new DiffNode({ id: 2 }, DiffType.NONE, []),
+ new DiffNode({ id: 3 }, DiffType.NONE, [
+ new DiffNode({ id: 5 }, DiffType.DELETED_MOVE, []),
+ ]),
+ new DiffNode({ id: 4 }, DiffType.NONE, [
+ new DiffNode({ id: 5 }, DiffType.ADDED_MOVE, []),
+ ]),
+ ])
+ );
+
+ checkDiffTreeWithNoModifiedCheck(oldTree, newTree, expectedDiffTree);
+ });
+
+ it("can generate a simple modified diff", () => {
+ const oldTree = new Node({ id: 1, data: "xyz" }, [
+ new Node({ id: 2, data: "abc" }, []),
+ new Node({ id: 3, data: "123" }, []),
+ ]);
+
+ const newTree = new Node({ id: 1, data: "xyz" }, [
+ new Node({ id: 2, data: "def" }, []),
+ new Node({ id: 3, data: "123" }, []),
+ ]);
+
+ const expectedDiffTree = toPlainObject(
+ new DiffNode({ id: 1, data: "xyz" }, DiffType.NONE, [
+ new DiffNode({ id: 2, data: "def" }, DiffType.MODIFIED, []),
+ new DiffNode({ id: 3, data: "123" }, DiffType.NONE, []),
+ ])
+ );
+
+ const diffTree = new DiffGenerator(newTree)
+ .compareWith(oldTree)
+ .withUniqueNodeId(node => node.id)
+ .withModifiedCheck(
+ (newNode, oldNode) => newNode.data != oldNode.data)
+ .generateDiffTree();
+
+ expect(diffTree).toEqual(expectedDiffTree);
+ });
+
+ it("can handle move and inner addition diff", () => {
+ const oldTree = new Node({ id: 1 }, [
+ new Node({ id: 2 }, []),
+ new Node({ id: 3 }, [
+ new Node({ id: 4 }, []),
+ ]),
+ ]);
+
+ const newTree = new Node({ id: 1 }, [
+ new Node({ id: 2 }, [
+ new Node({ id: 4 }, [
+ new Node({ id: 5 }, []),
+ ]),
+ ]),
+ new Node({ id: 3 }, []),
+ ]);
+
+ const expectedDiffTree = toPlainObject(
+ new DiffNode({ id: 1 }, DiffType.NONE, [
+ new DiffNode({ id: 2 }, DiffType.NONE, [
+ new DiffNode({ id: 4 }, DiffType.ADDED_MOVE, [
+ new DiffNode({ id: 5 }, DiffType.ADDED, []),
+ ]),
+ ]),
+ new DiffNode({ id: 3 }, DiffType.NONE, [
+ new DiffNode({ id: 4 }, DiffType.DELETED_MOVE, []),
+ ]),
+ ])
+ );
+
+ checkDiffTreeWithNoModifiedCheck(oldTree, newTree, expectedDiffTree);
+ });
+
+ it("can handle move within same level", () => {
+ const oldTree = new Node({ id: 1 }, [
+ new Node({ id: 2 }, []),
+ new Node({ id: 3 }, []),
+ ]);
+
+ const newTree = new Node({ id: 1 }, [
+ new Node({ id: 3 }, []),
+ new Node({ id: 2 }, []),
+ ]);
+
+ const expectedDiffTree = toPlainObject(
+ new DiffNode({ id: 1 }, DiffType.NONE, [
+ new DiffNode({ id: 3 }, DiffType.NONE, []),
+ new DiffNode({ id: 2 }, DiffType.NONE, []),
+ ])
+ );
+
+ checkDiffTreeWithNoModifiedCheck(oldTree, newTree, expectedDiffTree);
+ });
+
+ it("can handle addition within middle of level", () => {
+ const oldTree = new Node({ id: 1 }, [
+ new Node({ id: 2 }, []),
+ new Node({ id: 3 }, []),
+ ]);
+
+ const newTree = new Node({ id: 1 }, [
+ new Node({ id: 2 }, []),
+ new Node({ id: 4 }, []),
+ new Node({ id: 3 }, []),
+ ]);
+
+ const expectedDiffTree = toPlainObject(
+ new DiffNode({ id: 1 }, DiffType.NONE, [
+ new DiffNode({ id: 2 }, DiffType.NONE, []),
+ new DiffNode({ id: 4 }, DiffType.ADDED, []),
+ new DiffNode({ id: 3 }, DiffType.NONE, []),
+ ])
+ );
+
+ checkDiffTreeWithNoModifiedCheck(oldTree, newTree, expectedDiffTree);
+ });
+
+ it("can handle deletion within middle of level", () => {
+ const oldTree = new Node({ id: 1 }, [
+ new Node({ id: 2 }, []),
+ new Node({ id: 3 }, []),
+ new Node({ id: 4 }, []),
+ ]);
+
+ const newTree = new Node({ id: 1 }, [
+ new Node({ id: 2 }, []),
+ new Node({ id: 4 }, []),
+ ]);
+
+ const expectedDiffTree = toPlainObject(
+ new DiffNode({ id: 1 }, DiffType.NONE, [
+ new DiffNode({ id: 2 }, DiffType.NONE, []),
+ new DiffNode({ id: 3 }, DiffType.DELETED, []),
+ new DiffNode({ id: 4 }, DiffType.NONE, []),
+ ])
+ );
+
+ checkDiffTreeWithNoModifiedCheck(oldTree, newTree, expectedDiffTree);
+ });
+
+ it("fully visits deletes nodes", () => {
+ const oldTree = new Node({ id: 1 }, [
+ new Node({ id: 2 }, [
+ new Node({ id: 3 }, [
+ new Node({ id: 4 }, []),
+ ]),
+ ]),
+ ]);
+
+ const newTree = new Node({ id: 1 }, [
+ new Node({ id: 2 }, []),
+ new Node({ id: 3 }, [
+ new Node({ id: 4 }, []),
+ ]),
+ ]);
+
+ const expectedDiffTree = toPlainObject(
+ new DiffNode({ id: 1 }, DiffType.NONE, [
+ new DiffNode({ id: 2 }, DiffType.NONE, [
+ new DiffNode({ id: 3 }, DiffType.DELETED_MOVE, [
+ new DiffNode({ id: 4 }, DiffType.DELETED_MOVE, []),
+ ]),
+ ]),
+ new DiffNode({ id: 3 }, DiffType.ADDED_MOVE, [
+ new DiffNode({ id: 4 }, DiffType.NONE, []),
+ ]),
+ ])
+ );
+
+ checkDiffTreeWithNoModifiedCheck(oldTree, newTree, expectedDiffTree);
+ });
+}); \ No newline at end of file
diff --git a/tools/winscope/spec/ObjectTransformerSpec.js b/tools/winscope/spec/ObjectTransformerSpec.js
new file mode 100644
index 000000000..4d84fd951
--- /dev/null
+++ b/tools/winscope/spec/ObjectTransformerSpec.js
@@ -0,0 +1,184 @@
+import { DiffType } from "../src/utils/diff.js";
+import { ObjectTransformer } from "../src/transform.js";
+import { Node, DiffNode, toPlainObject } from "./utils/tree.js";
+
+class ObjNode extends Node {
+ constructor(name, children, combined) {
+ const nodeDef = {
+ kind: '',
+ name: name,
+ };
+ if (combined) {
+ nodeDef.combined = true;
+ }
+ super(nodeDef, children);
+ }
+}
+
+class ObjDiffNode extends DiffNode {
+ constructor(name, diffType, children, combined) {
+ const nodeDef = {
+ kind: '',
+ name: name,
+ };
+ if (combined) {
+ nodeDef.combined = true;
+ }
+ super(nodeDef, diffType, children);
+ }
+}
+
+describe("ObjectTransformer", () => {
+ it("can transform a simple object", () => {
+ const obj = {
+ obj: {
+ string: 'string',
+ number: 3,
+ },
+ array: [
+ {
+ nested: "item",
+ },
+ "two",
+ ],
+ };
+
+ const expectedTransformedObj = toPlainObject(
+ new ObjNode('root', [
+ new ObjNode('obj', [
+ new ObjNode('string: string', [], true),
+ new ObjNode('number: 3', [], true),
+ ]),
+ new ObjNode('array', [
+ new ObjNode('0', [
+ new ObjNode('nested: item', [], true),
+ ]),
+ new ObjNode("1: two", [], true),
+ ]),
+ ])
+ );
+
+ const transformedObj = new ObjectTransformer(obj, 'root')
+ .setOptions({ formatter: () => { } })
+ .transform();
+
+ expect(transformedObj).toEqual(expectedTransformedObj);
+ });
+
+ it("handles null as expected", () => {
+ const obj = {
+ obj: {
+ null: null,
+ },
+ }
+
+ const expectedTransformedObj = toPlainObject(
+ new ObjNode('root', [
+ new ObjNode('obj', [
+ new ObjNode('null: null', [], true),
+ ]),
+ ])
+ );
+
+ const transformedObj = new ObjectTransformer(obj, 'root')
+ .setOptions({ formatter: () => { } })
+ .transform();
+
+ expect(transformedObj).toEqual(expectedTransformedObj);
+ });
+
+ it("can generate a simple add diff", () => {
+ const oldObj = {
+ a: {
+ b: 1,
+ },
+ c: 2,
+ };
+
+ const newObj = {
+ a: {
+ b: 1,
+ d: 3,
+ },
+ c: 2,
+ };
+
+ const expectedTransformedObj = toPlainObject(
+ new ObjDiffNode('root', DiffType.NONE, [
+ new ObjDiffNode('a', DiffType.NONE, [
+ new ObjDiffNode('b: 1', DiffType.NONE, [], true),
+ new ObjDiffNode('d: 3', DiffType.ADDED, [], true),
+ ]),
+ new ObjDiffNode('c: 2', DiffType.NONE, [], true),
+ ])
+ );
+
+ const transformedObj = new ObjectTransformer(newObj, 'root')
+ .setOptions({ formatter: () => { } })
+ .withDiff(oldObj)
+ .transform();
+
+ expect(transformedObj).toEqual(expectedTransformedObj);
+ });
+
+ it("can handle null", () => {
+ const oldObj = {
+ a: null,
+ };
+
+ const newObj = {
+ a: 1,
+ };
+
+ const expectedTransformedObj = toPlainObject(
+ new ObjDiffNode('root', DiffType.NONE, [
+ new ObjDiffNode('a', DiffType.NONE, [
+ new ObjDiffNode('1', DiffType.ADDED, []),
+ new ObjDiffNode('null', DiffType.DELETED, []),
+ ]),
+ ])
+ );
+
+ const transformedObj = new ObjectTransformer(newObj, 'root')
+ .setOptions({ formatter: () => { } })
+ .withDiff(oldObj)
+ .transform();
+
+ expect(transformedObj).toEqual(expectedTransformedObj);
+ });
+
+ it("can handle nested null", () => {
+ const oldObj = {
+ a: {
+ b: null,
+ },
+ c: 2,
+ };
+
+ const newObj = {
+ a: {
+ b: 1,
+ },
+ c: 2,
+ };
+
+ const expectedTransformedObj = toPlainObject(
+ new ObjDiffNode('root', DiffType.NONE, [
+ new ObjDiffNode('a', DiffType.NONE, [
+ new ObjDiffNode('b', DiffType.NONE, [
+ new ObjDiffNode('1', DiffType.ADDED, []),
+ new ObjDiffNode('null', DiffType.DELETED, []),
+ ]),
+ ]),
+ new ObjDiffNode('c: 2', DiffType.NONE, [], true),
+ ])
+ );
+
+ const transformedObj = new ObjectTransformer(newObj, 'root')
+ .setOptions({ formatter: () => { } })
+ .withDiff(oldObj)
+ .transform();
+
+ expect(transformedObj).toEqual(expectedTransformedObj);
+ });
+}); \ No newline at end of file
diff --git a/tools/winscope/spec/ProtoTransformSpec.js b/tools/winscope/spec/ProtoTransformSpec.js
new file mode 100644
index 000000000..8db736b6e
--- /dev/null
+++ b/tools/winscope/spec/ProtoTransformSpec.js
@@ -0,0 +1,25 @@
+import { detectAndDecode, decodeAndTransformProto, FILE_TYPES } from '../src/decode';
+import fs from 'fs';
+import path from 'path';
+
+const layers_traces = [
+ require('./traces/layers_trace/layers_trace_emptyregion.pb'),
+ require('./traces/layers_trace/layers_trace_invalid_layer_visibility.pb'),
+ require('./traces/layers_trace/layers_trace_orphanlayers.pb'),
+ require('./traces/layers_trace/layers_trace_root.pb'),
+ require('./traces/layers_trace/layers_trace_root_aosp.pb'),
+];
+
+describe("Proto Transformations", () => {
+ it("can transform surface flinger traces", () => {
+ for (const trace of layers_traces) {
+ fs.readFileSync(path.resolve(__dirname, trace));
+ const traceBuffer = fs.readFileSync(path.resolve(__dirname, trace));
+
+ const buffer = new Uint8Array(traceBuffer);
+ const data = decodeAndTransformProto(buffer, FILE_TYPES.layers_trace, true);
+
+ expect(true).toBe(true);
+ }
+ });
+}); \ No newline at end of file
diff --git a/tools/winscope/spec/SimplifiedLayerNamesSpec.js b/tools/winscope/spec/SimplifiedLayerNamesSpec.js
new file mode 100644
index 000000000..ce2f83f21
--- /dev/null
+++ b/tools/winscope/spec/SimplifiedLayerNamesSpec.js
@@ -0,0 +1,24 @@
+import { getSimplifiedLayerName } from "../src/utils/names";
+
+const simplifications = {
+ "WindowToken{38eae45 android.os.BinderProxy@398bebc}#0": "WindowToken",
+ "7d8c460 NavigationBar0#0": "NavigationBar0#0",
+ "Surface(name=d2965b1 NavigationBar0)/@0xe4380b2 - animation-leash#2": "Surface - animation-leash#2",
+ "com.breel.wallpapers19.doodle.wallpaper.variations.DoodleWallpaperV1#0": "DoodleWallpaperV1#0",
+ "ActivityRecord{825ebe6 u0 com.google.android.apps.nexuslauncher/.NexusLauncherActivity#0": "ActivityRecord",
+ "com.google.android.apps.nexuslauncher/com.google.android.apps.nexuslauncher.NexusLauncherActivity#0": "NexusLauncherActivity#0",
+ "com.android.settings/com.android.settings.Settings$UsbDetailsActivity#0": "Settings$UsbDetailsActivity#0",
+ "7d8c460 com.google.android.calendar/com.google.android.calendar.AllInOneCalendarActivity#0": "AllInOneCalendarActivity#0",
+ "WallpaperWindowToken{ad25afe token=android.os.Binder@8ab6b9}#0": "WallpaperWindowToken",
+};
+
+describe("getSimplifiedLayerName", () => {
+ it("simplifies traces as expected", () => {
+ for (const longName in simplifications) {
+ const expectedSimplifiedName = simplifications[longName];
+ const actualSimplifiedName = getSimplifiedLayerName(longName);
+
+ expect(actualSimplifiedName).toBe(expectedSimplifiedName);
+ }
+ });
+}); \ No newline at end of file
diff --git a/tools/winscope/spec/support/jasmine.json b/tools/winscope/spec/support/jasmine.json
new file mode 100644
index 000000000..32579a5e2
--- /dev/null
+++ b/tools/winscope/spec/support/jasmine.json
@@ -0,0 +1,11 @@
+{
+ "spec_dir": "spec",
+ "spec_files": [
+ "**/*[sS]pec.js"
+ ],
+ "helpers": [
+ "../node_modules/@babel/register/lib/node.js"
+ ],
+ "stopSpecOnExpectationFailure": false,
+ "random": false
+} \ No newline at end of file
diff --git a/tools/winscope/spec/traces/layers_trace/layers_trace_emptyregion.pb b/tools/winscope/spec/traces/layers_trace/layers_trace_emptyregion.pb
new file mode 100644
index 000000000..98ee6f3ed
--- /dev/null
+++ b/tools/winscope/spec/traces/layers_trace/layers_trace_emptyregion.pb
Binary files differ
diff --git a/tools/winscope/spec/traces/layers_trace/layers_trace_invalid_layer_visibility.pb b/tools/winscope/spec/traces/layers_trace/layers_trace_invalid_layer_visibility.pb
new file mode 100644
index 000000000..20572d79d
--- /dev/null
+++ b/tools/winscope/spec/traces/layers_trace/layers_trace_invalid_layer_visibility.pb
Binary files differ
diff --git a/tools/winscope/spec/traces/layers_trace/layers_trace_orphanlayers.pb b/tools/winscope/spec/traces/layers_trace/layers_trace_orphanlayers.pb
new file mode 100644
index 000000000..af4079707
--- /dev/null
+++ b/tools/winscope/spec/traces/layers_trace/layers_trace_orphanlayers.pb
Binary files differ
diff --git a/tools/winscope/spec/traces/layers_trace/layers_trace_root.pb b/tools/winscope/spec/traces/layers_trace/layers_trace_root.pb
new file mode 100644
index 000000000..d9617144e
--- /dev/null
+++ b/tools/winscope/spec/traces/layers_trace/layers_trace_root.pb
Binary files differ
diff --git a/tools/winscope/spec/traces/layers_trace/layers_trace_root_aosp.pb b/tools/winscope/spec/traces/layers_trace/layers_trace_root_aosp.pb
new file mode 100644
index 000000000..666b3282a
--- /dev/null
+++ b/tools/winscope/spec/traces/layers_trace/layers_trace_root_aosp.pb
Binary files differ
diff --git a/tools/winscope/spec/traces/wl_trace.pb b/tools/winscope/spec/traces/wl_trace.pb
new file mode 100644
index 000000000..7e1f0075e
--- /dev/null
+++ b/tools/winscope/spec/traces/wl_trace.pb
Binary files differ
diff --git a/tools/winscope/spec/utils/tree.js b/tools/winscope/spec/utils/tree.js
new file mode 100644
index 000000000..379ebaf46
--- /dev/null
+++ b/tools/winscope/spec/utils/tree.js
@@ -0,0 +1,33 @@
+class Node {
+ constructor(nodeDef, children) {
+ Object.assign(this, nodeDef);
+ this.children = children;
+ }
+}
+
+class DiffNode extends Node {
+ constructor(nodeDef, diffType, children) {
+ super(nodeDef, children);
+ this.diff = { type: diffType };
+ }
+}
+
+function isPrimitive(test) {
+ return test !== Object(test);
+};
+
+function toPlainObject(theClass) {
+ if (isPrimitive(theClass)) {
+ return theClass;
+ } else if (Array.isArray(theClass)) {
+ return theClass.map(item => toPlainObject(item));
+ } else {
+ const keys = Object.getOwnPropertyNames(Object.assign({}, theClass));
+ return keys.reduce((classAsObj, key) => {
+ classAsObj[key] = toPlainObject(theClass[key]);
+ return classAsObj;
+ }, {});
+ }
+}
+
+export { Node, DiffNode, toPlainObject }; \ No newline at end of file
diff --git a/tools/winscope/src/App.vue b/tools/winscope/src/App.vue
index 6e724313f..1b0d5ef0f 100644
--- a/tools/winscope/src/App.vue
+++ b/tools/winscope/src/App.vue
@@ -14,124 +14,119 @@
-->
<template>
<div id="app">
- <md-whiteframe md-tag="md-toolbar">
- <h1 class="md-title" style="flex: 1">{{title}}</h1>
- <a class="md-button md-accent md-raised md-theme-default" @click="clear()" v-if="dataLoaded">Clear</a>
- </md-whiteframe>
- <div class="main-content">
- <md-layout v-if="!dataLoaded" class="m-2">
- <dataadb ref="adb" :store="store" @dataReady="onDataReady" @statusChange="setStatus"/>
- <datainput ref="input" :store="store" @dataReady="onDataReady" @statusChange="setStatus"/>
- </md-layout>
- <md-card v-if="dataLoaded">
- <md-whiteframe md-tag="md-toolbar" md-elevation="0" class="card-toolbar md-transparent md-dense">
- <h2 class="md-title">Timeline</h2>
- <datafilter v-for="file in files" :key="file.filename" :store="store" :file="file" />
- </md-whiteframe>
- <md-list>
- <md-list-item v-for="(file, idx) in files" :key="file.filename">
- <md-icon>{{file.type.icon}}</md-icon>
- <timeline :items="file.timeline" :selected-index="file.selectedIndex" :scale="scale" @item-selected="onTimelineItemSelected($event, idx)" class="timeline" />
- </md-list-item>
- </md-list>
- </md-card>
- <dataview v-for="file in files" :key="file.filename" :ref="file.filename" :store="store" :file="file" @focus="onDataViewFocus(file.filename)" />
- </div>
+ <md-app>
+ <md-app-toolbar md-tag="md-toolbar" class="top-toolbar">
+ <h1 class="md-title" style="flex: 1">{{title}}</h1>
+ <md-button
+ class="md-primary md-theme-default download-all-btn"
+ @click="downloadAsZip(files)"
+ v-if="dataLoaded"
+ >Download All</md-button>
+ <md-button
+ class="md-accent md-raised md-theme-default clear-btn"
+ style="box-shadow: none;"
+ @click="clear()"
+ v-if="dataLoaded"
+ >Clear</md-button>
+ </md-app-toolbar>
+
+ <md-app-content class="main-content" :style="mainContentStyle">
+ <section class="data-inputs" v-if="!dataLoaded">
+ <div class="input">
+ <dataadb class="adbinput" ref="adb" :store="store"
+ @dataReady="onDataReady" @statusChange="setStatus" />
+ </div>
+ <div class="input">
+ <datainput class="fileinput" ref="input" :store="store"
+ @dataReady="onDataReady" @statusChange="setStatus" />
+ </div>
+ </section>
+
+ <section class="data-view">
+ <div
+ class="data-view-container"
+ v-for="file in dataViewFiles"
+ :key="file.type"
+ >
+ <dataview
+ :ref="file.type"
+ :store="store"
+ :file="file"
+ @click="onDataViewFocus(file)"
+ />
+ </div>
+
+ <overlay
+ :store="store"
+ :ref="overlayRef"
+ v-if="dataLoaded"
+ v-on:bottom-nav-height-change="handleBottomNavHeightChange"
+ />
+ </section>
+ </md-app-content>
+ </md-app>
</div>
</template>
<script>
-import TreeView from './TreeView.vue'
-import Timeline from './Timeline.vue'
-import Rects from './Rects.vue'
-import DataView from './DataView.vue'
-import DataInput from './DataInput.vue'
-import LocalStore from './localstore.js'
-import DataAdb from './DataAdb.vue'
-import DataFilter from './DataFilter.vue'
-
-const APP_NAME = "Winscope"
-
-// Find the index of the last element matching the predicate in a sorted array
-function findLastMatchingSorted(array, predicate) {
- var a = 0;
- var b = array.length - 1;
- while (b - a > 1) {
- var m = Math.floor((a + b) / 2);
- if (predicate(array, m)) {
- a = m;
- } else {
- b = m - 1;
- }
- }
- return predicate(array, b) ? b : a;
-}
+import Overlay from './Overlay.vue';
+import DataView from './DataView.vue';
+import DataInput from './DataInput.vue';
+import LocalStore from './localstore.js';
+import DataAdb from './DataAdb.vue';
+import FileType from './mixins/FileType.js';
+import SaveAsZip from './mixins/SaveAsZip';
+import FocusedDataViewFinder from './mixins/FocusedDataViewFinder';
+import {DIRECTION} from './utils/utils';
+import {NAVIGATION_STYLE} from './utils/consts';
+
+const APP_NAME = 'Winscope';
+
+const CONTENT_BOTTOM_PADDING = 25;
export default {
name: 'app',
+ mixins: [FileType, SaveAsZip, FocusedDataViewFinder],
data() {
return {
- files: [],
title: APP_NAME,
- currentTimestamp: 0,
activeDataView: null,
+ // eslint-disable-next-line new-cap
store: LocalStore('app', {
flattened: false,
onlyVisible: false,
+ simplifyNames: true,
displayDefaults: true,
+ navigationStyle: NAVIGATION_STYLE.GLOBAL,
}),
- }
+ overlayRef: 'overlay',
+ mainContentStyle: {
+ 'padding-bottom': `${CONTENT_BOTTOM_PADDING}px`,
+ },
+ };
},
created() {
window.addEventListener('keydown', this.onKeyDown);
+ window.addEventListener('scroll', this.onScroll);
document.title = this.title;
},
+ destroyed() {
+ window.removeEventListener('keydown', this.onKeyDown);
+ window.removeEventListener('scroll', this.onScroll);
+ },
methods: {
clear() {
- this.files.forEach(function(item) { item.destroy(); })
- this.files = [];
- this.activeDataView = null;
- },
- onTimelineItemSelected(index, timelineIndex) {
- this.files[timelineIndex].selectedIndex = index;
- var t = parseInt(this.files[timelineIndex].timeline[index]);
- for (var i = 0; i < this.files.length; i++) {
- if (i != timelineIndex) {
- this.files[i].selectedIndex = findLastMatchingSorted(this.files[i].timeline, function(array, idx) {
- return parseInt(array[idx]) <= t;
- });
- }
- }
- this.currentTimestamp = t;
- },
- advanceTimeline(direction) {
- var closestTimeline = -1;
- var timeDiff = Infinity;
- for (var idx = 0; idx < this.files.length; idx++) {
- var file = this.files[idx];
- var cur = file.selectedIndex;
- if (cur + direction < 0 || cur + direction >= this.files[idx].timeline.length) {
- continue;
- }
- var d = Math.abs(parseInt(file.timeline[cur + direction]) - this.currentTimestamp);
- if (timeDiff > d) {
- timeDiff = d;
- closestTimeline = idx;
- }
- }
- if (closestTimeline >= 0) {
- this.files[closestTimeline].selectedIndex += direction;
- this.currentTimestamp = parseInt(this.files[closestTimeline].timeline[this.files[closestTimeline].selectedIndex]);
- }
+ this.$store.commit('clearFiles');
},
- onDataViewFocus(view) {
- this.activeDataView = view;
+ onDataViewFocus(file) {
+ this.$store.commit('setActiveFile', file);
+ this.activeDataView = file.type;
},
onKeyDown(event) {
event = event || window.event;
if (event.keyCode == 37 /* left */ ) {
- this.advanceTimeline(-1);
+ this.$store.dispatch('advanceTimeline', DIRECTION.BACKWARD);
} else if (event.keyCode == 39 /* right */ ) {
- this.advanceTimeline(1);
+ this.$store.dispatch('advanceTimeline', DIRECTION.FORWARD);
} else if (event.keyCode == 38 /* up */ ) {
this.$refs[this.activeView][0].arrowUp();
} else if (event.keyCode == 40 /* down */ ) {
@@ -143,7 +138,8 @@ export default {
return true;
},
onDataReady(files) {
- this.files = files;
+ this.$store.dispatch('setFiles', files);
+ this.updateFocusedView();
},
setStatus(status) {
if (status) {
@@ -151,41 +147,80 @@ export default {
} else {
this.title = APP_NAME;
}
- }
+ },
+ handleBottomNavHeightChange(newHeight) {
+ this.$set(
+ this.mainContentStyle,
+ 'padding-bottom',
+ `${ CONTENT_BOTTOM_PADDING + newHeight }px`,
+ );
+ },
},
computed: {
- prettyDump: function() { return JSON.stringify(this.dump, null, 2); },
- dataLoaded: function() { return this.files.length > 0 },
- scale() {
- var mx = Math.max(...(this.files.map(f => Math.max(...f.timeline))));
- var mi = Math.min(...(this.files.map(f => Math.min(...f.timeline))));
- return [mi, mx];
+ files() {
+ return this.$store.getters.sortedFiles;
},
- activeView: function() {
+ prettyDump() {
+ return JSON.stringify(this.dump, null, 2);
+ },
+ dataLoaded() {
+ return this.files.length > 0;
+ },
+ activeView() {
if (!this.activeDataView && this.files.length > 0) {
- this.activeDataView = this.files[0].filename;
+ // eslint-disable-next-line vue/no-side-effects-in-computed-properties
+ this.activeDataView = this.files[0].type;
}
return this.activeDataView;
- }
+ },
+ dataViewFiles() {
+ return this.files.filter((f) => this.hasDataView(f));
+ },
},
watch: {
title() {
document.title = this.title;
- }
+ },
},
components: {
- 'timeline': Timeline,
- 'dataview': DataView,
- 'datainput': DataInput,
- 'dataadb': DataAdb,
- 'datafilter': DataFilter,
+ overlay: Overlay,
+ dataview: DataView,
+ datainput: DataInput,
+ dataadb: DataAdb,
},
-}
-
+};
</script>
<style>
-.main-content>* {
- margin: 1em;
+@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@600&display=swap');
+
+#app .md-app-container {
+ /* Get rid of tranforms which prevent fixed position from being used */
+ transform: none!important;
+ min-height: 100vh;
+}
+
+#app .top-toolbar {
+ box-shadow: none;
+ background-color: #fff;
+ background-color: var(--md-theme-default-background, #fff);
+ border-bottom: thin solid rgba(0,0,0,.12);
+ padding: 0 40px;
+}
+
+#app .top-toolbar .md-title {
+ font-family: 'Open Sans', sans-serif;
+ white-space: nowrap;
+ color: #5f6368;
+ margin: 0;
+ padding: 0;
+ font-size: 22px;
+ letter-spacing: 0;
+ font-weight: 600;
+}
+
+.data-view {
+ display: flex;
+ flex-direction: column;
}
.card-toolbar {
@@ -201,10 +236,6 @@ export default {
flex-wrap: wrap;
}
-.md-layout > .md-card {
- margin: 0.5em;
-}
-
.md-button {
margin-top: 1em
}
@@ -219,13 +250,33 @@ ul {
padding: 0;
}
-li {
- display: inline-block;
- margin: 0 10px;
-}
-
a {
color: #42b983;
}
+.data-inputs {
+ display: flex;
+ flex-wrap: wrap;
+ height: 100%;
+ width: 100%;
+ align-self: center;
+ /* align-items: center; */
+ align-content: center;
+ justify-content: center;
+}
+
+.data-inputs .input {
+ padding: 15px;
+ flex: 1 1 0;
+ max-width: 840px;
+ /* align-self: center; */
+}
+
+.data-inputs .input > div {
+ height: 100%;
+}
+
+.data-view-container {
+ padding: 25px 20px 0 20px;
+}
</style>
diff --git a/tools/winscope/src/DataAdb.vue b/tools/winscope/src/DataAdb.vue
index 39665dd53..c3653dacf 100644
--- a/tools/winscope/src/DataAdb.vue
+++ b/tools/winscope/src/DataAdb.vue
@@ -13,12 +13,12 @@
limitations under the License.
-->
<template>
- <md-card style="min-width: 50em">
+ <flat-card style="min-width: 50em">
<md-card-header>
<div class="md-title">ADB Connect</div>
</md-card-header>
<md-card-content v-if="status === STATES.CONNECTING">
- <md-spinner md-indeterminate></md-spinner>
+ <md-progress-spinner md-indeterminate></md-progress-spinner>
</md-card-content>
<md-card-content v-if="status === STATES.NO_PROXY">
<md-icon class="md-accent">error</md-icon>
@@ -30,9 +30,9 @@
<pre>python3 $ANDROID_BUILD_TOP/development/tools/winscope/adb_proxy/winscope_proxy.py</pre>
<p>Or get it from the AOSP repository.</p>
</div>
- <div class="md-layout md-gutter">
- <md-button class="md-accent md-raised" :href="downloadProxyUrl">Download from AOSP</md-button>
- <md-button class="md-raised md-accent" @click="restart">Retry</md-button>
+ <div class="md-layout">
+ <md-button class="md-accent" :href="downloadProxyUrl">Download from AOSP</md-button>
+ <md-button class="md-accent" @click="restart">Retry</md-button>
</div>
</md-card-content>
<md-card-content v-if="status === STATES.INVALID_VERSION">
@@ -44,50 +44,64 @@
<pre>python3 $ANDROID_BUILD_TOP/development/tools/winscope/adb_proxy/winscope_proxy.py</pre>
<p>Or get it from the AOSP repository.</p>
</div>
- <div class="md-layout md-gutter">
- <md-button class="md-accent md-raised" :href="downloadProxyUrl">Download from AOSP</md-button>
- <md-button class="md-raised md-accent" @click="restart">Retry</md-button>
+ <div class="md-layout">
+ <md-button class="md-accent" :href="downloadProxyUrl">Download from AOSP</md-button>
+ <md-button class="md-accent" @click="restart">Retry</md-button>
</div>
</md-card-content>
<md-card-content v-if="status === STATES.UNAUTH">
<md-icon class="md-accent">lock</md-icon>
<span class="md-subheading">Proxy authorisation required</span>
- <md-input-container>
+ <md-field>
<label>Enter Winscope proxy token</label>
<md-input v-model="adbStore.proxyKey"></md-input>
- </md-input-container>
+ </md-field>
<div class="md-body-2">The proxy token is printed to console on proxy launch, copy and paste it above.</div>
- <div class="md-layout md-gutter">
- <md-button class="md-accent md-raised" @click="restart">Connect</md-button>
+ <div class="md-layout">
+ <md-button class="md-primary" @click="restart">Connect</md-button>
</div>
</md-card-content>
<md-card-content v-if="status === STATES.DEVICES">
<div class="md-subheading">{{ Object.keys(devices).length > 0 ? "Connected devices:" : "No devices detected" }}</div>
<md-list>
<md-list-item v-for="(device, id) in devices" :key="id" @click="selectDevice(id)" :disabled="!device.authorised">
- <md-icon>{{ device.authorised ? "smartphone" : "screen_lock_portrait" }}</md-icon><span>{{ device.authorised ? device.model : "unauthorised" }} ({{ id }})</span>
+ <md-icon>{{ device.authorised ? "smartphone" : "screen_lock_portrait" }}</md-icon>
+ <span class="md-list-item-text">{{ device.authorised ? device.model : "unauthorised" }} ({{ id }})</span>
</md-list-item>
</md-list>
- <md-spinner :md-size="30" md-indeterminate></md-spinner>
+ <md-progress-spinner :md-size="30" md-indeterminate></md-progress-spinner>
</md-card-content>
<md-card-content v-if="status === STATES.START_TRACE">
- <md-list>
- <md-list-item>
- <md-icon>smartphone</md-icon><span>{{ devices[selectedDevice].model }} ({{ selectedDevice }})</span>
- </md-list-item>
- </md-list>
- <div>
- <p>Trace targets:</p>
- <md-checkbox v-for="file in TRACE_FILES" :key="file" v-model="adbStore[file]">{{FILE_TYPES[file].name}}</md-checkbox>
+ <div class="device-choice">
+ <md-list>
+ <md-list-item>
+ <md-icon>smartphone</md-icon>
+ <span class="md-list-item-text">{{ devices[selectedDevice].model }} ({{ selectedDevice }})</span>
+ </md-list-item>
+ </md-list>
+ <md-button class="md-primary" @click="resetLastDevice">Change device</md-button>
</div>
- <div>
- <p>Dump targets:</p>
- <md-checkbox v-for="file in DUMP_FILES" :key="file" v-model="adbStore[file]">{{FILE_TYPES[file].name}}</md-checkbox>
+ <div class="trace-section">
+ <h3>Trace targets:</h3>
+ <div class="selection">
+ <md-checkbox class="md-primary" v-for="traceKey in Object.keys(TRACES)" :key="traceKey" v-model="adbStore[traceKey]">{{TRACES[traceKey].name}}</md-checkbox>
+ </div>
+ <div class="trace-config" v-for="traceKey in Object.keys(TRACE_CONFIG)" :key="traceKey">
+ <h4>{{TRACES[traceKey].name}} config</h4>
+ <div class="selection">
+ <md-checkbox class="md-primary" v-for="config in TRACE_CONFIG[traceKey]" :key="config" v-model="adbStore[config]">{{config}}</md-checkbox>
+ </div>
+ </div>
+ <md-button class="md-primary trace-btn" @click="startTrace">Start trace</md-button>
</div>
- <div class="md-layout md-gutter">
- <md-button class="md-accent md-raised" @click="startTrace">Start trace</md-button>
- <md-button class="md-accent md-raised" @click="dumpState">Dump state</md-button>
- <md-button class="md-raised" @click="resetLastDevice">Device list</md-button>
+ <div class="dump-section">
+ <h3>Dump targets:</h3>
+ <div class="selection">
+ <md-checkbox class="md-primary" v-for="dumpKey in Object.keys(DUMPS)" :key="dumpKey" v-model="adbStore[dumpKey]">{{DUMPS[dumpKey].name}}</md-checkbox>
+ </div>
+ <div class="md-layout">
+ <md-button class="md-primary dump-btn" @click="dumpState">Dump state</md-button>
+ </div>
</div>
</md-card-content>
<md-card-content v-if="status === STATES.ERROR">
@@ -96,24 +110,25 @@
<pre>
{{ errorText }}
</pre>
- <md-button class="md-raised md-accent" @click="restart">Retry</md-button>
+ <md-button class="md-primary" @click="restart">Retry</md-button>
</md-card-content>
<md-card-content v-if="status === STATES.END_TRACE">
<span class="md-subheading">Tracing...</span>
- <md-progress md-indeterminate></md-progress>
- <div class="md-layout md-gutter">
- <md-button class="md-accent md-raised" @click="endTrace">End trace</md-button>
+ <md-progress-bar md-mode="indeterminate"></md-progress-bar>
+ <div class="md-layout">
+ <md-button class="md-primary" @click="endTrace">End trace</md-button>
</div>
</md-card-content>
<md-card-content v-if="status === STATES.LOAD_DATA">
<span class="md-subheading">Loading data...</span>
- <md-progress :md-progress="loadProgress"></md-progress>
+ <md-progress-bar md-mode="determinate" :md-value="loadProgress"></md-progress-bar>
</md-card-content>
- </md-card>
+ </flat-card>
</template>
<script>
-import { FILE_TYPES, DATA_TYPES } from './decode.js'
-import LocalStore from './localstore.js'
+import {FILE_DECODERS, FILE_TYPES} from './decode.js';
+import LocalStore from './localstore.js';
+import FlatCard from './components/FlatCard.vue';
const STATES = {
ERROR: 0,
@@ -125,40 +140,92 @@ const STATES = {
START_TRACE: 6,
END_TRACE: 7,
LOAD_DATA: 8,
-}
+};
-const WINSCOPE_PROXY_VERSION = "0.5"
-const WINSCOPE_PROXY_URL = "http://localhost:5544"
+const WINSCOPE_PROXY_VERSION = '0.8';
+const WINSCOPE_PROXY_URL = 'http://localhost:5544';
const PROXY_ENDPOINTS = {
- DEVICES: "/devices/",
- START_TRACE: "/start/",
- END_TRACE: "/end/",
- DUMP: "/dump/",
- FETCH: "/fetch/",
- STATUS: "/status/",
-}
-const TRACE_FILES = [
- "window_trace",
- "layers_trace",
- "screen_recording",
- "transaction",
- "proto_log"
-]
-const DUMP_FILES = [
- "window_dump",
- "layers_dump"
-]
-const CAPTURE_FILES = TRACE_FILES.concat(DUMP_FILES)
+ DEVICES: '/devices/',
+ START_TRACE: '/start/',
+ END_TRACE: '/end/',
+ CONFIG_TRACE: '/configtrace/',
+ DUMP: '/dump/',
+ FETCH: '/fetch/',
+ STATUS: '/status/',
+};
+
+const TRACES = {
+ 'window_trace': {
+ name: 'Window Manager',
+ },
+ 'layers_trace': {
+ name: 'Surface Flinger',
+ },
+ 'transaction': {
+ name: 'Transactions',
+ },
+ 'proto_log': {
+ name: 'ProtoLog',
+ },
+ 'screen_recording': {
+ name: 'Screen Recording',
+ },
+ 'ime_trace_clients': {
+ name: 'Input Method Clients',
+ },
+ 'ime_trace_service': {
+ name: 'Input Method Service',
+ },
+ 'ime_trace_managerservice': {
+ name: 'Input Method Manager Service',
+ },
+};
+
+const TRACE_CONFIG = {
+ 'layers_trace': [
+ 'composition',
+ 'metadata',
+ 'hwc',
+ ],
+};
+
+const DUMPS = {
+ 'window_dump': {
+ name: 'Window Manager',
+ },
+ 'layers_dump': {
+ name: 'Surface Flinger',
+ },
+};
+
+const proxyFileTypeAdapter = {
+ 'window_trace': FILE_TYPES.WINDOW_MANAGER_TRACE,
+ 'layers_trace': FILE_TYPES.SURFACE_FLINGER_TRACE,
+ 'wl_trace': FILE_TYPES.WAYLAND_TRACE,
+ 'layers_dump': FILE_TYPES.SURFACE_FLINGER_DUMP,
+ 'window_dump': FILE_TYPES.WINDOW_MANAGER_DUMP,
+ 'wl_dump': FILE_TYPES.WAYLAND_DUMP,
+ 'screen_recording': FILE_TYPES.SCREEN_RECORDING,
+ 'transactions': FILE_TYPES.TRANSACTIONS_TRACE,
+ 'proto_log': FILE_TYPES.PROTO_LOG,
+ 'system_ui_trace': FILE_TYPES.SYSTEM_UI,
+ 'launcher_trace': FILE_TYPES.LAUNCHER,
+ 'ime_trace_clients': FILE_TYPES.IME_TRACE_CLIENTS,
+ 'ime_trace_service': FILE_TYPES.IME_TRACE_SERVICE,
+ 'ime_trace_managerservice': FILE_TYPES.IME_TRACE_MANAGERSERVICE,
+};
+
+const CONFIGS = Object.keys(TRACE_CONFIG).flatMap((file) => TRACE_CONFIG[file]);
export default {
name: 'dataadb',
data() {
return {
STATES,
- TRACE_FILES,
- DUMP_FILES,
- CAPTURE_FILES,
- FILE_TYPES,
+ TRACES,
+ TRACE_CONFIG,
+ DUMPS,
+ FILE_DECODERS,
WINSCOPE_PROXY_VERSION,
status: STATES.CONNECTING,
dataFiles: [],
@@ -168,14 +235,28 @@ export default {
keep_alive_worker: null,
errorText: '',
loadProgress: 0,
- adbStore: LocalStore('adb', Object.assign({
- proxyKey: '',
- lastDevice: '',
- }, CAPTURE_FILES.reduce(function(obj, key) { obj[key] = true; return obj }, {}))),
+ adbStore: LocalStore(
+ 'adb',
+ Object.assign(
+ {
+ proxyKey: '',
+ lastDevice: '',
+ },
+ Object.keys(TRACES)
+ .concat(Object.keys(DUMPS))
+ .concat(CONFIGS)
+ .reduce(function(obj, key) {
+ obj[key] = true; return obj;
+ }, {}),
+ ),
+ ),
downloadProxyUrl: 'https://android.googlesource.com/platform/development/+/master/tools/winscope/adb_proxy/winscope_proxy.py',
- }
+ };
+ },
+ props: ['store'],
+ components: {
+ 'flat-card': FlatCard,
},
- props: ["store"],
methods: {
getDevices() {
if (this.status !== STATES.DEVICES && this.status !== STATES.CONNECTING) {
@@ -183,22 +264,23 @@ export default {
this.refresh_worker = null;
return;
}
- this.callProxy("GET", PROXY_ENDPOINTS.DEVICES, this, function(request, view) {
+ this.callProxy('GET', PROXY_ENDPOINTS.DEVICES, this, function(request, view) {
try {
view.devices = JSON.parse(request.responseText);
if (view.adbStore.lastDevice && view.devices[view.adbStore.lastDevice] && view.devices[view.adbStore.lastDevice].authorised) {
- view.selectDevice(view.adbStore.lastDevice)
+ view.selectDevice(view.adbStore.lastDevice);
} else {
if (view.refresh_worker === null) {
- view.refresh_worker = setInterval(view.getDevices, 1000)
+ view.refresh_worker = setInterval(view.getDevices, 1000);
}
view.status = STATES.DEVICES;
}
} catch (err) {
+ console.error(err);
view.errorText = request.responseText;
view.status = STATES.ERROR;
}
- })
+ });
},
keepAliveTrace() {
if (this.status !== STATES.END_TRACE) {
@@ -206,68 +288,92 @@ export default {
this.keep_alive_worker = null;
return;
}
- this.callProxy("GET", PROXY_ENDPOINTS.STATUS + this.deviceId() + "/", this, function(request, view) {
- if (request.responseText !== "True") {
+ this.callProxy('GET', PROXY_ENDPOINTS.STATUS + this.deviceId() + '/', this, function(request, view) {
+ if (request.responseText !== 'True') {
view.endTrace();
} else if (view.keep_alive_worker === null) {
- view.keep_alive_worker = setInterval(view.keepAliveTrace, 1000)
+ view.keep_alive_worker = setInterval(view.keepAliveTrace, 1000);
}
- })
+ });
},
startTrace() {
- const requested = this.toTrace()
+ const requested = this.toTrace();
+ const requestedConfig = this.toTraceConfig();
if (requested.length < 1) {
- this.errorText = "No targets selected";
+ this.errorText = 'No targets selected';
this.status = STATES.ERROR;
- return
+ return;
}
+ this.callProxy('POST', PROXY_ENDPOINTS.CONFIG_TRACE + this.deviceId() + '/', this, null, null, requestedConfig);
this.status = STATES.END_TRACE;
- this.callProxy("POST", PROXY_ENDPOINTS.START_TRACE + this.deviceId() + "/", this, function(request, view) {
+ this.callProxy('POST', PROXY_ENDPOINTS.START_TRACE + this.deviceId() + '/', this, function(request, view) {
view.keepAliveTrace();
- }, null, requested)
+ }, null, requested);
},
dumpState() {
- const requested = this.toDump()
+ const requested = this.toDump();
if (requested.length < 1) {
- this.errorText = "No targets selected";
+ this.errorText = 'No targets selected';
this.status = STATES.ERROR;
- return
+ return;
}
this.status = STATES.LOAD_DATA;
- this.callProxy("POST", PROXY_ENDPOINTS.DUMP + this.deviceId() + "/", this, function(request, view) {
+ this.callProxy('POST', PROXY_ENDPOINTS.DUMP + this.deviceId() + '/', this, function(request, view) {
view.loadFile(requested, 0);
- }, null, requested)
+ }, null, requested);
},
endTrace() {
this.status = STATES.LOAD_DATA;
- this.callProxy("POST", PROXY_ENDPOINTS.END_TRACE + this.deviceId() + "/", this, function(request, view) {
+ this.callProxy('POST', PROXY_ENDPOINTS.END_TRACE + this.deviceId() + '/', this, function(request, view) {
view.loadFile(view.toTrace(), 0);
- })
+ });
},
loadFile(files, idx) {
- this.callProxy("GET", PROXY_ENDPOINTS.FETCH + this.deviceId() + "/" + files[idx] + "/", this, function(request, view) {
+ this.callProxy('GET', PROXY_ENDPOINTS.FETCH + this.deviceId() + '/' + files[idx] + '/', this, function(request, view) {
try {
- var buffer = new Uint8Array(request.response);
- var filetype = FILE_TYPES[files[idx]];
- var data = filetype.decoder(buffer, filetype, filetype.name, view.store);
- view.dataFiles.push(data)
- view.loadProgress = 100 * (idx + 1) / files.length;
+ const enc = new TextDecoder('utf-8');
+ const resp = enc.decode(request.response);
+ const filesByType = JSON.parse(resp);
+
+ for (const filetype in filesByType) {
+ if (filesByType.hasOwnProperty(filetype)) {
+ const files = filesByType[filetype];
+ const fileDecoder = FILE_DECODERS[proxyFileTypeAdapter[filetype]];
+
+ for (const encodedFileBuffer of files) {
+ const buffer = Uint8Array.from(atob(encodedFileBuffer), (c) => c.charCodeAt(0));
+ const data = fileDecoder.decoder(buffer, fileDecoder.decoderParams, fileDecoder.name, view.store);
+ view.dataFiles.push(data);
+ view.loadProgress = 100 * (idx + 1) / files.length; // TODO: Update this
+ }
+ }
+ }
+
if (idx < files.length - 1) {
- view.loadFile(files, idx + 1)
+ view.loadFile(files, idx + 1);
} else {
view.$emit('dataReady', view.dataFiles);
}
} catch (err) {
+ console.error(err);
view.errorText = err;
view.status = STATES.ERROR;
}
- }, "arraybuffer")
+ }, 'arraybuffer');
},
toTrace() {
- return TRACE_FILES.filter(file => this.adbStore[file]);
+ return Object.keys(TRACES)
+ .filter((traceKey) => this.adbStore[traceKey]);
+ },
+ toTraceConfig() {
+ return Object.keys(TRACE_CONFIG)
+ .filter((file) => this.adbStore[file])
+ .flatMap((file) => TRACE_CONFIG[file])
+ .filter((config) => this.adbStore[config]);
},
toDump() {
- return DUMP_FILES.filter(file => this.adbStore[file]);
+ return Object.keys(DUMPS)
+ .filter((dumpKey) => this.adbStore[dumpKey]);
},
selectDevice(device_id) {
this.selectedDevice = device_id;
@@ -282,10 +388,10 @@ export default {
},
resetLastDevice() {
this.adbStore.lastDevice = '';
- this.restart()
+ this.restart();
},
callProxy(method, path, view, onSuccess, type, jsonRequest) {
- var request = new XMLHttpRequest();
+ const request = new XMLHttpRequest();
var view = this;
request.onreadystatechange = function() {
if (this.readyState !== 4) {
@@ -294,38 +400,38 @@ export default {
if (this.status === 0) {
view.status = STATES.NO_PROXY;
} else if (this.status === 200) {
- if (this.getResponseHeader("Winscope-Proxy-Version") !== WINSCOPE_PROXY_VERSION) {
+ if (this.getResponseHeader('Winscope-Proxy-Version') !== WINSCOPE_PROXY_VERSION) {
view.status = STATES.INVALID_VERSION;
- } else {
- onSuccess(this, view)
+ } else if (onSuccess) {
+ onSuccess(this, view);
}
} else if (this.status === 403) {
view.status = STATES.UNAUTH;
} else {
- if (this.responseType === "text" || !this.responseType) {
+ if (this.responseType === 'text' || !this.responseType) {
view.errorText = this.responseText;
- } else if (this.responseType === "arraybuffer") {
+ } else if (this.responseType === 'arraybuffer') {
view.errorText = String.fromCharCode.apply(null, new Uint8Array(this.response));
}
view.status = STATES.ERROR;
}
- }
- request.responseType = type || "";
+ };
+ request.responseType = type || '';
request.open(method, WINSCOPE_PROXY_URL + path);
- request.setRequestHeader("Winscope-Token", this.adbStore.proxyKey);
+ request.setRequestHeader('Winscope-Token', this.adbStore.proxyKey);
if (jsonRequest) {
- const json = JSON.stringify(jsonRequest)
- request.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
- request.send(json)
+ const json = JSON.stringify(jsonRequest);
+ request.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');
+ request.send(json);
} else {
request.send();
}
- }
+ },
},
created() {
- var urlParams = new URLSearchParams(window.location.search);
- if (urlParams.has("token")) {
- this.adbStore.proxyKey = urlParams.get("token")
+ const urlParams = new URLSearchParams(window.location.search);
+ if (urlParams.has('token')) {
+ this.adbStore.proxyKey = urlParams.get('token');
}
this.getDevices();
},
@@ -335,9 +441,23 @@ export default {
if (st == STATES.CONNECTING) {
this.getDevices();
}
- }
- }
+ },
+ },
},
-}
+};
</script>
+<style scoped>
+.device-choice {
+ display: inline-flex;
+}
+h3 {
+ margin-bottom: 0;
+}
+.trace-btn, .dump-btn {
+ margin-top: 0;
+}
+pre {
+ white-space: pre-wrap;
+}
+</style>
diff --git a/tools/winscope/src/DataFilter.vue b/tools/winscope/src/DataFilter.vue
deleted file mode 100644
index b675b5af2..000000000
--- a/tools/winscope/src/DataFilter.vue
+++ /dev/null
@@ -1,62 +0,0 @@
-<!-- Copyright (C) 2019 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<template>
- <div class="bounds" v-if="visible">
- <md-select v-model="visibleTransactions" name="visibleTransactions" id="visibleTransactions"
- placeholder="Everything Turned Off" md-dense multiple @input="updateFilter()" >
- <md-option value="displayCreation, displayDeletion">Display</md-option>
- <md-option value="powerModeUpdate">Power Mode</md-option>
- <md-option value="surfaceCreation, surfaceDeletion">Surface</md-option>
- <md-option value="transaction">Transaction</md-option>
- <md-option value="vsyncEvent">vsync</md-option>
- <md-option value="bufferUpdate">Buffer</md-option>
- </md-select>
- </div>
-</template>
-<script>
-import { DATA_TYPES } from './decode.js'
-
-export default {
- name: 'datafilter',
- props: ['file'],
- data() {
- return {
- rawData: this.file.data,
- rawTimeline: this.file.timeline,
- visibleTransactions: ["powerModeUpdate", "surfaceCreation, surfaceDeletion",
- "displayCreation, displayDeletion", "transaction"]
- };
- },
- methods: {
- updateFilter() {
- this.file.data =
- this.rawData.filter(x => this.visibleTransactions.includes(x.obj.increment));
- this.file.timeline =
- this.rawTimeline.filter(x => this.file.data.map(y => y.timestamp).includes(x));
- },
- },
- computed: {
- visible() {
- return this.file.type == DATA_TYPES.TRANSACTION
- },
- }
-}
-</script>
-
-<style scoped>
- .bounds {
- margin: 1em;
- }
-</style>
diff --git a/tools/winscope/src/DataInput.vue b/tools/winscope/src/DataInput.vue
index b68ebf4a6..bb07106d4 100644
--- a/tools/winscope/src/DataInput.vue
+++ b/tools/winscope/src/DataInput.vue
@@ -13,100 +13,521 @@
limitations under the License.
-->
<template>
- <md-card style="min-width: 50em">
- <md-card-header>
- <div class="md-title">Open files</div>
- </md-card-header>
- <md-card-content>
- <md-list>
- <md-list-item v-for="file in dataFiles" v-bind:key="file.filename">
- <md-icon>{{file.type.icon}}</md-icon>
- <span class="md-list-item-text">{{file.filename}} ({{file.type.name}})</span>
- <md-button class="md-icon-button md-accent" @click="onRemoveFile(file.type.name)">
- <md-icon>close</md-icon>
- </md-button>
- </md-list-item>
- </md-list>
- <div>
- <md-checkbox v-model="store.displayDefaults">Show default properties
- <md-tooltip md-direction="bottom">
- If checked, shows the value of all properties.
- Otherwise, hides all properties whose value is the default for its data type.
- </md-tooltip>
- </md-checkbox>
+ <flat-card style="min-width: 50em">
+ <md-card-header>
+ <div class="md-title">Open files</div>
+ </md-card-header>
+ <md-card-content>
+ <md-list>
+ <md-list-item v-for="file in dataFiles" v-bind:key="file.filename">
+ <md-icon>{{FILE_ICONS[file.type]}}</md-icon>
+ <span class="md-list-item-text">{{file.filename}} ({{file.type}})
+ </span>
+ <md-button
+ class="md-icon-button md-accent"
+ @click="onRemoveFile(file.type)"
+ >
+ <md-icon>close</md-icon>
+ </md-button>
+ </md-list-item>
+ </md-list>
+ <md-progress-spinner
+ :md-diameter="30"
+ :md-stroke="3"
+ md-mode="indeterminate"
+ v-show="loadingFiles"
+ />
+ <div>
+ <md-checkbox v-model="store.displayDefaults" class="md-primary">
+ Show default properties
+ <md-tooltip md-direction="bottom">
+ If checked, shows the value of all properties.
+ Otherwise, hides all properties whose value is the default for its
+ data type.
+ </md-tooltip>
+ </md-checkbox>
+ </div>
+ <div class="md-layout">
+ <div class="md-layout-item md-small-size-100">
+ <md-field>
+ <md-select v-model="fileType" id="file-type" placeholder="File type">
+ <md-option value="auto">Detect type</md-option>
+ <md-option value="bugreport">Bug Report (.zip)</md-option>
+ <md-option
+ :value="k" v-for="(v,k) in FILE_DECODERS"
+ v-bind:key="v.name">{{v.name}}
+ ></md-option>
+ </md-select>
+ </md-field>
</div>
- <div class="md-layout">
- <div class="md-layout-item md-small-size-100">
- <md-select v-model="fileType" id="file-type" placeholder="File type">
- <md-option value="auto">Detect type</md-option>
- <md-option :value="k" v-for="(v,k) in FILE_TYPES" v-bind:key="v.name">{{v.name}}</md-option>
- </md-select>
- </div>
- </div>
- <div class="md-layout md-gutter">
- <input type="file" @change="onLoadFile" id="upload-file" v-show="false" />
- <label class="md-button md-accent md-raised md-theme-default" for="upload-file">Add File</label>
- <md-button v-if="dataReady" @click="onSubmit" class="md-button md-primary md-raised md-theme-default">Submit</md-button>
- </div>
- </md-card-content>
- </md-card>
+ </div>
+ <div class="md-layout">
+ <input
+ type="file"
+ @change="onLoadFile"
+ ref="fileUpload"
+ v-show="false"
+ :multiple="fileType === 'auto'"
+ />
+ <md-button
+ class="md-primary md-theme-default"
+ @click="$refs.fileUpload.click()"
+ >
+ Add File
+ </md-button>
+ <md-button
+ v-if="dataReady"
+ @click="onSubmit"
+ class="md-button md-primary md-raised md-theme-default"
+ >
+ Submit
+ </md-button>
+ </div>
+ </md-card-content>
+
+ <md-snackbar
+ md-position="center"
+ :md-duration="Infinity"
+ :md-active.sync="showFetchingSnackbar"
+ md-persistent
+ >
+ <span>{{ fetchingSnackbarText }}</span>
+ </md-snackbar>
+
+ <md-snackbar
+ md-position="center"
+ :md-duration="snackbarDuration"
+ :md-active.sync="showSnackbar"
+ md-persistent
+ >
+ <span style="white-space: pre-line;">{{ snackbarText }}</span>
+ <div @click="hideSnackbarMessage()">
+ <md-button class="md-icon-button">
+ <md-icon style="color: white">close</md-icon>
+ </md-button>
+ </div>
+ </md-snackbar>
+ </flat-card>
</template>
<script>
-import { detectAndDecode, FILE_TYPES, DATA_TYPES } from './decode.js'
+import FlatCard from './components/FlatCard.vue';
+import JSZip from 'jszip';
+import {
+ detectAndDecode,
+ FILE_TYPES,
+ FILE_DECODERS,
+ FILE_ICONS,
+ UndetectableFileType,
+} from './decode.js';
+import {WebContentScriptMessageType} from './utils/consts';
export default {
name: 'datainput',
data() {
return {
FILE_TYPES,
- fileType: "auto",
+ FILE_DECODERS,
+ FILE_ICONS,
+ fileType: 'auto',
dataFiles: {},
- }
+ loadingFiles: false,
+ showFetchingSnackbar: false,
+ showSnackbar: false,
+ snackbarDuration: 3500,
+ snackbarText: '',
+ fetchingSnackbarText: 'Fetching files...',
+ };
},
props: ['store'],
+ created() {
+ // Attempt to load files from extension if present
+ this.loadFilesFromExtension();
+ },
methods: {
+ showSnackbarMessage(message, duration) {
+ this.snackbarText = message;
+ this.snackbarDuration = duration;
+ this.showSnackbar = true;
+ },
+ hideSnackbarMessage() {
+ this.showSnackbar = false;
+ },
+ getFetchFilesLoadingAnimation() {
+ let frame = 0;
+ const fetchingStatusAnimation = () => {
+ frame++;
+ this.fetchingSnackbarText = `Fetching files${'.'.repeat(frame % 4)}`;
+ };
+ let interval = undefined;
+
+ return Object.freeze({
+ start: () => {
+ this.showFetchingSnackbar = true;
+ interval = setInterval(fetchingStatusAnimation, 500);
+ },
+ stop: () => {
+ this.showFetchingSnackbar = false;
+ clearInterval(interval);
+ },
+ });
+ },
+ /**
+ * Attempt to load files from the extension if present.
+ *
+ * If the source URL parameter is set to the extension it make a request
+ * to the extension to fetch the files from the extension.
+ */
+ loadFilesFromExtension() {
+ const urlParams = new URLSearchParams(window.location.search);
+ if (urlParams.get('source') === 'openFromExtension' && chrome) {
+ // Fetch files from extension
+ const androidBugToolExtensionId = 'mbbaofdfoekifkfpgehgffcpagbbjkmj';
+
+ const loading = this.getFetchFilesLoadingAnimation();
+ loading.start();
+
+ // Request to convert the blob object url "blob:chrome-extension://xxx"
+ // the chrome extension has to a web downloadable url "blob:http://xxx".
+ chrome.runtime.sendMessage(androidBugToolExtensionId, {
+ action: WebContentScriptMessageType.CONVERT_OBJECT_URL,
+ }, async (response) => {
+ switch (response.action) {
+ case WebContentScriptMessageType.CONVERT_OBJECT_URL_RESPONSE:
+ if (response.attachments?.length > 0) {
+ const filesBlobPromises = response.attachments
+ .map(async (attachment) => {
+ const fileQueryResponse =
+ await fetch(attachment.objectUrl);
+ const blob = await fileQueryResponse.blob();
+
+ /**
+ * Note: The blob's media type is not correct.
+ * It is always set to "image/png".
+ * Context: http://google3/javascript/closure/html/safeurl.js?g=0&l=256&rcl=273756987
+ */
+
+ // Clone blob to clear media type.
+ const file = new Blob([blob]);
+ file.name = attachment.name;
+
+ return file;
+ });
+
+ const files = await Promise.all(filesBlobPromises);
+
+ loading.stop();
+ this.processFiles(files);
+ } else {
+ const failureMessages = 'Got no attachements from extension...';
+ console.warn(failureMessages);
+ this.showSnackbarMessage(failureMessages, 3500);
+ }
+ break;
+
+ default:
+ loading.stop();
+ const failureMessages =
+ 'Received unhandled response code from extension.';
+ console.warn(failureMessages);
+ this.showSnackbarMessage(failureMessages, 3500);
+ }
+ });
+ }
+ },
onLoadFile(e) {
- var type = this.fileType;
- var files = event.target.files || event.dataTransfer.files;
- var file = files[0];
- if (!file) {
- // No file selected.
+ const files = event.target.files || event.dataTransfer.files;
+ this.processFiles(files);
+ },
+ async processFiles(files) {
+ let error;
+ const decodedFiles = [];
+ for (const file of files) {
+ try {
+ this.loadingFiles = true;
+ this.showSnackbarMessage(`Loading ${file.name}`, Infinity);
+ const result = await this.addFile(file);
+ decodedFiles.push(...result);
+ this.hideSnackbarMessage();
+ } catch (e) {
+ this.showSnackbarMessage(
+ `Failed to load '${file.name}'...\n${e}`, 5000);
+ console.error(e);
+ error = e;
+ break;
+ } finally {
+ this.loadingFiles = false;
+ }
+ }
+
+ event.target.value = '';
+
+ if (error) {
return;
}
- this.$emit('statusChange', file.name + " (loading)");
- var reader = new FileReader();
- reader.onload = (e) => {
- var buffer = new Uint8Array(e.target.result);
- try {
- if (FILE_TYPES[type]) {
- var filetype = FILE_TYPES[type];
- var data = filetype.decoder(buffer, filetype, file.name, this.store);
- } else {
- var [filetype, data] = detectAndDecode(buffer, file.name, this.store);
+ // TODO: Handle the fact that we can now have multiple files of type
+ // FILE_TYPES.TRANSACTION_EVENTS_TRACE
+
+ const decodedFileTypes = new Set(Object.keys(this.dataFiles));
+ // A file is overridden if a file of the same type is upload twice, as
+ // Winscope currently only support at most one file to each type
+ const overriddenFileTypes = new Set();
+ const overriddenFiles = {}; // filetype => array of files
+ for (const decodedFile of decodedFiles) {
+ const dataType = decodedFile.filetype;
+
+ if (decodedFileTypes.has(dataType)) {
+ overriddenFileTypes.add(dataType);
+ (overriddenFiles[dataType] = overriddenFiles[dataType] || [])
+ .push(this.dataFiles[dataType]);
+ }
+ decodedFileTypes.add(dataType);
+
+ this.$set(this.dataFiles,
+ dataType, decodedFile.data);
+ }
+
+ // TODO(b/169305853): Remove this once we have magic numbers or another
+ // way to detect the file type more reliably.
+ for (const dataType in overriddenFiles) {
+ if (overriddenFiles.hasOwnProperty(dataType)) {
+ const files = overriddenFiles[dataType];
+ files.push(this.dataFiles[dataType]);
+
+ const selectedFile =
+ this.getMostLikelyCandidateFile(dataType, files);
+ this.$set(this.dataFiles, dataType, selectedFile);
+
+ // Remove selected file from overriden list
+ const index = files.indexOf(selectedFile);
+ files.splice(index, 1);
+ }
+ }
+
+ if (overriddenFileTypes.size > 0) {
+ this.displayFilesOverridenWarning(overriddenFiles);
+ }
+ },
+
+ /**
+ * Gets the file that is most likely to be the actual file of that type out
+ * of all the candidateFiles. This is required because there are some file
+ * types that have no magic number and may lead to false positives when
+ * decoding in decode.js. (b/169305853)
+ * @param {string} dataType - The type of the candidate files.
+ * @param {files[]} candidateFiles - The list all the files detected to be
+ * of type dataType, passed in the order
+ * they are detected/uploaded in.
+ * @return {file} - the most likely candidate.
+ */
+ getMostLikelyCandidateFile(dataType, candidateFiles) {
+ const keyWordsByDataType = {
+ [FILE_TYPES.WINDOW_MANAGER_DUMP]: 'window',
+ [FILE_TYPES.SURFACE_FLINGER_DUMP]: 'surface',
+ };
+
+ if (
+ !candidateFiles ||
+ !candidateFiles.length ||
+ candidateFiles.length == 0
+ ) {
+ throw new Error('No candidate files provided');
+ }
+
+ if (!keyWordsByDataType.hasOwnProperty(dataType)) {
+ console.warn(`setMostLikelyCandidateFile doesn't know how to handle ` +
+ `candidates of dataType ${dataType} – setting last candidate as ` +
+ `target file.`);
+
+ // We want to return the last candidate file so that, we always override
+ // old uploaded files with once of the latest uploaded files.
+ return candidateFiles.slice(-1)[0];
+ }
+
+ for (const file of candidateFiles) {
+ if (file.filename
+ .toLowerCase().includes(keyWordsByDataType[dataType])) {
+ return file;
+ }
+ }
+
+ // We want to return the last candidate file so that, we always override
+ // old uploaded files with once of the latest uploaded files.
+ return candidateFiles.slice(-1)[0];
+ },
+
+ /**
+ * Display a snackbar warning that files have been overriden and any
+ * relavant additional information in the logs.
+ * @param {{string: file[]}} overriddenFiles - a mapping from data types to
+ * the files of the of that datatype tha have been overriden.
+ */
+ displayFilesOverridenWarning(overriddenFiles) {
+ const overriddenFileTypes = Object.keys(overriddenFiles);
+ const overriddenCount = Object.values(overriddenFiles)
+ .map((files) => files.length).reduce((length, next) => length + next);
+
+ if (overriddenFileTypes.length === 1 && overriddenCount === 1) {
+ const type = overriddenFileTypes.values().next().value;
+ const overriddenFile = overriddenFiles[type][0].filename;
+ const keptFile = this.dataFiles[type].filename;
+ const message =
+ `'${overriddenFile}' is conflicting with '${keptFile}'. ` +
+ `Only '${keptFile}' will be kept. If you wish to display ` +
+ `'${overriddenFile}', please upload it again with no other file ` +
+ `of the same type.`;
+
+ this.showSnackbarMessage(`WARNING: ${message}`, Infinity);
+ console.warn(message);
+ } else {
+ const message = `Mutiple conflicting files have been uploaded. ` +
+ `${overriddenCount} files have been discarded. Please check the ` +
+ `developer console for more information.`;
+ this.showSnackbarMessage(`WARNING: ${message}`, Infinity);
+
+ const messageBuilder = [];
+ for (const type of overriddenFileTypes.values()) {
+ const keptFile = this.dataFiles[type].filename;
+ const overriddenFilesCount = overriddenFiles[type].length;
+
+ messageBuilder.push(`${overriddenFilesCount} file` +
+ `${overriddenFilesCount > 1 ? 's' : ''} of type ${type} ` +
+ `${overriddenFilesCount > 1 ? 'have' : 'has'} been ` +
+ `overridden. Only '${keptFile}' has been kept.`);
+ }
+
+ messageBuilder.push('');
+ messageBuilder.push('Please reupload the specific files you want ' +
+ 'to read (one of each type).');
+ messageBuilder.push('');
+
+ messageBuilder.push('===============DISCARDED FILES===============');
+
+ for (const type of overriddenFileTypes.values()) {
+ const discardedFiles = overriddenFiles[type];
+
+ messageBuilder.push(`The following files of type ${type} ` +
+ `have been discarded:`);
+ for (const discardedFile of discardedFiles) {
+ messageBuilder.push(` - ${discardedFile.filename}`);
}
- } catch (ex) {
- this.$emit('statusChange', this.filename + ': ' + ex);
- return;
- } finally {
- event.target.value = ''
+ messageBuilder.push('');
}
- this.$set(this.dataFiles, filetype.dataType.name, data);
- this.$emit('statusChange', null);
+ console.warn(messageBuilder.join('\n'));
+ }
+ },
+
+ getFileExtensions(file) {
+ const split = file.name.split('.');
+ if (split.length > 1) {
+ return split.pop();
}
- reader.readAsArrayBuffer(files[0]);
+
+ return undefined;
+ },
+ async addFile(file) {
+ const decodedFiles = [];
+ const type = this.fileType;
+
+ const extension = this.getFileExtensions(file);
+
+ // extension === 'zip' is required on top of file.type ===
+ // 'application/zip' because when loaded from the extension the type is
+ // incorrect. See comment in loadFilesFromExtension() for more
+ // information.
+ if (type === 'bugreport' ||
+ (type === 'auto' && (extension === 'zip' ||
+ file.type === 'application/zip'))) {
+ const results = await this.decodeArchive(file);
+ decodedFiles.push(...results);
+ } else {
+ const decodedFile = await this.decodeFile(file);
+ decodedFiles.push(decodedFile);
+ }
+
+ return decodedFiles;
+ },
+ readFile(file) {
+ return new Promise((resolve, _) => {
+ const reader = new FileReader();
+ reader.onload = async (e) => {
+ const buffer = new Uint8Array(e.target.result);
+ resolve(buffer);
+ };
+ reader.readAsArrayBuffer(file);
+ });
+ },
+ async decodeFile(file) {
+ const buffer = await this.readFile(file);
+
+ let filetype = this.filetype;
+ let data;
+ if (filetype) {
+ const fileDecoder = FILE_DECODERS[filetype];
+ data = fileDecoder.decoder(
+ buffer, fileDecoder.decoderParams, file.name, this.store);
+ } else {
+ // Defaulting to auto — will attempt to detect file type
+ [filetype, data] = detectAndDecode(buffer, file.name, this.store);
+ }
+
+ return {filetype, data};
+ },
+ async decodeArchive(archive) {
+ const buffer = await this.readFile(archive);
+
+ const zip = new JSZip();
+ const content = await zip.loadAsync(buffer);
+
+ const decodedFiles = [];
+
+ for (const filename in content.files) {
+ if (content.files.hasOwnProperty(filename)) {
+ const file = content.files[filename];
+ if (file.dir) {
+ // Ignore directories
+ continue;
+ }
+
+ const fileBlob = await file.async('blob');
+ // Get only filename and remove rest of path
+ fileBlob.name = filename.split('/').slice(-1).pop();
+
+ try {
+ const decodedFile = await this.decodeFile(fileBlob);
+
+ decodedFiles.push(decodedFile);
+ } catch (e) {
+ if (!(e instanceof UndetectableFileType)) {
+ throw e;
+ }
+ }
+ }
+ }
+
+ if (decodedFiles.length == 0) {
+ throw new Error('No matching files found in archive', archive);
+ }
+
+ return decodedFiles;
},
onRemoveFile(typeName) {
this.$delete(this.dataFiles, typeName);
},
onSubmit() {
- this.$emit('dataReady', Object.keys(this.dataFiles).map(key => this.dataFiles[key]));
- }
+ this.$emit('dataReady',
+ Object.keys(this.dataFiles).map((key) => this.dataFiles[key]));
+ },
},
computed: {
- dataReady: function() { return Object.keys(this.dataFiles).length > 0 }
- }
-}
+ dataReady: function() {
+ return Object.keys(this.dataFiles).length > 0;
+ },
+ },
+ components: {
+ 'flat-card': FlatCard,
+ },
+};
</script>
diff --git a/tools/winscope/src/DataView.vue b/tools/winscope/src/DataView.vue
index 40d1b4891..0ddf12f41 100644
--- a/tools/winscope/src/DataView.vue
+++ b/tools/winscope/src/DataView.vue
@@ -13,68 +13,149 @@
limitations under the License.
-->
<template>
- <md-card v-if="file">
- <md-card-header>
- <md-card-header-text>
- <div class="md-title">
- <md-icon>{{file.type.icon}}</md-icon> {{file.filename}}
- </div>
- </md-card-header-text>
- <md-button :href="file.blobUrl" :download="file.filename" class="md-icon-button">
- <md-icon>save_alt</md-icon>
- </md-button>
- </md-card-header>
- <traceview v-if="isTrace" :store="store" :file="file" ref="view" />
- <videoview v-if="isVideo" :file="file" ref="view" />
- <logview v-if="isLog" :file="file" ref="view" />
- <div v-if="!(isTrace || isVideo || isLog)">
- <h1 class="bad">Unrecognized DataType</h1>
- </div>
- </md-card>
+ <div @click="onClick($event)">
+ <flat-card v-if="hasDataView(file)">
+ <md-card-header>
+ <md-card-header-text>
+ <div class="md-title">
+ <md-icon>{{ TRACE_ICONS[file.type] }}</md-icon>
+ {{file.type}}
+ </div>
+ </md-card-header-text>
+ <md-button
+ :href="file.blobUrl"
+ :download="file.type"
+ class="md-icon-button"
+ >
+ <md-icon>save_alt</md-icon>
+ </md-button>
+ </md-card-header>
+
+ <WindowManagerTraceView
+ v-if="showInWindowManagerTraceView(file)"
+ :store="store"
+ :file="file"
+ ref="view"
+ />
+ <SurfaceFlingerTraceView
+ v-else-if="showInSurfaceFlingerTraceView(file)"
+ :store="store"
+ :file="file"
+ ref="view"
+ />
+ <transactionsview
+ v-else-if="isTransactions(file)"
+ :trace="file"
+ ref="view"
+ />
+ <logview
+ v-else-if="isLog(file)"
+ :file="file"
+ ref="view"
+ />
+ <traceview
+ v-else-if="showInTraceView(file)"
+ :store="store"
+ :file="file"
+ ref="view"
+ />
+ <div v-else>
+ <h1 class="bad">Unrecognized DataType</h1>
+ </div>
+
+ </flat-card>
+ </div>
</template>
<script>
-import TraceView from './TraceView.vue'
-import VideoView from './VideoView.vue'
-import LogView from './LogView.vue'
-import { DATA_TYPES } from './decode.js'
+import TraceView from '@/TraceView.vue';
+import WindowManagerTraceView from '@/WindowManagerTraceView.vue';
+import SurfaceFlingerTraceView from '@/SurfaceFlingerTraceView.vue';
+import TransactionsView from '@/TransactionsView.vue';
+import LogView from '@/LogView.vue';
+import FileType from '@/mixins/FileType.js';
+import FlatCard from '@/components/FlatCard.vue';
+
+import {TRACE_ICONS} from '@/decode.js';
export default {
name: 'dataview',
data() {
- return {}
+ return {
+ TRACE_ICONS,
+ };
},
methods: {
+ // Recursively search for an arrowUp method in the children
+ // This is necessary because the VueComponent hierarchy has
+ // different depths depending on the source
+ depthFirstSearchArrowUp(component) {
+ if (component.arrowUp) {
+ component.arrowUp();
+ return true;
+ } else {
+ for (let i = 0; i < component.$children.length; i++) {
+ var child = component.$children[i];
+ if (this.depthFirstSearchArrowUp(child)) {
+ return true;
+ }
+ }
+ return false;
+ }
+ },
+ // Recursively search for an arrowUp method in the children
+ // This is necessary because the VueComponent hierarchy has
+ // different depths depending on the source
+ depthFirstSearchArrowDown(component) {
+ if (component.arrowDown) {
+ component.arrowDown();
+ return true
+ } else {
+ for (let i = 0; i < component.$children.length; i++) {
+ var child = component.$children[i];
+ if (this.depthFirstSearchArrowDown(child)) {
+ return true;
+ }
+ }
+ return false;
+ }
+ },
arrowUp() {
- return this.$refs.view.arrowUp();
+ for (let i = 0; i < this.$children.length; i++) {
+ var child = this.$children[i];
+ let done = this.depthFirstSearchArrowUp(child);
+ if (done) {
+ return true;
+ }
+ }
+ return false;
},
arrowDown() {
- return this.$refs.view.arrowDown();
- },
- },
- props: ['store', 'file'],
- computed: {
- isTrace() {
- return this.file.type == DATA_TYPES.WINDOW_MANAGER ||
- this.file.type == DATA_TYPES.SURFACE_FLINGER ||
- this.file.type == DATA_TYPES.TRANSACTION ||
- this.file.type == DATA_TYPES.WAYLAND ||
- this.file.type == DATA_TYPES.SYSTEM_UI ||
- this.file.type == DATA_TYPES.LAUNCHER
+ for (let i = 0; i < this.$children.length; i++) {
+ var child = this.$children[i];
+ let done = this.depthFirstSearchArrowDown(child);
+ if (done) {
+ return true;
+ }
+ }
+ return false;
},
- isVideo() {
- return this.file.type == DATA_TYPES.SCREEN_RECORDING;
+ onClick(e) {
+ // Pass click event to parent, so that click event handler can be attached
+ // to component.
+ this.$emit('click', e);
},
- isLog() {
- return this.file.type == DATA_TYPES.PROTO_LOG
- }
},
+ props: ['store', 'file'],
+ mixins: [FileType],
components: {
'traceview': TraceView,
- 'videoview': VideoView,
+ 'transactionsview': TransactionsView,
'logview': LogView,
- }
-}
-
+ 'flat-card': FlatCard,
+ WindowManagerTraceView,
+ SurfaceFlingerTraceView,
+ },
+};
</script>
<style>
.bad {
diff --git a/tools/winscope/src/DefaultTreeElement.vue b/tools/winscope/src/DefaultTreeElement.vue
new file mode 100644
index 000000000..1df8d1769
--- /dev/null
+++ b/tools/winscope/src/DefaultTreeElement.vue
@@ -0,0 +1,103 @@
+<!-- Copyright (C) 2020 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<template>
+ <span>
+ <span class="kind">{{item.kind}}</span>
+ <span v-if="item.kind && item.name">-</span>
+ <span
+ v-if="simplifyNames && item.shortName &&
+ item.shortName !== item.name"
+ >{{ item.shortName }} <!-- No line break on purpose -->
+ <md-tooltip
+ md-delay="300"
+ md-direction="top"
+ style="margin-bottom: -10px"
+ >
+ {{item.name}}
+ </md-tooltip>
+ </span>
+ <span v-else>{{ item.name }}</span>
+ <div
+ v-for="c in item.chips"
+ v-bind:key="c.long"
+ :title="c.long"
+ :class="chipClassForChip(c)"
+ >{{c.short}} <!-- No line break on purpose -->
+ <md-tooltip
+ md-delay="300"
+ md-direction="top"
+ style="margin-bottom: -10px"
+ >
+ {{c.long}}
+ </md-tooltip>
+ </div>
+ </span>
+</template>
+
+<script>
+export default {
+ name: 'DefaultTreeElement',
+ props: ['item', 'simplify-names'],
+ methods: {
+ chipClassForChip(c) {
+ return [
+ 'tree-view-internal-chip',
+ 'tree-view-chip',
+ 'tree-view-chip' + '-' +
+ (c.type?.toString() || c.class?.toString() || 'default'),
+ ];
+ },
+ },
+};
+</script>
+
+<style scoped>
+.tree-view-internal-chip {
+ display: inline-block;
+}
+
+.tree-view-chip {
+ padding: 0 10px;
+ border-radius: 10px;
+ background-color: #aaa;
+ color: black;
+}
+
+.tree-view-chip.tree-view-chip-warn {
+ background-color: #ffaa6b;
+ color: black;
+}
+
+.tree-view-chip.tree-view-chip-error {
+ background-color: #ff6b6b;
+ color: black;
+}
+
+.tree-view-chip.tree-view-chip-gpu {
+ background-color: #00c853;
+ color: black;
+}
+
+.tree-view-chip.tree-view-chip-hwc {
+ background-color: #448aff;
+ color: black;
+}
+
+span {
+ overflow-wrap: break-word;
+ flex: 1 1 auto;
+ width: 0;
+}
+</style>
diff --git a/tools/winscope/src/DraggableDiv.vue b/tools/winscope/src/DraggableDiv.vue
new file mode 100644
index 000000000..adccaf4f6
--- /dev/null
+++ b/tools/winscope/src/DraggableDiv.vue
@@ -0,0 +1,229 @@
+<!-- Copyright (C) 2020 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<template>
+ <div
+ class="draggable-container"
+ :style="{visibility: contentIsLoaded ? 'visible' : 'hidden'}"
+ >
+ <md-card class="draggable-card">
+ <div class="header" @mousedown="onHeaderMouseDown">
+ <md-icon class="drag-icon">
+ drag_indicator
+ </md-icon>
+ <slot name="header" />
+ </div>
+ <div class="content">
+ <slot name="main" ref="content"/>
+ <div class="resizer" v-show="resizeable" @mousedown="onResizerMouseDown"/>
+ </div>
+ </md-card>
+ </div>
+</template>
+<script>
+export default {
+ name: "DraggableDiv",
+ // If asyncLoad is enabled must call contentLoaded when content is ready
+ props: ['position', 'asyncLoad', 'resizeable'],
+ data() {
+ return {
+ positions: {
+ clientX: undefined,
+ clientY: undefined,
+ movementX: 0,
+ movementY: 0,
+ },
+ parentResizeObserver: null,
+ contentIsLoaded: false,
+ extraWidth: 0,
+ extraHeight: 0,
+ }
+ },
+ methods: {
+ onHeaderMouseDown(e) {
+ e.preventDefault();
+
+ this.initDragAction(e);
+ },
+ onResizerMouseDown(e) {
+ e.preventDefault();
+
+ this.startResize(e);
+ },
+ initDragAction(e) {
+ this.positions.clientX = e.clientX;
+ this.positions.clientY = e.clientY;
+ document.onmousemove = this.startDrag;
+ document.onmouseup = this.stopDrag;
+ },
+ startDrag(e) {
+ e.preventDefault();
+
+ this.positions.movementX = this.positions.clientX - e.clientX;
+ this.positions.movementY = this.positions.clientY - e.clientY;
+ this.positions.clientX = e.clientX;
+ this.positions.clientY = e.clientY;
+
+ const parentHeight = this.$el.parentElement.clientHeight;
+ const parentWidth = this.$el.parentElement.clientWidth;
+
+ const divHeight = this.$el.clientHeight;
+ const divWidth = this.$el.clientWidth;
+
+ let top = this.$el.offsetTop - this.positions.movementY;
+ if (top < 0) {
+ top = 0;
+ }
+ if (top + divHeight > parentHeight) {
+ top = parentHeight - divHeight;
+ }
+
+ let left = this.$el.offsetLeft - this.positions.movementX;
+ if (left < 0) {
+ left = 0;
+ }
+ if (left + divWidth > parentWidth) {
+ left = parentWidth - divWidth;
+ }
+
+ this.$el.style.top = top + 'px';
+ this.$el.style.left = left + 'px';
+ },
+ stopDrag() {
+ document.onmouseup = null;
+ document.onmousemove = null;
+ },
+ startResize(e) {
+ e.preventDefault();
+ this.startResizeX = e.clientX;
+ this.startResizeY = e.clientY;
+ document.onmousemove = this.resizing;
+ document.onmouseup = this.stopResize;
+ document.body.style.cursor = "nwse-resize";
+ },
+ resizing(e) {
+ let extraWidth = this.extraWidth + (e.clientX - this.startResizeX);
+ if (extraWidth < 0) {
+ extraWidth = 0;
+ }
+ this.$emit('requestExtraWidth', extraWidth);
+
+ let extraHeight = this.extraHeight + (e.clientY - this.startResizeY);
+ if (extraHeight < 0) {
+ extraHeight = 0;
+ }
+ this.$emit('requestExtraHeight', extraHeight);
+ },
+ stopResize(e) {
+ this.extraWidth += e.clientX - this.startResizeX;
+ if (this.extraWidth < 0) {
+ this.extraWidth = 0;
+ }
+ this.extraHeight += e.clientY - this.startResizeY;
+ if (this.extraHeight < 0) {
+ this.extraHeight = 0;
+ }
+ document.onmousemove = null;
+ document.onmouseup = null;
+ document.body.style.cursor = null;
+ },
+ onParentResize() {
+ const parentHeight = this.$el.parentElement.clientHeight;
+ const parentWidth = this.$el.parentElement.clientWidth;
+
+ const elHeight = this.$el.clientHeight;
+ const elWidth = this.$el.clientWidth;
+ const rect = this.$el.getBoundingClientRect();
+
+ const offsetBottom = parentHeight - (rect.y + elHeight);
+ if (offsetBottom < 0) {
+ this.$el.style.top = parseInt(this.$el.style.top) + offsetBottom + 'px';
+ }
+
+ const offsetRight = parentWidth - (rect.x + elWidth);
+ if (offsetRight < 0) {
+ this.$el.style.left = parseInt(this.$el.style.left) + offsetRight + 'px';
+ }
+ },
+ contentLoaded() {
+ // To be called if content is loaded async (eg: video), so that div may
+ // position itself correctly.
+
+ if (this.contentIsLoaded) {
+ return;
+ }
+
+ this.contentIsLoaded = true;
+ const margin = 15;
+
+ switch (this.position) {
+ case 'bottomLeft':
+ this.moveToBottomLeft(margin);
+ break;
+
+ default:
+ throw new Error('Unsupported starting position for DraggableDiv');
+ }
+ },
+ moveToBottomLeft(margin) {
+ margin = margin || 0;
+
+ const divHeight = this.$el.clientHeight;
+ const parentHeight = this.$el.parentElement.clientHeight;
+
+ this.$el.style.top = parentHeight - divHeight - margin + 'px';
+ this.$el.style.left = margin + 'px';
+ },
+ },
+ mounted() {
+ if (!this.asyncLoad) {
+ this.contentLoaded();
+ }
+
+ // Listen for changes in parent height to avoid element exiting visible view
+ this.parentResizeObserver = new ResizeObserver(this.onParentResize);
+
+ this.parentResizeObserver.observe(this.$el.parentElement);
+ },
+ destroyed() {
+ this.parentResizeObserver.unobserve(this.$el.parentElement);
+ },
+}
+</script>
+<style scoped>
+.draggable-container {
+ position: absolute;
+}
+
+.draggable-card {
+ margin: 0;
+}
+
+.header {
+ cursor: grab;
+ padding: 3px;
+}
+
+.resizer {
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ width: 0;
+ height: 0;
+ border-style: solid;
+ border-width: 0 0 15px 15px;
+ border-color: transparent transparent #ffffff transparent;
+ cursor: nwse-resize;
+}
+</style> \ No newline at end of file
diff --git a/tools/winscope/src/LogEntry.vue b/tools/winscope/src/LogEntry.vue
new file mode 100644
index 000000000..90f41d76f
--- /dev/null
+++ b/tools/winscope/src/LogEntry.vue
@@ -0,0 +1,188 @@
+<template>
+ <div
+ class="entry"
+ :class="[
+ {
+ 'inactive': !source.occured,
+ 'just-inactivated': source.justInactivated,
+ },
+ source.level.toLowerCase()
+ ]"
+ >
+ <div class="level-column">
+ <div>
+ <div class="icon" v-if="source.level.toLowerCase() === 'verbose'">
+ v
+ </div>
+ <i class="material-icons icon" v-else>
+ {{ levelIcons[source.level.toLowerCase()] }}
+ </i>
+ <md-tooltip md-direction="right" style="margin-left: -15px">
+ {{ source.level.toLowerCase() }}
+ </md-tooltip>
+ </div>
+ </div>
+ <div class="time-column">
+ <a @click="setTimelineTime(source.timestamp)" class="time-link">
+ {{source.time}}
+ </a>
+ <div
+ class="new-badge"
+ :style="{visibility: source.new ? 'visible' : 'hidden'} "
+ >
+ New
+ </div>
+ </div>
+ <div class="tag-column">{{source.tag}}</div>
+ <div class="at-column">{{source.at}}</div>
+ <div class="message-column">{{source.text}}</div>
+ </div>
+</template>
+
+<script>
+import {logLevel} from './utils/consts';
+
+export default {
+ name: 'logentry',
+ props: {
+ index: {
+ type: Number,
+ },
+ source: {
+ type: Object,
+ default() {
+ return {};
+ },
+ },
+ },
+ data() {
+ return {
+ levelIcons: {
+ [logLevel.INFO]: 'info_outline',
+ [logLevel.DEBUG]: 'help_outline',
+ [logLevel.VERBOSE]: 'assignment',
+ [logLevel.WARN]: 'warning',
+ [logLevel.ERROR]: 'error',
+ [logLevel.WTF]: 'bolt',
+ },
+ };
+ },
+ methods: {
+ setTimelineTime(timestamp) {
+ this.$store.dispatch('updateTimelineTime', timestamp);
+ },
+ },
+};
+</script>
+<style scoped>
+.level-column {
+ width: 2em;
+ display: inline-flex;
+}
+
+.level-column > div {
+ align-self: start;
+}
+
+.time-column {
+ display: inline-flex;
+ width: 13em;
+}
+
+.time-column .time-link {
+ width: 9em;
+}
+
+.tag-column {
+ width: 11em;
+ min-width: 11em;
+}
+
+.at-column {
+ width: 30em;
+ min-width: 30em;
+}
+
+.message-column {
+ min-width: 50em;
+ flex-grow: 1;
+ word-wrap: break-word;
+}
+
+.entry {
+ width: 100%;
+ display: inline-flex;
+}
+
+.entry:hover {
+ background: #f1f1f1;
+}
+
+.entry > div {
+ padding: 6px 10px;
+ border-bottom: 1px solid #f1f1f1;
+}
+
+a {
+ cursor: pointer;
+}
+
+.inactive {
+ color: gray;
+}
+
+.inactive a {
+ color: gray;
+}
+
+.just-inactivated {
+ background: #dee2e3;
+}
+
+.new-badge {
+ display: inline-block;
+ background: rgb(84, 139, 247);
+ border-radius: 3px;
+ color: white;
+ padding: 0 5px;
+ margin-left: 5px;
+ font-size: 10px;
+ align-self: flex-start;
+}
+
+.entry.warn, .entry.warn > div {
+ background: #FFE0B2;
+}
+
+.entry.warn.inactive, .entry.warn.inactive > div {
+ background: #FFF3E0;
+}
+
+.entry.error, .entry.error > div,
+.entry.wtf, .entry.wtf > div {
+ background: #FFCCBC;
+}
+
+.entry.error.inactive, .entry.error.inactive > div,
+.entry.wtf.inactive, .entry.wtf.inactive > div {
+ background: #FBE9E7;
+}
+
+.level-column .icon {
+ font-size: 15px;
+ color: gray;
+ width: 15px;
+ height: 15px;
+ text-align: center;
+}
+
+.entry.warn .level-column .icon {
+ color: #FBC02D;
+ font-size: 20px;
+}
+
+.entry.error .level-column .icon, .entry.wtf .level-column .icon {
+ color: #FF6E40;
+ font-size: 20px;
+}
+</style>
diff --git a/tools/winscope/src/LogView.vue b/tools/winscope/src/LogView.vue
index bce7eb220..ce9ff10d4 100644
--- a/tools/winscope/src/LogView.vue
+++ b/tools/winscope/src/LogView.vue
@@ -14,31 +14,109 @@
-->
<template>
<md-card-content class="container">
- <md-table class="log-table">
- <md-table-header>
- <md-table-head class="time-column-header">Time</md-table-head>
- <md-table-head class="tag-column-header">Tag</md-table-head>
- <md-table-head class="at-column-header">At</md-table-head>
- <md-table-head>Message</md-table-head>
- </md-table-header>
- <md-table-body>
- <md-table-row v-for="line in data" :key="line.timestamp">
- <md-table-cell class="time-column">{{line.time}}</md-table-cell>
- <md-table-cell class="tag-column">{{line.tag}}</md-table-cell>
- <md-table-cell class="at-column">{{line.at}}</md-table-cell>
- <md-table-cell>{{line.text}}</md-table-cell>
- </md-table-row>
- </md-table-body>
- </md-table>
+ <div class="navigation">
+ <md-button
+ class="md-dense md-primary"
+ @click.native="scrollToRow(lastOccuredVisibleIndex)"
+ >
+ Jump to latest entry
+ </md-button>
+ <md-button
+ class="md-icon-button" :class="{'md-primary': pinnedToLatest}"
+ @click.native="togglePin"
+ >
+ <md-icon>push_pin</md-icon>
+ <md-tooltip md-direction="top" v-if="pinnedToLatest">
+ Unpin to latest message
+ </md-tooltip>
+ <md-tooltip md-direction="top" v-else>
+ Pin to latest message
+ </md-tooltip>
+ </md-button>
+ </div>
+
+ <div class="filters">
+ <md-field>
+ <label>Log Levels</label>
+ <md-select v-model="selectedLogLevels" multiple>
+ <md-option v-for="level in logLevels" :value="level">{{ level }}</md-option>
+ </md-select>
+ </md-field>
+
+ <md-field>
+ <label>Tags</label>
+ <md-select v-model="selectedTags" multiple>
+ <md-option v-for="tag in tags" :value="tag">{{ tag }}</md-option>
+ </md-select>
+ </md-field>
+
+ <md-autocomplete v-model="selectedSourceFile" :md-options="sourceFiles">
+ <label>Source file</label>
+
+ <template slot="md-autocomplete-item" slot-scope="{ item, term }">
+ <md-highlight-text :md-term="term">{{ item }}</md-highlight-text>
+ </template>
+
+ <template slot="md-autocomplete-empty" slot-scope="{ term }">
+ No source file matching "{{ term }}" was found.
+ </template>
+ </md-autocomplete>
+
+ <md-field class="search-message-field" md-clearable>
+ <md-input placeholder="Search messages..." v-model="searchInput"></md-input>
+ </md-field>
+ </div>
+
+ <div v-if="processedData.length > 0" style="overflow-y: auto;">
+ <virtual-list style="height: 600px; overflow-y: auto;"
+ :data-key="'uid'"
+ :data-sources="processedData"
+ :data-component="logEntryComponent"
+ ref="loglist"
+ />
+ </div>
+ <div class="no-logs-message" v-else>
+ <md-icon>error_outline</md-icon>
+ <span class="message">No logs founds...</span>
+ </div>
</md-card-content>
</template>
<script>
+import { findLastMatchingSorted } from './utils/utils.js';
+import { logLevel } from './utils/consts';
+import LogEntryComponent from './LogEntry.vue';
+import VirtualList from '../libs/virtualList/VirtualList';
+
export default {
name: 'logview',
data() {
+ const data = this.file.data;
+
+ const tags = new Set();
+ const sourceFiles = new Set();
+ for (const line of data) {
+ tags.add(line.tag);
+ sourceFiles.add(line.at);
+ }
+
+ data.forEach((entry, index) => entry.index = index);
+
+ const logLevels = Object.values(logLevel);
+
return {
- data: [],
+ data,
isSelected: false,
+ prevLastOccuredIndex: -1,
+ lastOccuredIndex: 0,
+ selectedTags: [],
+ selectedSourceFile: null,
+ searchInput: null,
+ sourceFiles: Object.freeze(Array.from(sourceFiles)),
+ tags: Object.freeze(Array.from(tags)),
+ pinnedToLatest: true,
+ logEntryComponent: LogEntryComponent,
+ logLevels,
+ selectedLogLevels: [],
}
},
methods: {
@@ -49,90 +127,165 @@ export default {
arrowDown() {
this.isSelected = !this.isSelected;
return !this.isSelected;
- }
- },
- updated() {
- let scrolltable = this.$el.getElementsByTagName("tbody")[0]
- scrolltable.scrollTop = scrolltable.scrollHeight - 100;
+ },
+ getRowEl(idx) {
+ return this.$refs.tableBody.querySelectorAll('tr')[idx];
+ },
+ togglePin() {
+ this.pinnedToLatest = !this.pinnedToLatest;
+ },
+ scrollToRow(index) {
+ if (!this.$refs.loglist) {
+ return;
+ }
+
+ const itemOffset = this.$refs.loglist.virtual.getOffset(index);
+ const itemSize = 35;
+ const loglistSize = this.$refs.loglist.getClientSize();
+
+ this.$refs.loglist.scrollToOffset(itemOffset - loglistSize + itemSize);
+ },
+ getLastOccuredIndex(data, timestamp) {
+ if (this.data.length === 0) {
+ return 0;
+ }
+ return findLastMatchingSorted(data,
+ (array, idx) => array[idx].timestamp <= timestamp);
+ },
},
watch: {
- selectedIndex: {
+ pinnedToLatest(isPinned) {
+ if (isPinned) {
+ this.scrollToRow(this.lastOccuredVisibleIndex);
+ }
+ },
+ currentTimestamp: {
immediate: true,
- handler(idx) {
- if (this.file.data.length > 0) {
- while (this.data.length > idx + 1) {
- this.data.pop();
- }
- while (this.data.length <= idx) {
- this.data.push(this.file.data[this.data.length]);
- }
+ handler(newTimestamp) {
+ this.prevLastOccuredIndex = this.lastOccuredIndex;
+ this.lastOccuredIndex = this.getLastOccuredIndex(this.data, newTimestamp);
+
+ if (this.pinnedToLatest) {
+ this.scrollToRow(this.lastOccuredVisibleIndex);
}
},
}
},
props: ['file'],
computed: {
- selectedIndex() {
- return this.file.selectedIndex;
+ lastOccuredVisibleIndex() {
+ return this.getLastOccuredIndex(this.processedData, this.currentTimestamp);
+ },
+ currentTimestamp() {
+ return this.$store.state.currentTimestamp;
},
+ processedData() {
+ const filteredData = this.data.filter(line => {
+ if (this.selectedLogLevels.length > 0 &&
+ !this.selectedLogLevels.includes(line.level.toLowerCase())) {
+ return false;
+ }
+
+ if (this.sourceFiles.includes(this.selectedSourceFile)) {
+ // Only filter once source file is fully inputed
+ if (line.at != this.selectedSourceFile) {
+ return false;
+ }
+ }
+
+ if (this.selectedTags.length > 0 && !this.selectedTags.includes(line.tag)) {
+ return false;
+ }
+
+ if (this.searchInput && !line.text.includes(this.searchInput)) {
+ return false;
+ }
+
+ return true;
+ });
+
+ for (const entry of filteredData) {
+ entry.new = this.prevLastOccuredIndex < entry.index &&
+ entry.index <= this.lastOccuredIndex;
+ entry.occured = entry.index <= this.lastOccuredIndex;
+ entry.justInactivated = this.lastOccuredIndex < entry.index &&
+ entry.index <= this.prevLastOccuredIndex;
+
+ // Force refresh if any of these changes
+ entry.uid = `${entry.index}${entry.new ? '-new' : ''}${entry.index}${entry.justInactivated ? '-just-inactivated' : ''}${entry.occured ? '-occured' : ''}`
+ }
+
+ return filteredData;
+ }
},
+ components: {
+ 'virtual-list': VirtualList,
+ 'logentry': LogEntryComponent,
+ }
}
</script>
<style>
-.log-table .md-table-cell {
- height: auto;
+.container {
+ display: flex;
+ flex-wrap: wrap;
}
-.log-table {
+.filters, .navigation {
width: 100%;
+ display: flex;
+ flex-direction: row;
+ align-items: center;
}
-.time-column {
- min-width: 15em;
+.navigation {
+ justify-content: flex-end;
}
-.time-column-header {
- min-width: 15em;
- padding-right: 9em !important;
+.navigation > button {
+ margin: 0;
}
-.tag-column {
- min-width: 10em;
+.filters > div {
+ margin: 10px;
}
-.tag-column-header {
- min-width: 10em;
- padding-right: 7em !important;
+.log-header {
+ display: inline-flex;
+ color: var(--md-theme-default-text-accent-on-background, rgba(0,0,0,0.54));
+ font-weight: bold;
}
-.at-column {
- min-width: 35em;
+.log-header > div {
+ padding: 6px 10px;
+ border-bottom: 1px solid #f1f1f1;
}
-.at-column-header {
- min-width: 35em;
- padding-right: 32em !important;
+.log-header .time-column {
+ width: 13em;
}
-.log-table table {
- display: block;
+.log-header .tag-column {
+ width: 10em;
}
-.log-table tbody {
- display: block;
- overflow-y: scroll;
- width: 100%;
- height: 20em;
+.log-header .at-column {
+ width: 30em;
}
-.log-table tr {
- width: 100%;
- display: block;
+.column-title {
+ font-size: 12px;
}
-.log-table td:last-child {
- width: 100%;
+.no-logs-message {
+ margin: 15px;
+ display: flex;
+ align-content: center;
+ align-items: center;
}
+.no-logs-message .message {
+ margin-left: 10px;
+ font-size: 15px;
+}
</style>
diff --git a/tools/winscope/src/NodeContextMenu.vue b/tools/winscope/src/NodeContextMenu.vue
new file mode 100644
index 000000000..1e0563931
--- /dev/null
+++ b/tools/winscope/src/NodeContextMenu.vue
@@ -0,0 +1,95 @@
+<template>
+ <vue-context ref="menu">
+ <li>
+ <a href="#" @click.prevent="$emit('collapseAllOtherNodes')">
+ Collapse all other nodes
+ </a>
+ </li>
+ </vue-context>
+</template>
+
+<script>
+import {VueContext} from 'vue-context';
+
+export default {
+ name: 'NodeContextMenu',
+ components: {
+ VueContext,
+ },
+ methods: {
+ open(e) {
+ this.$refs.menu.open(e);
+ },
+ close() {
+ this.$refs.menu.close();
+ },
+ },
+};
+</script>
+<style scoped>
+.v-context,
+.v-context ul {
+ background-color: #fff;
+ background-clip: padding-box;
+ border-radius: .25rem;
+ border: 1px solid rgba(0, 0, 0, .15);
+ box-shadow:
+ 0 2px 2px 0 rgba(0, 0, 0, .14),
+ 0 3px 1px -2px rgba(0, 0, 0, .2),
+ 0 1px 5px 0 rgba(0, 0, 0, .12);
+ display: block;
+ margin: 0;
+ padding: 10px 0;
+ min-width: 10rem;
+ z-index: 1500;
+ position: fixed;
+ list-style: none;
+ box-sizing: border-box;
+ max-height: calc(100% - 50px);
+ overflow-y: auto
+}
+
+.v-context>li,
+.v-context ul>li {
+ margin: 0;
+ position: relative
+}
+
+.v-context>li>a,
+.v-context ul>li>a {
+ display: block;
+ padding: .5rem 1.5rem;
+ font-weight: 400;
+ color: #212529;
+ text-decoration: none;
+ white-space: nowrap;
+ background-color: transparent;
+ border: 0
+}
+
+.v-context>li>a:focus,
+.v-context>li>a:hover,
+.v-context ul>li>a:focus,
+.v-context ul>li>a:hover {
+ text-decoration: none;
+ color: #212529;
+ background-color: #f8f9fa
+}
+
+.v-context:focus,
+.v-context>li>a:focus,
+.v-context ul:focus,
+.v-context ul>li>a:focus {
+ outline: 0
+}
+
+.v-context__sub>a:after {
+ content: "\2BC8";
+ float: right;
+ padding-left: 1rem
+}
+
+.v-context__sub>ul {
+ display: none
+}
+</style>
diff --git a/tools/winscope/src/Overlay.vue b/tools/winscope/src/Overlay.vue
new file mode 100644
index 000000000..4bb051e49
--- /dev/null
+++ b/tools/winscope/src/Overlay.vue
@@ -0,0 +1,837 @@
+<!-- Copyright (C) 2020 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<template>
+ <div class="overlay" v-if="hasTimeline || video">
+ <div class="overlay-content" ref="overlayContent">
+ <draggable-div
+ ref="videoOverlay"
+ class="video-overlay"
+ v-show="minimized && showVideoOverlay"
+ position="bottomLeft"
+ :asyncLoad="true"
+ :resizeable="true"
+ v-on:requestExtraWidth="updateVideoOverlayWidth"
+ :style="videoOverlayStyle"
+ v-if="video"
+ >
+ <template slot="header">
+ <div class="close-video-overlay" @click="closeVideoOverlay">
+ <md-icon>
+ close
+ <md-tooltip md-direction="right">Close video overlay</md-tooltip>
+ </md-icon>
+ </div>
+ </template>
+ <template slot="main">
+ <div ref="overlayVideoContainer">
+ <videoview
+ ref="video"
+ :file="video"
+ :height="videoHeight"
+ @loaded="videoLoaded" />
+ </div>
+ </template>
+ </draggable-div>
+ </div>
+ <md-bottom-bar
+ class="bottom-nav"
+ v-if="hasTimeline || (video && !showVideoOverlay)"
+ ref="bottomNav"
+ >
+ <div class="nav-content">
+ <div class="">
+ <md-toolbar
+ md-elevation="0"
+ class="md-transparent">
+
+ <div class="toolbar" :class="{ expanded: expanded }">
+ <div class="resize-bar" v-show="expanded">
+ <div v-if="video" @mousedown="resizeBottomNav">
+ <md-icon class="drag-handle">
+ drag_handle
+ <md-tooltip md-direction="top">resize</md-tooltip>
+ </md-icon>
+ </div>
+ </div>
+
+ <div class="active-timeline" v-show="minimized">
+ <div
+ class="active-timeline-icon"
+ @click="$refs.navigationTypeSelection.$el
+ .querySelector('input').click()"
+ >
+ <md-icon class="collapsed-timeline-icon">
+ {{ collapsedTimelineIcon }}
+ <md-tooltip>
+ {{ collapsedTimelineIconTooltip }}
+ </md-tooltip>
+ </md-icon>
+ </div>
+
+ <md-field
+ ref="navigationTypeSelection"
+ class="nagivation-style-selection-field"
+ >
+
+ <label>Navigation</label>
+ <md-select
+ v-model="navigationStyle"
+ name="navigationStyle"
+ md-dense
+ >
+ <md-icon-option :value="NAVIGATION_STYLE.GLOBAL"
+ icon="public"
+ desc="Consider all timelines for navigation"
+ />
+ <md-icon-option
+ :value="NAVIGATION_STYLE.FOCUSED"
+ :icon="TRACE_ICONS[focusedFile.type]"
+ :desc="`Automatically switch what timeline is considered
+ for navigation based on what is visible on screen.
+ Currently ${focusedFile.type}.`"
+ />
+ <!-- TODO: Add edit button for custom settings that opens
+ popup dialog menu -->
+ <md-icon-option
+ :value="NAVIGATION_STYLE.CUSTOM"
+ icon="dashboard_customize"
+ desc="Considers only the enabled timelines for
+ navigation. Expand the bottom bar to toggle
+ timelines."
+ />
+ <md-optgroup label="Targeted">
+ <md-icon-option
+ v-for="file in timelineFiles"
+ v-bind:key="file.type"
+ :value="`${NAVIGATION_STYLE.TARGETED}-` +
+ `${file.type}`"
+ :displayValue="file.type"
+ :shortValue="NAVIGATION_STYLE.TARGETED"
+ :icon="TRACE_ICONS[file.type]"
+ :desc="`Only consider ${file.type} ` +
+ 'for timeline navigation.'"
+ />
+ </md-optgroup>
+ </md-select>
+ </md-field>
+ </div>
+
+ <div
+ class="minimized-timeline-content"
+ v-show="minimized"
+ v-if="hasTimeline"
+ >
+ <label>
+ {{ seekTime }}
+ </label>
+ <timeline
+ :timeline="Object.freeze(minimizedTimeline.timeline)"
+ :selected-index="minimizedTimeline.selectedIndex"
+ :scale="scale"
+ :crop="crop"
+ class="minimized-timeline"
+ />
+ </div>
+
+ <md-button
+ class="md-icon-button show-video-overlay-btn"
+ :class="{active: minimized && showVideoOverlay}"
+ @click="toggleVideoOverlay"
+ v-show="minimized"
+ style="margin-bottom: 10px;"
+ >
+ <i class="md-icon md-icon-font">
+ featured_video
+ </i>
+ <md-tooltip md-direction="top">
+ <span v-if="showVideoOverlay">Hide video overlay</span>
+ <span v-else>Show video overlay</span>
+ </md-tooltip>
+ </md-button>
+
+ <md-button
+ class="md-icon-button toggle-btn"
+ @click="toggle"
+ style="margin-bottom: 10px;"
+ >
+ <md-icon v-if="minimized">
+ expand_less
+ <md-tooltip md-direction="top">Expand timeline</md-tooltip>
+ </md-icon>
+ <md-icon v-else>
+ expand_more
+ <md-tooltip md-direction="top">Collapse timeline</md-tooltip>
+ </md-icon>
+ </md-button>
+ </div>
+ </md-toolbar>
+
+ <div class="expanded-content" v-show="expanded">
+ <div :v-if="video">
+ <div
+ class="expanded-content-video"
+ ref="expandedContentVideoContainer"
+ >
+ <!-- Video moved here on expansion -->
+ </div>
+ </div>
+ <div class="flex-fill">
+ <div
+ ref="expandedTimeline"
+ :style="`padding-top: ${resizeOffset}px;`"
+ >
+ <div class="seek-time" v-if="seekTime">
+ <b>Seek time</b>: {{ seekTime }}
+ </div>
+
+ <timelines
+ :timelineFiles="timelineFiles"
+ :scale="scale"
+ :crop="crop"
+ :cropIntent="cropIntent"
+ v-on:crop="onTimelineCrop"
+ />
+
+ <div class="timeline-selection">
+ <div class="timeline-selection-header">
+ <label>Timeline Area Selection</label>
+ <span class="material-icons help-icon">
+ help_outline
+ <md-tooltip md-direction="right">
+ Select the area of the timeline to focus on.
+ Click and drag to select.
+ </md-tooltip>
+ </span>
+ <md-button
+ class="md-primary"
+ v-if="isCropped"
+ @click.native="clearSelection"
+ >
+ Clear selection
+ </md-button>
+ </div>
+ <timeline-selection
+ :timeline="mergedTimeline.timeline"
+ :start-timestamp="0"
+ :end-timestamp="0"
+ :scale="scale"
+ :cropArea="crop"
+ v-on:crop="onTimelineCrop"
+ v-on:cropIntent="onTimelineCropIntent"
+ v-on:showVideoAt="changeVideoTimestamp"
+ v-on:resetVideoTimestamp="resetVideoTimestamp"
+ />
+ </div>
+
+ <div class="help" v-if="!minimized">
+ <div class="help-icon-wrapper">
+ <span class="material-icons help-icon">
+ help_outline
+ <md-tooltip md-direction="left">
+ Click on icons to disable timelines
+ </md-tooltip>
+ </span>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </md-bottom-bar>
+ </div>
+</template>
+<script>
+import Timeline from './Timeline.vue';
+import Timelines from './Timelines.vue';
+import TimelineSelection from './TimelineSelection.vue';
+import DraggableDiv from './DraggableDiv.vue';
+import VideoView from './VideoView.vue';
+import MdIconOption from './components/IconSelection/IconSelectOption.vue';
+import FileType from './mixins/FileType.js';
+import {NAVIGATION_STYLE} from './utils/consts';
+import {TRACE_ICONS} from '@/decode.js';
+
+// eslint-disable-next-line camelcase
+import {nanos_to_string} from './transform.js';
+
+export default {
+ name: 'overlay',
+ props: ['store'],
+ mixins: [FileType],
+ data() {
+ return {
+ minimized: true,
+ // height of video in expanded timeline,
+ // made to match expandedTimeline dynamically
+ videoHeight: 'auto',
+ dragState: {
+ clientY: null,
+ lastDragEndPosition: null,
+ },
+ resizeOffset: 0,
+ showVideoOverlay: true,
+ mergedTimeline: null,
+ NAVIGATION_STYLE,
+ navigationStyle: this.store.navigationStyle,
+ videoOverlayExtraWidth: 0,
+ crop: null,
+ cropIntent: null,
+ TRACE_ICONS,
+ };
+ },
+ created() {
+ this.mergedTimeline = this.computeMergedTimeline();
+ this.$store.commit('setMergedTimeline', this.mergedTimeline);
+ this.updateNavigationFileFilter();
+ },
+ mounted() {
+ this.emitBottomHeightUpdate();
+ },
+ destroyed() {
+ this.$store.commit('removeMergedTimeline', this.mergedTimeline);
+ },
+ watch: {
+ navigationStyle(style) {
+ // Only store navigation type in local store if it's a type that will
+ // work regardless of what data is loaded.
+ if (style === NAVIGATION_STYLE.GLOBAL ||
+ style === NAVIGATION_STYLE.FOCUSED) {
+ this.store.navigationStyle = style;
+ }
+ this.updateNavigationFileFilter();
+ },
+ minimized() {
+ // Minimized toggled
+ this.updateNavigationFileFilter();
+
+ this.$nextTick(this.emitBottomHeightUpdate);
+ },
+ },
+ computed: {
+ video() {
+ return this.$store.getters.video;
+ },
+ videoOverlayStyle() {
+ return {
+ width: 150 + this.videoOverlayExtraWidth + 'px',
+ };
+ },
+ timelineFiles() {
+ return this.$store.getters.timelineFiles;
+ },
+ focusedFile() {
+ return this.$store.state.focusedFile;
+ },
+ expanded() {
+ return !this.minimized;
+ },
+ seekTime() {
+ return nanos_to_string(this.currentTimestamp);
+ },
+ scale() {
+ const mx = Math.max(...(this.timelineFiles.map((f) =>
+ Math.max(...f.timeline))));
+ const mi = Math.min(...(this.timelineFiles.map((f) =>
+ Math.min(...f.timeline))));
+ return [mi, mx];
+ },
+ currentTimestamp() {
+ return this.$store.state.currentTimestamp;
+ },
+ hasTimeline() {
+ // Returns true if a meaningful timeline exists (i.e. not only dumps)
+ for (const file of this.timelineFiles) {
+ if (file.timeline.length > 0 &&
+ (file.timeline[0] !== undefined || file.timeline.length > 1)) {
+ return true;
+ }
+ }
+
+ return false;
+ },
+ collapsedTimelineIconTooltip() {
+ switch (this.navigationStyle) {
+ case NAVIGATION_STYLE.GLOBAL:
+ return 'All timelines';
+
+ case NAVIGATION_STYLE.FOCUSED:
+ return `Focused: ${this.focusedFile.type}`;
+
+ case NAVIGATION_STYLE.CUSTOM:
+ return 'Enabled timelines';
+
+ default:
+ const split = this.navigationStyle.split('-');
+ if (split[0] !== NAVIGATION_STYLE.TARGETED) {
+ throw new Error('Unexpected nagivation type');
+ }
+
+ const fileType = split[1];
+
+ return fileType;
+ }
+ },
+ collapsedTimelineIcon() {
+ switch (this.navigationStyle) {
+ case NAVIGATION_STYLE.GLOBAL:
+ return 'public';
+
+ case NAVIGATION_STYLE.FOCUSED:
+ return TRACE_ICONS[this.focusedFile.type];
+
+ case NAVIGATION_STYLE.CUSTOM:
+ return 'dashboard_customize';
+
+ default:
+ const split = this.navigationStyle.split('-');
+ if (split[0] !== NAVIGATION_STYLE.TARGETED) {
+ throw new Error('Unexpected nagivation type');
+ }
+
+ const fileType = split[1];
+
+ return TRACE_ICONS[fileType];
+ }
+ },
+ minimizedTimeline() {
+ if (this.navigationStyle === NAVIGATION_STYLE.GLOBAL) {
+ return this.mergedTimeline;
+ }
+
+ if (this.navigationStyle === NAVIGATION_STYLE.FOCUSED) {
+ return this.focusedFile;
+ }
+
+ if (this.navigationStyle === NAVIGATION_STYLE.CUSTOM) {
+ // TODO: Return custom timeline
+ return this.mergedTimeline;
+ }
+
+ if (this.navigationStyle.split('-')[0] === NAVIGATION_STYLE.TARGETED) {
+ return this.$store.state
+ .traces[this.navigationStyle.split('-')[1]];
+ }
+
+ throw new Error('Unexpected Nagivation Style');
+ },
+ isCropped() {
+ return this.crop != null &&
+ (this.crop.left !== 0 || this.crop.right !== 1);
+ },
+ },
+ updated() {
+ this.$nextTick(() => {
+ if (this.$refs.expandedTimeline && this.expanded) {
+ this.videoHeight = this.$refs.expandedTimeline.clientHeight;
+ } else {
+ this.videoHeight = 'auto';
+ }
+ });
+ },
+ methods: {
+ emitBottomHeightUpdate() {
+ if (this.$refs.bottomNav) {
+ const newHeight = this.$refs.bottomNav.$el.clientHeight;
+ this.$emit('bottom-nav-height-change', newHeight);
+ }
+ },
+ computeMergedTimeline() {
+ const mergedTimeline = {
+ timeline: [], // Array of integers timestamps
+ selectedIndex: 0,
+ };
+
+ const timelineIndexes = [];
+ const timelines = [];
+ for (const file of this.timelineFiles) {
+ timelineIndexes.push(0);
+ timelines.push(file.timeline);
+ }
+
+ while (true) {
+ let minTime = Infinity;
+ let timelineToAdvance;
+
+ for (let i = 0; i < timelines.length; i++) {
+ const timeline = timelines[i];
+ const index = timelineIndexes[i];
+
+ if (index >= timeline.length) {
+ continue;
+ }
+
+ const time = timeline[index];
+
+ if (time < minTime) {
+ minTime = time;
+ timelineToAdvance = i;
+ }
+ }
+
+ if (timelineToAdvance === undefined) {
+ // No more elements left
+ break;
+ }
+
+ timelineIndexes[timelineToAdvance]++;
+ mergedTimeline.timeline.push(minTime);
+ }
+
+ // Object is frozen for performance reasons
+ // It will prevent Vue from making it a reactive object which will be very
+ // slow as the timeline gets larger.
+ Object.freeze(mergedTimeline.timeline);
+
+ return mergedTimeline;
+ },
+ toggle() {
+ this.minimized ? this.expand() : this.minimize();
+
+ this.minimized = !this.minimized;
+ },
+ expand() {
+ if (this.video) {
+ this.$refs.expandedContentVideoContainer
+ .appendChild(this.$refs.video.$el);
+ }
+ },
+ minimize() {
+ if (this.video) {
+ this.$refs.overlayVideoContainer.appendChild(this.$refs.video.$el);
+ }
+ },
+ fileIsVisible(f) {
+ return this.visibleDataViews.includes(f.filename);
+ },
+ resizeBottomNav(e) {
+ this.initResizeAction(e);
+ },
+ initResizeAction(e) {
+ document.onmousemove = this.startResize;
+ document.onmouseup = this.endResize;
+ },
+ startResize(e) {
+ if (this.dragState.clientY === null) {
+ this.dragState.clientY = e.clientY;
+ }
+
+ const movement = this.dragState.clientY - e.clientY;
+
+ const resizeOffset = this.resizeOffset + movement;
+ if (resizeOffset < 0) {
+ this.resizeOffset = 0;
+ this.dragState.clientY = null;
+ } else if (movement > this.getBottomNavDistanceToTop()) {
+ this.dragState.clientY += this.getBottomNavDistanceToTop();
+ this.resizeOffset += this.getBottomNavDistanceToTop();
+ } else {
+ this.resizeOffset = resizeOffset;
+ this.dragState.clientY = e.clientY;
+ }
+ },
+ endResize() {
+ this.dragState.lastDragEndPosition = this.dragState.clientY;
+ this.dragState.clientY = null;
+ document.onmouseup = null;
+ document.onmousemove = null;
+ },
+ getBottomNavDistanceToTop() {
+ return this.$refs.bottomNav.$el.getBoundingClientRect().top;
+ },
+ closeVideoOverlay() {
+ this.showVideoOverlay = false;
+ },
+ openVideoOverlay() {
+ this.showVideoOverlay = true;
+ },
+ toggleVideoOverlay() {
+ this.showVideoOverlay = !this.showVideoOverlay;
+ },
+ videoLoaded() {
+ this.$refs.videoOverlay.contentLoaded();
+ },
+ updateNavigationFileFilter() {
+ if (!this.minimized) {
+ // Always use custom mode navigation when timeline is expanded
+ this.$store.commit('setNavigationFilesFilter',
+ (f) => !f.timelineDisabled);
+ return;
+ }
+
+ let navigationStyleFilter;
+ switch (this.navigationStyle) {
+ case NAVIGATION_STYLE.GLOBAL:
+ navigationStyleFilter = (f) => true;
+ break;
+
+ case NAVIGATION_STYLE.FOCUSED:
+ navigationStyleFilter =
+ (f) => f.type === this.focusedFile.type;
+ break;
+
+ case NAVIGATION_STYLE.CUSTOM:
+ navigationStyleFilter = (f) => !f.timelineDisabled;
+ break;
+
+ default:
+ const split = this.navigationStyle.split('-');
+ if (split[0] !== NAVIGATION_STYLE.TARGETED) {
+ throw new Error('Unexpected nagivation type');
+ }
+
+ const fileType = split[1];
+ navigationStyleFilter =
+ (f) => f.type === fileType;
+ }
+
+ this.$store.commit('setNavigationFilesFilter', navigationStyleFilter);
+ },
+ updateVideoOverlayWidth(width) {
+ this.videoOverlayExtraWidth = width;
+ },
+ onTimelineCrop(cropDetails) {
+ this.crop = cropDetails;
+ },
+ onTimelineCropIntent(cropIntent) {
+ this.cropIntent = cropIntent;
+ },
+ changeVideoTimestamp(ts) {
+ if (!this.$refs.video) {
+ return;
+ }
+ this.$refs.video.selectFrameAtTime(ts);
+ },
+ resetVideoTimestamp() {
+ if (!this.$refs.video) {
+ return;
+ }
+ this.$refs.video.jumpToSelectedIndex();
+ },
+ clearSelection() {
+ this.crop = null;
+ },
+ },
+ components: {
+ 'timeline': Timeline,
+ 'timelines': Timelines,
+ 'timeline-selection': TimelineSelection,
+ 'videoview': VideoView,
+ 'draggable-div': DraggableDiv,
+ 'md-icon-option': MdIconOption,
+ },
+};
+</script>
+<style scoped>
+.overlay {
+ position: fixed;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ right: 0;
+ width: 100vw;
+ height: 100vh;
+ z-index: 10;
+ margin: 0;
+ display: flex;
+ flex-direction: column;
+ pointer-events: none;
+}
+
+.overlay-content {
+ flex-grow: 1;
+}
+
+.bottom-nav {
+ background: white;
+ margin: 0;
+ max-height: 100vh;
+ bottom: 0;
+ left: 0;
+ pointer-events: all;
+}
+
+.nav-content {
+ width: 100%;
+}
+
+.toolbar, .active-timeline, .options {
+ display: flex;
+ flex-direction: row;
+ flex: 1;
+ align-items: center;
+}
+
+.toolbar.expanded {
+ align-items: baseline;
+}
+
+.minimized-timeline-content {
+ flex-grow: 1;
+}
+
+.minimized-timeline-content .seek-time {
+ padding: 3px 0;
+}
+
+.options, .expanded-content .seek-time {
+ padding: 0 20px 15px 20px;
+}
+
+.options label {
+ font-weight: 600;
+}
+
+.options .datafilter {
+ height: 50px;
+ display: flex;
+ align-items: center;
+}
+
+.expanded-content {
+ display: flex;
+}
+
+.flex-fill {
+ flex-grow: 1;
+}
+
+.video {
+ flex-grow: 0;
+}
+
+.resize-bar {
+ flex-grow: 1;
+}
+
+.drag-handle {
+ cursor: grab;
+}
+
+.md-icon-button {
+ margin: 0;
+}
+
+.toggle-btn {
+ margin-left: 8px;
+ align-self: flex-end;
+}
+
+.video-overlay {
+ display: inline-block;
+ margin-bottom: 15px;
+ min-width: 50px;
+ max-width: 50vw;
+ height: auto;
+ resize: horizontal;
+ pointer-events: all;
+}
+
+.close-video-overlay {
+ float: right;
+ cursor: pointer;
+}
+
+.show-video-overlay-btn {
+ margin-left: 12px;
+ margin-right: -8px;
+ align-self: flex-end;
+}
+
+.show-video-overlay-btn .md-icon {
+ color: #9E9E9E!important;
+}
+
+.collapsed-timeline-icon {
+ cursor: pointer;
+}
+
+.show-video-overlay-btn.active .md-icon {
+ color: #212121!important;
+}
+
+.help {
+ display: flex;
+ align-content: flex-end;
+ align-items: flex-end;
+ flex-direction: column;
+}
+
+.help-icon-wrapper {
+ margin-right: 20px;
+ margin-bottom: 10px;
+}
+
+.help-icon-wrapper .help-icon {
+ cursor: help;
+}
+
+.trace-icon {
+ cursor: pointer;
+ user-select: none;
+}
+
+.trace-icon.disabled {
+ color: gray;
+}
+
+.active-timeline {
+ flex: 0 0 auto;
+}
+
+.active-timeline .icon {
+ margin-right: 20px;
+}
+
+.active-timeline .active-timeline-icon {
+ margin-right: 10px;
+ align-self: flex-end;
+ margin-bottom: 18px;
+}
+
+.minimized-timeline-content {
+ align-self: flex-start;
+ padding-top: 1px;
+}
+
+.minimized-timeline-content label {
+ color: rgba(0,0,0,0.54);
+ font-size: 12px;
+ font-family: inherit;
+}
+
+.minimized-timeline-content .minimized-timeline {
+ margin-top: 4px;
+}
+
+.nagivation-style-selection-field {
+ width: 90px;
+ margin-right: 10px;
+ margin-bottom: 0;
+}
+
+.timeline-selection-header {
+ display: flex;
+ align-items: center;
+ padding-left: 15px;
+ height: 48px;
+}
+
+.help-icon {
+ font-size: 15px;
+ margin-bottom: 15px;
+ cursor: help;
+}
+</style>
diff --git a/tools/winscope/src/PropertiesTreeElement.vue b/tools/winscope/src/PropertiesTreeElement.vue
new file mode 100644
index 000000000..07293f937
--- /dev/null
+++ b/tools/winscope/src/PropertiesTreeElement.vue
@@ -0,0 +1,84 @@
+<!-- Copyright (C) 2020 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<template>
+ <span>
+ <span class="key">{{ key }} </span>
+ <span v-if="value">: </span>
+ <span class="value" v-if="value" :class="[valueClass]">{{ value }}</span>
+ </span>
+</template>
+<script>
+export default {
+ name: 'PropertiesTreeElement',
+ props: ['item', 'simplify-names'],
+ computed: {
+ key() {
+ if (!this.item.children || this.item.children.length === 0) {
+ return this.item.name.split(': ')[0];
+ }
+
+ return this.item.name;
+ },
+ value() {
+ if (!this.item.children || this.item.children.length === 0) {
+ return this.item.name.split(': ').slice(1).join(': ');
+ }
+
+ return null;
+ },
+ valueClass() {
+ if (!this.value) {
+ return null;
+ }
+
+ if (this.value == 'null') {
+ return 'null';
+ }
+
+ if (this.value == 'true') {
+ return 'true';
+ }
+
+ if (this.value == 'false') {
+ return 'false';
+ }
+
+ if (!isNaN(this.value)) {
+ return 'number';
+ }
+ },
+ },
+};
+</script>
+<style scoped>
+.key {
+ color: #4b4b4b;
+}
+.value {
+ color: #8A2BE2;
+}
+.value.null {
+ color: #e1e1e1;
+}
+.value.number {
+ color: #4c75fd;
+}
+.value.true {
+ color: #2ECC40;
+}
+.value.false {
+ color: #FF4136;
+}
+</style>
diff --git a/tools/winscope/src/Rects.vue b/tools/winscope/src/Rects.vue
index 9548d7e3e..3d83dac86 100644
--- a/tools/winscope/src/Rects.vue
+++ b/tools/winscope/src/Rects.vue
@@ -14,8 +14,12 @@
-->
<template>
<div class="bounds" :style="boundsStyle">
- <div class="rect" v-for="r in rects" :style="rectToStyle(r)"
- @click="onClick(r)">
+ <div
+ class="rect" v-for="r in filteredRects"
+ :style="rectToStyle(r)"
+ @click="onClick(r)"
+ v-bind:key="`${r.left}-${r.right}-${r.top}-${r.bottom}-${r.ref.name}`"
+ >
<span class="label">{{r.label}}</span>
</div>
<div class="highlight" v-if="highlight" :style="rectToStyle(highlight)" />
@@ -24,13 +28,15 @@
<script>
-import { multiply_rect } from './matrix_utils.js'
+// eslint-disable-next-line camelcase
+import {multiply_rect} from './matrix_utils.js';
export default {
name: 'rects',
props: ['bounds', 'rects', 'highlight'],
- data () {
+ data() {
return {
+ desiredHeight: 800,
desiredWidth: 400,
};
},
@@ -39,34 +45,50 @@ export default {
if (this.bounds) {
return this.bounds;
}
- var width = Math.max(...this.rects.map((r) => multiply_rect(r.transform, r).right));
- var height = Math.max(...this.rects.map((r) => multiply_rect(r.transform, r).bottom));
+ const width = Math.max(
+ ...this.rects.map((r) => multiply_rect(r.transform, r).right));
+ const height = Math.max(
+ ...this.rects.map((r) => multiply_rect(r.transform, r).bottom));
return {width, height};
},
boundsStyle() {
return this.rectToStyle({top: 0, left: 0, right: this.boundsC.width,
- bottom: this.boundsC.height});
+ bottom: this.boundsC.height});
+ },
+ filteredRects() {
+ return this.rects.filter((rect) => {
+ const isVisible = rect.ref.visible ?? rect.ref.isVisible;
+ console.warn(`Name: ${rect.ref.name} Kind: ${rect.ref.kind} isVisible=${isVisible}`);
+ return isVisible;
+ });
},
},
methods: {
- s(sourceCoordinate) { // translate source into target coordinates
- return sourceCoordinate / this.boundsC.width * this.desiredWidth;
+ s(sourceCoordinate) { // translate source into target coordinates
+ let scale;
+ if (this.boundsC.width < this.boundsC.height) {
+ scale = this.desiredHeight / this.boundsC.height;
+ } else {
+ scale = this.desiredWidth / this.boundsC.width;
+ }
+ return sourceCoordinate * scale;
},
rectToStyle(r) {
- var x = this.s(r.left);
- var y = this.s(r.top);
- var w = this.s(r.right) - this.s(r.left);
- var h = this.s(r.bottom) - this.s(r.top);
- var t = r.transform;
- var tr = t ? `matrix(${t.dsdx}, ${t.dtdx}, ${t.dsdy}, ${t.dtdy}, ${this.s(t.tx)}, ${this.s(t.ty)})` : '';
+ const x = this.s(r.left);
+ const y = this.s(r.top);
+ const w = this.s(r.right) - this.s(r.left);
+ const h = this.s(r.bottom) - this.s(r.top);
+ const t = r.transform;
+ const tr = t ? `matrix(${t.dsdx}, ${t.dtdx}, ${t.dsdy}, ${t.dtdy}, ` +
+ `${this.s(t.tx)}, ${this.s(t.ty)})` : '';
return `top: ${y}px; left: ${x}px; height: ${h}px; width: ${w}px;` +
- `transform: ${tr}; transform-origin: 0 0;`
+ `transform: ${tr}; transform-origin: 0 0;`;
},
onClick(r) {
this.$emit('rect-click', r.ref);
},
- }
-}
+ },
+};
</script>
<style scoped>
@@ -82,10 +104,10 @@ export default {
}
.rect {
border: 1px solid black;
- background-color: rgba(100, 100, 100, 0.8);
+ background-color: rgba(110, 114, 116, 0.8);
}
.highlight {
- border: 2px solid red;
+ border: 2px solid rgb(235, 52, 52);
pointer-events: none;
}
.label {
diff --git a/tools/winscope/src/SurfaceFlingerTraceView.vue b/tools/winscope/src/SurfaceFlingerTraceView.vue
new file mode 100644
index 000000000..9b9c6ed23
--- /dev/null
+++ b/tools/winscope/src/SurfaceFlingerTraceView.vue
@@ -0,0 +1,56 @@
+<!-- Copyright (C) 2020 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<template>
+ <TraceView :store="store" :file="file" :summarizer="summarizer" />
+</template>
+
+<script>
+import TraceView from '@/TraceView.vue';
+
+export default {
+ name: 'WindowManagerTraceView',
+ props: ['store', 'file'],
+ components: {
+ TraceView,
+ },
+ methods: {
+ summarizer(layer) {
+ const summary = [];
+
+ if (layer.invisibleDueTo) {
+ summary.push({key: 'Invisible due to', value: layer.invisibleDueTo});
+ }
+
+ if (layer.occludedBy?.length > 0) {
+ summary.push({key: 'Occluded by', value: layer.occludedBy.join(', ')});
+ }
+
+ if (layer.partiallyOccludedBy?.length > 0) {
+ summary.push({
+ key: 'Partially occluded by',
+ value: layer.partiallyOccludedBy.join(', '),
+ });
+ }
+
+ if (layer.coveredBy?.length > 0) {
+ summary.push({key: 'Covered by', value: layer.coveredBy.join(', ')});
+ }
+
+ return summary;
+ },
+ },
+};
+</script>
diff --git a/tools/winscope/src/Timeline.vue b/tools/winscope/src/Timeline.vue
index a1f66ae33..293aac670 100644
--- a/tools/winscope/src/Timeline.vue
+++ b/tools/winscope/src/Timeline.vue
@@ -13,50 +13,74 @@
limitations under the License.
-->
<template>
- <svg width="2000" height="20" viewBox="-5,0,2010,20">
- <circle :cx="position(item)" cy="10" r="5" v-for="(item, idx) in items" @click="onItemClick(idx)" />
- <circle v-if="items.length" :cx="position(selected)" cy="10" r="5" class="selected" />
+ <svg
+ width="100%"
+ height="20"
+ class="timeline-svg"
+ :class="{disabled: disabled}"
+ ref="timeline"
+ >
+ <rect
+ :x="`${block.startPos}%`"
+ y="0"
+ :width="`${block.width}%`"
+ :height="pointHeight"
+ :rx="corner"
+ v-for="(block, idx) in timelineBlocks"
+ :key="idx"
+ @click="onBlockClick"
+ class="point"
+ />
+ <rect
+ :x="`${position(selected)}%`"
+ y="0"
+ :width="`${pointWidth}%`"
+ :height="pointHeight"
+ :rx="corner"
+ class="point selected"
+ />
</svg>
</template>
<script>
+import TimelineMixin from "./mixins/Timeline.js";
+
export default {
- name: 'timeline',
- props: ['items', 'selectedIndex', 'scale'],
+ name: "timeline",
+ // TODO: Add indication of trim, at least for collasped timeline
+ props: ["selectedIndex", "crop", "disabled"],
data() {
- return {};
- },
- methods: {
- position(item) {
- return this.translate(item);
- },
- translate(cx) {
- var scale = [...this.scale];
- if (scale[0] >= scale[1]) {
- return cx;
- }
- return (cx - scale[0]) / (scale[1] - scale[0]) * 2000;
- },
- onItemClick(index) {
- this.$emit('item-selected', index);
- },
+ return {
+ pointHeight: 15,
+ corner: 2
+ };
},
+ mixins: [TimelineMixin],
+ methods: {},
computed: {
timestamps() {
- if (this.items.length == 1) {
+ if (this.timeline.length == 1) {
return [0];
}
- return this.items;
+ return this.timeline;
},
selected() {
- return this.items[this.selectedIndex];
- }
- },
-}
-
+ return this.timeline[this.selectedIndex];
+ },
+ }
+};
</script>
<style scoped>
-.selected {
- fill: red;
+.timeline-svg .point {
+ cursor: pointer;
+}
+.timeline-svg.disabled .point {
+ fill: #BDBDBD;
+ cursor: not-allowed;
+}
+.timeline-svg:not(.disabled) .point.selected {
+ fill: rgb(240, 59, 59);
+}
+.timeline-svg.disabled .point.selected {
+ fill: rgba(240, 59, 59, 0.596);
}
-
</style>
diff --git a/tools/winscope/src/TimelineSelection.vue b/tools/winscope/src/TimelineSelection.vue
new file mode 100644
index 000000000..d4a0e3134
--- /dev/null
+++ b/tools/winscope/src/TimelineSelection.vue
@@ -0,0 +1,463 @@
+<!-- Copyright (C) 2020 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<template>
+ <div class="wrapper">
+ <svg
+ width="100%"
+ height="20"
+ class="timeline-svg"
+ :class="{disabled: disabled}"
+ ref="timeline"
+ >
+ <rect
+ :x="`${block.startPos}%`"
+ y="0"
+ :width="`${block.width}%`"
+ :height="pointHeight"
+ :rx="corner"
+ v-for="(block, idx) in timelineBlocks"
+ :key="idx"
+ class="point"
+ />
+ <rect
+ v-if="selectedWidth >= 0"
+ v-show="showSelection"
+ :x="selectionAreaStart"
+ y="0"
+ :width="selectedWidth"
+ :height="pointHeight"
+ :rx="corner"
+ class="point selection"
+ ref="selectedSection"
+ />
+ <rect
+ v-else
+ v-show="showSelection"
+ :x="selectionAreaEnd"
+ y="0"
+ :width="-selectedWidth"
+ :height="pointHeight"
+ :rx="corner"
+ class="point selection"
+ ref="selectedSection"
+ />
+
+ <rect
+ v-show="showSelection"
+ :x="selectionAreaStart - 2"
+ y="0"
+ :width="4"
+ :height="pointHeight"
+ :rx="corner"
+ class="point selection-edge"
+ ref="leftResizeDragger"
+ />
+
+ <rect
+ v-show="showSelection"
+ :x="selectionAreaEnd - 2"
+ y="0"
+ :width="4"
+ :height="pointHeight"
+ :rx="corner"
+ class="point selection-edge"
+ ref="rightResizeDragger"
+ />
+ </svg>
+ </div>
+</template>
+<script>
+import TimelineMixin from './mixins/Timeline';
+
+export default {
+ name: 'timelineSelection',
+ props: ['startTimestamp', 'endTimestamp', 'cropArea', 'disabled'],
+ data() {
+ return {
+ pointHeight: 15,
+ corner: 2,
+ selectionStartPosition: 0,
+ selectionEndPosition: 0,
+ selecting: false,
+ dragged: false,
+ draggingSelection: false,
+ };
+ },
+ mixins: [TimelineMixin],
+ watch: {
+ selectionStartPosition() {
+ // Send crop intent rather than final crop value while we are selecting
+ if ((this.selecting && this.dragged)) {
+ this.emitCropIntent();
+ return;
+ }
+
+ this.emitCropDetails();
+ },
+ selectionEndPosition() {
+ // Send crop intent rather than final crop value while we are selecting
+ if ((this.selecting && this.dragged)) {
+ this.emitCropIntent();
+ return;
+ }
+
+ this.emitCropDetails();
+ },
+ },
+ methods: {
+ /**
+ * Create an object that can be injected and removed from the DOM to change
+ * the cursor style. The object is a mask over the entire screen. It is
+ * done this way as opposed to injecting a style targeting all elements for
+ * performance reasons, otherwise recalculate style would be very slow.
+ * This makes sure that regardless of the cursor style of other elements,
+ * the cursor style will be set to what we want over the entire screen.
+ * @param {string} cursor - The cursor type to apply to the entire page.
+ * @return An object that can be injected and removed from the DOM which
+ * changes the cursor style for the entire page.
+ */
+ createCursorStyle(cursor) {
+ const cursorMask = document.createElement('div');
+ cursorMask.style.cursor = cursor;
+ cursorMask.style.height = '100vh';
+ cursorMask.style.width = '100vw';
+ cursorMask.style.position = 'fixed';
+ cursorMask.style.top = '0';
+ cursorMask.style.left = '0';
+ cursorMask.style['z-index'] = '1000';
+
+ return {
+ inject: () => {
+ document.body.appendChild(cursorMask);
+ },
+ remove: () => {
+ try {
+ document.body.removeChild(cursorMask);
+ } catch (e) {}
+ },
+ };
+ },
+
+ setupCreateSelectionListeners() {
+ const cursorStyle = this.createCursorStyle('crosshair');
+
+ this.timelineSvgMouseDownEventListener = (e) => {
+ e.stopPropagation();
+ this.selecting = true;
+ this.dragged = false;
+ this.mouseDownX = e.offsetX;
+ this.mouseDownClientX = e.clientX;
+
+ cursorStyle.inject();
+ };
+
+ this.createSelectionMouseMoveEventListener = (e) => {
+ if (this.selecting) {
+ if (!this.dragged) {
+ this.selectionStartX = this.mouseDownX;
+ }
+
+ this.dragged = true;
+ const draggedAmount = e.clientX - this.mouseDownClientX;
+
+ if (draggedAmount >= 0) {
+ this.selectionStartPosition = this.selectionStartX;
+
+ const endX = this.selectionStartX + draggedAmount;
+ if (endX <= this.$refs.timeline.clientWidth) {
+ this.selectionEndPosition = endX;
+ } else {
+ this.selectionEndPosition = this.$refs.timeline.clientWidth;
+ }
+
+ this.$emit('showVideoAt', this.absolutePositionAsTimestamp(this.selectionEndPosition));
+ } else {
+ this.selectionEndPosition = this.selectionStartX;
+
+ const startX = this.selectionStartX + draggedAmount;
+ if (startX >= 0) {
+ this.selectionStartPosition = startX;
+ } else {
+ this.selectionStartPosition = 0;
+ }
+
+ this.$emit('showVideoAt', this.absolutePositionAsTimestamp(this.selectionStartPosition));
+ }
+ }
+ };
+
+ this.createSelectionMouseUpEventListener = (e) => {
+ this.selecting = false;
+ cursorStyle.remove();
+ this.$emit('resetVideoTimestamp');
+ if (this.dragged) {
+ // Clear crop intent, we now have a set crop value
+ this.clearCropIntent();
+ // Notify of final crop value
+ this.emitCropDetails();
+ }
+ this.dragged = false;
+ };
+
+ this.$refs.timeline
+ .addEventListener('mousedown', this.timelineSvgMouseDownEventListener);
+ document
+ .addEventListener('mousemove', this.createSelectionMouseMoveEventListener);
+ document
+ .addEventListener('mouseup', this.createSelectionMouseUpEventListener);
+ },
+
+ teardownCreateSelectionListeners() {
+ this.$refs.timeline
+ .removeEventListener('mousedown', this.timelineSvgMouseDownEventListener);
+ document
+ .removeEventListener('mousemove', this.createSelectionMouseMoveEventListener);
+ document
+ .removeEventListener('mouseup', this.createSelectionMouseUpEventListener);
+ },
+
+ setupDragSelectionListeners() {
+ const cursorStyle = this.createCursorStyle('move');
+
+ this.selectedSectionMouseDownListener = (e) => {
+ e.stopPropagation();
+ this.draggingSelectionStartX = e.clientX;
+ this.selectionStartPosition = this.selectionAreaStart;
+ this.selectionEndPosition = this.selectionAreaEnd;
+ this.draggingSelectionStartPos = this.selectionAreaStart;
+ this.draggingSelectionEndPos = this.selectionAreaEnd;
+
+ // Keep this after fetching selectionAreaStart and selectionAreaEnd.
+ this.draggingSelection = true;
+
+ cursorStyle.inject();
+ };
+
+ this.dragSelectionMouseMoveEventListener = (e) => {
+ if (this.draggingSelection) {
+ const dragAmount = e.clientX - this.draggingSelectionStartX;
+
+ const newStartPos = this.draggingSelectionStartPos + dragAmount;
+ const newEndPos = this.draggingSelectionEndPos + dragAmount;
+ if (newStartPos >= 0 && newEndPos <= this.$refs.timeline.clientWidth) {
+ this.selectionStartPosition = newStartPos;
+ this.selectionEndPosition = newEndPos;
+ } else {
+ if (newStartPos < 0) {
+ this.selectionStartPosition = 0;
+ this.selectionEndPosition = newEndPos - (newStartPos /* negative overflown amount*/);
+ } else {
+ const overflownAmount = newEndPos - this.$refs.timeline.clientWidth;
+ this.selectionEndPosition = this.$refs.timeline.clientWidth;
+ this.selectionStartPosition = newStartPos - overflownAmount;
+ }
+ }
+ }
+ };
+
+ this.dragSelectionMouseUpEventListener = (e) => {
+ this.draggingSelection = false;
+ cursorStyle.remove();
+ };
+
+ this.$refs.selectedSection
+ .addEventListener('mousedown', this.selectedSectionMouseDownListener);
+ document
+ .addEventListener('mousemove', this.dragSelectionMouseMoveEventListener);
+ document
+ .addEventListener('mouseup', this.dragSelectionMouseUpEventListener);
+ },
+
+ teardownDragSelectionListeners() {
+ this.$refs.selectedSection
+ .removeEventListener('mousedown', this.selectedSectionMouseDownListener);
+ document
+ .removeEventListener('mousemove', this.dragSelectionMouseMoveEventListener);
+ document
+ .removeEventListener('mouseup', this.dragSelectionMouseUpEventListener);
+ },
+
+ setupResizeSelectionListeners() {
+ const cursorStyle = this.createCursorStyle('ew-resize');
+
+ this.leftResizeDraggerMouseDownEventListener = (e) => {
+ e.stopPropagation();
+ this.resizeStartX = e.clientX;
+ this.selectionStartPosition = this.selectionAreaStart;
+ this.selectionEndPosition = this.selectionAreaEnd;
+ this.resizeStartPos = this.selectionAreaStart;
+ this.resizeingLeft = true;
+
+ cursorStyle.inject();
+ this.$emit('showVideoAt', this.absolutePositionAsTimestamp(this.selectionAreaStart));
+ };
+
+ this.rightResizeDraggerMouseDownEventListener = (e) => {
+ e.stopPropagation();
+ this.resizeStartX = e.clientX;
+ this.selectionStartPosition = this.selectionAreaStart;
+ this.selectionEndPosition = this.selectionAreaEnd;
+ this.resizeEndPos = this.selectionAreaEnd;
+ this.resizeingRight = true;
+
+ cursorStyle.inject();
+ this.$emit('showVideoAt', this.absolutePositionAsTimestamp(this.selectionAreaEnd));
+ };
+
+ this.resizeMouseMoveEventListener = (e) => {
+ if (this.resizeingLeft) {
+ const moveAmount = e.clientX - this.resizeStartX;
+ let newStartPos = this.resizeStartPos + moveAmount;
+ if (newStartPos >= this.selectionEndPosition) {
+ newStartPos = this.selectionEndPosition;
+ }
+ if (newStartPos < 0) {
+ newStartPos = 0;
+ }
+
+ this.selectionStartPosition = newStartPos;
+
+ this.$emit('showVideoAt', this.absolutePositionAsTimestamp(this.selectionStartPosition));
+ }
+
+ if (this.resizeingRight) {
+ const moveAmount = e.clientX - this.resizeStartX;
+ let newEndPos = this.resizeEndPos + moveAmount;
+ if (newEndPos <= this.selectionStartPosition) {
+ newEndPos = this.selectionStartPosition;
+ }
+ if (newEndPos > this.$refs.timeline.clientWidth) {
+ newEndPos = this.$refs.timeline.clientWidth;
+ }
+
+ this.selectionEndPosition = newEndPos;
+ this.$emit('showVideoAt', this.absolutePositionAsTimestamp(this.selectionEndPosition));
+ }
+ };
+
+ this.resizeSelectionMouseUpEventListener = (e) => {
+ this.resizeingLeft = false;
+ this.resizeingRight = false;
+ cursorStyle.remove();
+ this.$emit('resetVideoTimestamp');
+ };
+
+ this.$refs.leftResizeDragger
+ .addEventListener('mousedown', this.leftResizeDraggerMouseDownEventListener);
+ this.$refs.rightResizeDragger
+ .addEventListener('mousedown', this.rightResizeDraggerMouseDownEventListener);
+ document
+ .addEventListener('mousemove', this.resizeMouseMoveEventListener);
+ document
+ .addEventListener('mouseup', this.resizeSelectionMouseUpEventListener);
+ },
+
+ teardownResizeSelectionListeners() {
+ this.$refs.leftResizeDragger
+ .removeEventListener('mousedown', this.leftResizeDraggerMouseDownEventListener);
+ this.$refs.rightResizeDragger
+ .removeEventListener('mousedown', this.rightResizeDraggerMouseDownEventListener);
+ document
+ .removeEventListener('mousemove', this.resizeMouseMoveEventListener);
+ document
+ .removeEventListener('mouseup', this.resizeSelectionMouseUpEventListener);
+ },
+
+ emitCropDetails() {
+ const width = this.$refs.timeline.clientWidth;
+ this.$emit('crop', {
+ left: this.selectionStartPosition / width,
+ right: this.selectionEndPosition / width,
+ });
+ },
+
+ emitCropIntent() {
+ const width = this.$refs.timeline.clientWidth;
+ this.$emit('cropIntent', {
+ left: this.selectionStartPosition / width,
+ right: this.selectionEndPosition / width
+ });
+ },
+
+ clearCropIntent() {
+ this.$emit('cropIntent', null);
+ }
+ },
+ computed: {
+ selected() {
+ return this.timeline[this.selectedIndex];
+ },
+ selectedWidth() {
+ return this.selectionAreaEnd - this.selectionAreaStart;
+ },
+ showSelection() {
+ return this.selectionAreaStart || this.selectionAreaEnd;
+ },
+ selectionAreaStart() {
+ if ((this.selecting && this.dragged) || this.draggingSelection) {
+ return this.selectionStartPosition;
+ }
+
+ if (this.cropArea && this.$refs.timeline) {
+ return this.cropArea.left * this.$refs.timeline.clientWidth;
+ }
+
+ return 0;
+ },
+ selectionAreaEnd() {
+ if ((this.selecting && this.dragged) || this.draggingSelection) {
+ return this.selectionEndPosition;
+ }
+
+ if (this.cropArea && this.$refs.timeline) {
+ return this.cropArea.right * this.$refs.timeline.clientWidth;
+ }
+
+ return 0;
+ },
+ },
+ mounted() {
+ this.setupCreateSelectionListeners();
+ this.setupDragSelectionListeners();
+ this.setupResizeSelectionListeners();
+ },
+ beforeDestroy() {
+ this.teardownCreateSelectionListeners();
+ this.teardownDragSelectionListeners();
+ this.teardownResizeSelectionListeners();
+ },
+};
+</script>
+<style scoped>
+.wrapper {
+ padding: 0 15px;
+}
+
+.timeline-svg {
+ cursor: crosshair;
+}
+.timeline-svg .point {
+ fill: #BDBDBD;
+}
+.timeline-svg .point.selection {
+ fill: rgba(240, 59, 59, 0.596);
+ cursor: move;
+}
+
+.timeline-svg .point.selection-edge {
+ fill: rgba(27, 123, 212, 0.596);
+ cursor: ew-resize;
+}
+</style>
diff --git a/tools/winscope/src/Timelines.vue b/tools/winscope/src/Timelines.vue
new file mode 100644
index 000000000..a3229965b
--- /dev/null
+++ b/tools/winscope/src/Timelines.vue
@@ -0,0 +1,376 @@
+<!-- Copyright (C) 2020 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<template>
+ <div class="timelines-container">
+
+ <div class="timeline-icons" @mousedown="mousedownHandler">
+ <div
+ v-for="file in timelineFiles"
+ :key="file.filename"
+ class="trace-icon"
+ :class="{disabled: file.timelineDisabled}"
+ @click="toggleTimeline(file)"
+ style="cursor: pointer;"
+ >
+ <i class="material-icons">
+ {{ TRACE_ICONS[file.type] }}
+ <md-tooltip md-direction="bottom">{{ file.type }}</md-tooltip>
+ </i>
+ </div>
+ </div>
+
+ <div class="timelines-wrapper" ref="timelinesWrapper">
+ <md-list class="timelines" @mousedown="mousedownHandler" ref="timelines">
+ <md-list-item
+ v-for="file in timelineFiles"
+ :key="file.filename"
+ >
+ <timeline
+ :timeline="Object.freeze(file.timeline)"
+ :selected-index="file.selectedIndex"
+ :scale="scale"
+ :crop="crop"
+ :disabled="file.timelineDisabled"
+ class="timeline"
+ />
+ </md-list-item>
+ </md-list>
+
+ <div
+ class="selection"
+ :style="selectionStyle"
+ />
+
+ <div
+ v-show="this.cropIntent"
+ class="selection-intent"
+ :style="selectionIntentStyle"
+ />
+ </div>
+ </div>
+</template>
+<script>
+import Timeline from './Timeline.vue';
+import {TRACE_ICONS} from '@/decode.js';
+
+export default {
+ name: 'Timelines',
+ props: ['timelineFiles', 'scale', 'crop', 'cropIntent'],
+ data() {
+ return {
+ // Distances of sides from top left corner of wrapping div in pixels
+ selectionPosition: {
+ top: 0,
+ left: 0,
+ bottom: 0,
+ right: 0,
+ },
+ TRACE_ICONS,
+ };
+ },
+ computed: {
+ /**
+ * Used to check whether or not a selection box should be displayed.
+ * @return {bool} true if any of the positions are non nullish values
+ */
+ isEmptySelection() {
+ return this.selectionPosition.top ||
+ this.selectionPosition.left ||
+ this.selectionPosition.bottom ||
+ this.selectionPosition.right;
+ },
+ /**
+ * Generates the style of the selection box.
+ * @return {object} an object containing the style of the selection box.
+ */
+ selectionStyle() {
+ return {
+ top: `${this.selectionPosition.top}px`,
+ left: `${this.selectionPosition.left}px`,
+ height:
+ `${this.selectionPosition.bottom - this.selectionPosition.top}px`,
+ width:
+ `${this.selectionPosition.right - this.selectionPosition.left}px`,
+ };
+ },
+ /**
+ * Generates the dynamic style of the selection intent box.
+ * @return {object} an object containing the style of the selection intent
+ * box.
+ */
+ selectionIntentStyle() {
+ if (!(this.cropIntent && this.$refs.timelinesWrapper)) {
+ return {
+ left: 0,
+ width: 0,
+ };
+ }
+
+ const activeCropLeft = this.crop?.left ?? 0;
+ const activeCropRight = this.crop?.right ?? 1;
+ const timelineWidth =
+ this.$refs.timelinesWrapper.getBoundingClientRect().width;
+
+ const r = timelineWidth / (activeCropRight - activeCropLeft);
+
+ let left = 0;
+ let boderLeft = 'none';
+ if (this.cropIntent.left > activeCropLeft) {
+ left = (this.cropIntent.left - activeCropLeft) * r;
+ boderLeft = null;
+ }
+
+ let right = timelineWidth;
+ let borderRight = 'none';
+ if (this.cropIntent.right < activeCropRight) {
+ right = timelineWidth - (activeCropRight - this.cropIntent.right) * r;
+ borderRight = null;
+ }
+
+ return {
+ 'left': `${left}px`,
+ 'width': `${right - left}px`,
+ 'border-left': boderLeft,
+ 'border-right': borderRight,
+ };
+ },
+ },
+ methods: {
+ /**
+ * Adds an overlay to make sure element selection can't happen and the
+ * crosshair cursor style is maintained wherever the curso is on the screen
+ * while a selection is taking place.
+ */
+ addOverlay() {
+ if (this.overlay) {
+ return;
+ }
+
+ this.overlay = document.createElement('div');
+ Object.assign(this.overlay.style, {
+ 'position': 'fixed',
+ 'top': 0,
+ 'left': 0,
+ 'height': '100vh',
+ 'width': '100vw',
+ 'z-index': 100,
+ 'cursor': 'crosshair',
+ });
+
+ document.body.appendChild(this.overlay);
+ },
+
+ /**
+ * Removes the overlay that is added by a call to addOverlay.
+ */
+ removeOverlay() {
+ if (!this.overlay) {
+ return;
+ }
+
+ document.body.removeChild(this.overlay);
+ delete this.overlay;
+ },
+
+ /**
+ * Generates an object that can is used to update the position and style of
+ * the selection box when a selection is being made. The object contains
+ * three functions which all take a DOM event as a parameter.
+ *
+ * - init: setup the initial drag position of the selection base on the
+ * mousedown event
+ * - update: updates the selection box's coordinates based on the mousemouve
+ * event
+ * - reset: clears the selection box, shold be called when the mouseup event
+ * occurs or when we want to no longer display the selection box.
+ * @return {null}
+ */
+ selectionPositionsUpdater() {
+ let startClientX; let startClientY; let x; let y;
+
+ return {
+ init: (e) => {
+ startClientX = e.clientX;
+ startClientY = e.clientY;
+ x = startClientX -
+ this.$refs.timelines.$el.getBoundingClientRect().left;
+ y = startClientY -
+ this.$refs.timelines.$el.getBoundingClientRect().top;
+ },
+ update: (e) => {
+ let left; let right; let top; let bottom;
+
+ const xDiff = e.clientX - startClientX;
+ if (xDiff > 0) {
+ left = x;
+ right = x + xDiff;
+ } else {
+ left = x + xDiff;
+ right = x;
+ }
+
+ const yDiff = e.clientY - startClientY;
+ if (yDiff > 0) {
+ top = y;
+ bottom = y + yDiff;
+ } else {
+ top = y + yDiff;
+ bottom = y;
+ }
+
+ if (left < 0) {
+ left = 0;
+ }
+ if (top < 0) {
+ top = 0;
+ }
+ if (right > this.$refs.timelines.$el.getBoundingClientRect().width) {
+ right = this.$refs.timelines.$el.getBoundingClientRect().width;
+ }
+
+ if (bottom >
+ this.$refs.timelines.$el.getBoundingClientRect().height) {
+ bottom = this.$refs.timelines.$el.getBoundingClientRect().height;
+ }
+
+ this.$set(this.selectionPosition, 'left', left);
+ this.$set(this.selectionPosition, 'right', right);
+ this.$set(this.selectionPosition, 'top', top);
+ this.$set(this.selectionPosition, 'bottom', bottom);
+ },
+ reset: (e) => {
+ this.$set(this.selectionPosition, 'left', 0);
+ this.$set(this.selectionPosition, 'right', 0);
+ this.$set(this.selectionPosition, 'top', 0);
+ this.$set(this.selectionPosition, 'bottom', 0);
+ },
+ };
+ },
+
+ /**
+ * Handles the mousedown event indicating the start of a selection.
+ * Adds listeners to handles mousemove and mouseup event to detect the
+ * selection and update the selection box's coordinates.
+ * @param {event} e
+ */
+ mousedownHandler(e) {
+ const selectionPositionsUpdater = this.selectionPositionsUpdater();
+ selectionPositionsUpdater.init(e);
+
+ let dragged = false;
+
+ const mousemoveHandler = (e) => {
+ if (!dragged) {
+ dragged = true;
+ this.addOverlay();
+ }
+
+ selectionPositionsUpdater.update(e);
+ };
+ document.addEventListener('mousemove', mousemoveHandler);
+
+ const mouseupHandler = (e) => {
+ document.removeEventListener('mousemove', mousemoveHandler);
+ document.removeEventListener('mouseup', mouseupHandler);
+
+ if (dragged) {
+ this.removeOverlay();
+ selectionPositionsUpdater.update(e);
+ this.zoomToSelection();
+ }
+ selectionPositionsUpdater.reset();
+ };
+ document.addEventListener('mouseup', mouseupHandler);
+ },
+
+ /**
+ * Update the crop values to zoom into the timeline based on the currently
+ * set selection box coordinates.
+ */
+ zoomToSelection() {
+ const left = this.crop?.left ?? 0;
+ const right = this.crop?.right ?? 1;
+
+ const ratio =
+ (this.selectionPosition.right - this.selectionPosition.left) /
+ this.$refs.timelines.$el.getBoundingClientRect().width;
+
+ const newCropWidth = ratio * (right - left);
+ const newLeft = left + (this.selectionPosition.left /
+ this.$refs.timelines.$el.getBoundingClientRect().width) *
+ (right - left);
+
+ if (this.crop) {
+ this.$set(this.crop, 'left', newLeft);
+ this.$set(this.crop, 'right', newLeft + newCropWidth);
+ } else {
+ this.$emit('crop', {
+ left: newLeft,
+ right: newLeft + newCropWidth,
+ });
+ }
+ },
+
+ toggleTimeline(file) {
+ this.$set(file, 'timelineDisabled', !file.timelineDisabled);
+ },
+ },
+ components: {
+ Timeline,
+ },
+};
+</script>
+<style scoped>
+.timelines-container {
+ display: flex;
+}
+
+.timelines-container .timelines-wrapper {
+ flex-grow: 1;
+ cursor: crosshair;
+ position: relative;
+}
+
+.timelines-wrapper {
+ overflow: hidden;
+}
+
+.selection, .selection-intent {
+ position: absolute;
+ z-index: 100;
+ background: rgba(255, 36, 36, 0.5);
+ pointer-events: none;
+}
+
+.selection-intent {
+ top: 0;
+ height: 100%;
+ margin-left: -3px;
+ border-left: 3px #1261A0 solid;
+ border-right: 3px #1261A0 solid;
+}
+
+.timeline-icons {
+ display: flex;
+ flex-direction: column;
+ justify-content: space-evenly;
+ margin-left: 15px;
+}
+
+.trace-icon.disabled {
+ color: gray;
+}
+</style>
diff --git a/tools/winscope/src/TraceView.vue b/tools/winscope/src/TraceView.vue
index 0cdd581b2..0c38783ac 100644
--- a/tools/winscope/src/TraceView.vue
+++ b/tools/winscope/src/TraceView.vue
@@ -14,128 +14,223 @@
-->
<template>
<md-card-content class="container">
- <md-card class="rects" v-if="hasScreenView">
- <md-whiteframe md-tag="md-toolbar" md-elevation="0" class="card-toolbar md-transparent md-dense">
- <h2 class="md-title">Screen</h2>
- </md-whiteframe>
- <md-whiteframe md-elevation="8">
- <rects :bounds="bounds" :rects="rects" :highlight="highlight" @rect-click="onRectClick" />
- </md-whiteframe>
- </md-card>
- <md-card class="hierarchy">
- <md-whiteframe md-tag="md-toolbar" md-elevation="0" class="card-toolbar md-transparent md-dense">
- <h2 class="md-title" style="flex: 1;">Hierarchy</h2>
- <md-checkbox v-model="store.onlyVisible">Only visible</md-checkbox>
- <md-checkbox v-model="store.flattened">Flat</md-checkbox>
- <input id="filter" type="search" placeholder="Filter..." v-model="hierarchyPropertyFilterString" />
- </md-whiteframe>
- <tree-view class="data-card" :item="tree" @item-selected="itemSelected" :selected="hierarchySelected" :filter="hierarchyFilter" :flattened="store.flattened" ref="hierarchy" />
- </md-card>
- <md-card class="properties">
- <md-whiteframe md-tag="md-toolbar" md-elevation="0" class="card-toolbar md-transparent md-dense">
- <h2 class="md-title" style="flex: 1">Properties</h2>
- <div class="filter">
- <input id="filter" type="search" placeholder="Filter..." v-model="propertyFilterString" />
+ <div class="rects" v-if="hasScreenView">
+ <rects
+ :bounds="bounds"
+ :rects="rects"
+ :highlight="highlight"
+ @rect-click="onRectClick"
+ />
+ </div>
+
+ <div class="hierarchy">
+ <flat-card>
+ <md-content
+ md-tag="md-toolbar"
+ md-elevation="0"
+ class="card-toolbar md-transparent md-dense"
+ >
+ <h2 class="md-title" style="flex: 1;">Hierarchy</h2>
+ <md-checkbox
+ v-model="showHierachyDiff"
+ v-if="diffVisualizationAvailable"
+ >
+ Show Diff
+ </md-checkbox>
+ <md-checkbox v-model="store.simplifyNames">
+ Simplify names
+ </md-checkbox>
+ <md-checkbox v-model="store.onlyVisible">Only visible</md-checkbox>
+ <md-checkbox v-model="store.flattened">Flat</md-checkbox>
+ <md-field md-inline class="filter">
+ <label>Filter...</label>
+ <md-input v-model="hierarchyPropertyFilterString"></md-input>
+ </md-field>
+ </md-content>
+ <div class="tree-view-wrapper">
+ <tree-view
+ class="treeview"
+ :item="tree"
+ @item-selected="itemSelected"
+ :selected="hierarchySelected"
+ :filter="hierarchyFilter"
+ :flattened="store.flattened"
+ :items-clickable="true"
+ :useGlobalCollapsedState="true"
+ :simplify-names="store.simplifyNames"
+ ref="hierarchy"
+ />
+ </div>
+ </flat-card>
+ </div>
+
+ <div class="properties">
+ <flat-card>
+ <md-content
+ md-tag="md-toolbar"
+ md-elevation="0"
+ class="card-toolbar md-transparent md-dense"
+ >
+ <h2 class="md-title" style="flex: 1">Properties</h2>
+ <md-checkbox
+ v-model="showPropertiesDiff"
+ v-if="diffVisualizationAvailable"
+ >
+ Show Diff
+ </md-checkbox>
+ <md-field md-inline class="filter">
+ <label>Filter...</label>
+ <md-input v-model="propertyFilterString"></md-input>
+ </md-field>
+ </md-content>
+ <div class="properties-content">
+ <div v-if="elementSummary" class="element-summary">
+ <div v-for="elem in elementSummary" v-bind:key="elem.key">
+ <!-- eslint-disable-next-line max-len -->
+ <span class="key">{{ elem.key }}:</span> <span class="value">{{ elem.value }}</span>
+ </div>
+ </div>
+ <div v-if="selectedTree" class="tree-view-wrapper">
+ <tree-view
+ class="treeview"
+ :item="selectedTree"
+ :filter="propertyFilter"
+ :collapseChildren="true"
+ :useGlobalCollapsedState="true"
+ :elementView="PropertiesTreeElement"
+ />
+ </div>
+ <div class="no-properties" v-else>
+ <i class="material-icons none-icon">
+ filter_none
+ </i>
+ <span>No element selected in the hierachy.</span>
+ </div>
</div>
- </md-whiteframe>
- <tree-view class="pre-line-data-card" :item="selectedTree" :filter="propertyFilter" />
- </md-card>
+ </flat-card>
+ </div>
+
</md-card-content>
</template>
<script>
-import TreeView from './TreeView.vue'
-import Timeline from './Timeline.vue'
-import Rects from './Rects.vue'
-
-import { transform_json } from './transform.js'
-import { format_transform_type, is_simple_transform } from './matrix_utils.js'
-import { DATA_TYPES } from './decode.js'
-
-function formatColorTransform(vals) {
- const fixedVals = vals.map(v => v.toFixed(1));
- var formatted = ``;
- for (var i = 0; i < fixedVals.length; i += 4) {
- formatted += `[`;
- formatted += fixedVals.slice(i, i + 4).join(", ");
- formatted += `] `;
- }
- return formatted;
-}
+import TreeView from './TreeView.vue';
+import Rects from './Rects.vue';
+import FlatCard from './components/FlatCard.vue';
+import PropertiesTreeElement from './PropertiesTreeElement.vue';
+import {ObjectTransformer} from './transform.js';
+import {DiffGenerator, defaultModifiedCheck} from './utils/diff.js';
+import {TRACE_TYPES, DUMP_TYPES} from './decode.js';
+import {stableIdCompatibilityFixup} from './utils/utils.js';
+import {CompatibleFeatures} from './utils/compatibility.js';
function formatProto(obj) {
- if (!obj || !obj.$type) {
- return;
+ if (obj?.prettyPrint) {
+ return obj.prettyPrint();
}
- if (obj.$type.name === 'RectProto') {
- return `(${obj.left}, ${obj.top}) - (${obj.right}, ${obj.bottom})`;
- } else if (obj.$type.name === 'FloatRectProto') {
- return `(${obj.left.toFixed(3)}, ${obj.top.toFixed(3)}) - (${obj.right.toFixed(3)}, ${obj.bottom.toFixed(3)})`;
- } else if (obj.$type.name === 'PositionProto') {
- return `(${obj.x.toFixed(3)}, ${obj.y.toFixed(3)})`;
- } else if (obj.$type.name === 'SizeProto') {
- return `${obj.w} x ${obj.h}`;
- } else if (obj.$type.name === 'ColorProto') {
- return `r:${obj.r} g:${obj.g} \n b:${obj.b} a:${obj.a}`;
- } else if (obj.$type.name === 'TransformProto') {
- var transform_type = format_transform_type(obj);
- if (is_simple_transform(obj)) {
- return `${transform_type}`;
+}
+
+function findEntryInTree(tree, id) {
+ if (tree.stableId === id) {
+ return tree;
+ }
+
+ if (!tree.children) {
+ return null;
+ }
+
+ for (const child of tree.children) {
+ const foundEntry = findEntryInTree(child, id);
+ if (foundEntry) {
+ return foundEntry;
}
- return `${transform_type} dsdx:${obj.dsdx.toFixed(3)} dtdx:${obj.dtdx.toFixed(3)} dsdy:${obj.dsdy.toFixed(3)} dtdy:${obj.dtdy.toFixed(3)}`;
- } else if (obj.$type.name === 'ColorTransformProto') {
- var formated = formatColorTransform(obj.val);
- return `${formated}`;
}
+
+ return null;
}
export default {
name: 'traceview',
+ props: ['store', 'file', 'summarizer'],
data() {
return {
- propertyFilterString: "",
- hierarchyPropertyFilterString:"",
- selectedTree: {},
+ propertyFilterString: '',
+ hierarchyPropertyFilterString: '',
+ selectedTree: null,
hierarchySelected: null,
lastSelectedStableId: null,
bounds: {},
rects: [],
+ item: null,
tree: null,
highlight: null,
- }
+ showHierachyDiff: false,
+ showPropertiesDiff: false,
+ PropertiesTreeElement,
+ };
},
methods: {
itemSelected(item) {
this.hierarchySelected = item;
- this.selectedTree = transform_json(item.obj, item.name, {
- skip: item.skip,
- formatter: formatProto
- });
- this.highlight = item.highlight;
+ this.selectedTree = this.getTransformedProperties(item);
+ this.highlight = item.rect;
this.lastSelectedStableId = item.stableId;
this.$emit('focus');
},
+ getTransformedProperties(item) {
+ const transformer = new ObjectTransformer(
+ item.obj,
+ item.name,
+ stableIdCompatibilityFixup(item),
+ ).setOptions({
+ skip: item.skip,
+ formatter: formatProto,
+ });
+
+ if (this.showPropertiesDiff && this.diffVisualizationAvailable) {
+ const prevItem = this.getItemFromPrevTree(item);
+ transformer.withDiff(prevItem?.obj);
+ }
+
+ return transformer.transform();
+ },
onRectClick(item) {
if (item) {
this.itemSelected(item);
}
},
+ generateTreeFromItem(item) {
+ if (!this.showHierachyDiff || !this.diffVisualizationAvailable) {
+ return item;
+ }
+
+ return new DiffGenerator(this.item)
+ .compareWith(this.getDataWithOffset(-1))
+ .withUniqueNodeId((node) => {
+ return node.stableId;
+ })
+ .withModifiedCheck(defaultModifiedCheck)
+ .generateDiffTree();
+ },
setData(item) {
- this.tree = item;
- this.rects = [...item.rects].reverse();
+ this.item = item;
+ this.tree = this.generateTreeFromItem(item);
+
+ const rects = item.rects //.toArray()
+ this.rects = [...rects].reverse();
this.bounds = item.bounds;
this.hierarchySelected = null;
- this.selectedTree = {};
+ this.selectedTree = null;
this.highlight = null;
- function find_item(item, stableId) {
+ function findItem(item, stableId) {
if (item.stableId === stableId) {
return item;
}
if (Array.isArray(item.children)) {
- for (var child of item.children) {
- var found = find_item(child, stableId);
+ for (const child of item.children) {
+ const found = findItem(child, stableId);
if (found) {
return found;
}
@@ -145,7 +240,7 @@ export default {
}
if (this.lastSelectedStableId) {
- var found = find_item(item, this.lastSelectedStableId);
+ const found = findItem(item, this.lastSelectedStableId);
if (found) {
this.itemSelected(found);
}
@@ -157,53 +252,119 @@ export default {
arrowDown() {
return this.$refs.hierarchy.selectNext();
},
+ getDataWithOffset(offset) {
+ const index = this.file.selectedIndex + offset;
+
+ if (index < 0 || index >= this.file.data.length) {
+ return null;
+ }
+
+ return this.file.data[index];
+ },
+ getItemFromPrevTree(entry) {
+ if (!this.showPropertiesDiff || !this.hierarchySelected) {
+ return null;
+ }
+
+ const id = entry.stableId;
+ if (!id) {
+ throw new Error('Entry has no stableId...');
+ }
+
+ const prevTree = this.getDataWithOffset(-1);
+ if (!prevTree) {
+ console.warn('No previous entry');
+ return null;
+ }
+
+ const prevEntry = findEntryInTree(prevTree, id);
+ if (!prevEntry) {
+ console.warn('Didn\'t exist in last entry');
+ // TODO: Maybe handle this in some way.
+ }
+
+ return prevEntry;
+ },
},
created() {
- this.setData(this.file.data[this.file.selectedIndex]);
+ this.setData(this.file.data[this.file.selectedIndex ?? 0]);
},
watch: {
selectedIndex() {
- this.setData(this.file.data[this.file.selectedIndex]);
- }
+ this.setData(this.file.data[this.file.selectedIndex ?? 0]);
+ },
+ showHierachyDiff() {
+ this.tree = this.generateTreeFromItem(this.item);
+ },
+ showPropertiesDiff() {
+ if (this.hierarchySelected) {
+ this.selectedTree =
+ this.getTransformedProperties(this.hierarchySelected);
+ }
+ },
},
- props: ['store', 'file'],
computed: {
+ diffVisualizationAvailable() {
+ return CompatibleFeatures.DiffVisualization && (
+ this.file.type == TRACE_TYPES.WINDOW_MANAGER ||
+ this.file.type == TRACE_TYPES.SURFACE_FLINGER
+ );
+ },
selectedIndex() {
return this.file.selectedIndex;
},
hierarchyFilter() {
- var hierarchyPropertyFilter = getFilter(this.hierarchyPropertyFilterString);
+ const hierarchyPropertyFilter =
+ getFilter(this.hierarchyPropertyFilterString);
return this.store.onlyVisible ? (c) => {
- return c.visible && hierarchyPropertyFilter(c);} : hierarchyPropertyFilter;
+ return c.visible && hierarchyPropertyFilter(c);
+ } : hierarchyPropertyFilter;
},
propertyFilter() {
return getFilter(this.propertyFilterString);
},
hasScreenView() {
- return this.file.type !== DATA_TYPES.TRANSACTION;
+ return this.file.type == TRACE_TYPES.WINDOW_MANAGER ||
+ this.file.type == TRACE_TYPES.SURFACE_FLINGER ||
+ this.file.type == DUMP_TYPES.WINDOW_MANAGER ||
+ this.file.type == DUMP_TYPES.SURFACE_FLINGER;
+ },
+ elementSummary() {
+ if (!this.hierarchySelected || !this.summarizer) {
+ return null;
+ }
+
+ const summary = this.summarizer(this.hierarchySelected);
+
+ if (summary?.length === 0) {
+ return null;
+ }
+
+ return summary;
},
},
components: {
'tree-view': TreeView,
'rects': Rects,
- }
-}
+ 'flat-card': FlatCard,
+ },
+};
function getFilter(filterString) {
- var filterStrings = filterString.split(",");
- var positive = [];
- var negative = [];
+ const filterStrings = filterString.split(',');
+ const positive = [];
+ const negative = [];
filterStrings.forEach((f) => {
- if (f.startsWith("!")) {
- var str = f.substring(1);
+ if (f.startsWith('!')) {
+ const str = f.substring(1);
negative.push((s) => s.indexOf(str) === -1);
} else {
- var str = f;
+ const str = f;
positive.push((s) => s.indexOf(str) !== -1);
}
});
- var filter = (item) => {
- var apply = (f) => f(String(item.name));
+ const filter = (item) => {
+ const apply = (f) => f(String(item.name));
return (positive.length === 0 || positive.some(apply)) &&
(negative.length === 0 || negative.every(apply));
};
@@ -211,7 +372,12 @@ function getFilter(filterString) {
}
</script>
-<style>
+<style scoped>
+.container {
+ display: flex;
+ flex-wrap: wrap;
+}
+
.rects {
flex: none;
margin: 8px;
@@ -222,6 +388,19 @@ function getFilter(filterString) {
flex: 1;
margin: 8px;
min-width: 400px;
+ min-height: 50rem;
+}
+
+.rects,
+.hierarchy,
+.properties {
+ padding: 5px;
+}
+
+.flat-card {
+ display: flex;
+ flex-direction: column;
+ height: 100%;
}
.hierarchy>.tree-view,
@@ -229,15 +408,60 @@ function getFilter(filterString) {
margin: 16px;
}
-.data-card {
+.treeview {
overflow: auto;
- max-height: 48em;
+ white-space: pre-line;
}
-.pre-line-data-card {
- overflow: auto;
- max-height: 48em;
- white-space: pre-line;
+.no-properties {
+ display: flex;
+ flex: 1;
+ flex-direction: column;
+ align-self: center;
+ align-items: center;
+ justify-content: center;
+ padding: 50px 25px;
+}
+
+.no-properties .none-icon {
+ font-size: 35px;
+ margin-bottom: 10px;
+}
+
+.no-properties span {
+ font-weight: 100;
+}
+
+.filter {
+ width: auto;
+}
+
+.element-summary {
+ padding: 1rem;
+ border-bottom: thin solid rgba(0,0,0,.12);
}
+.element-summary .key {
+ font-weight: 500;
+}
+
+.element-summary .value {
+ color: rgba(0, 0, 0, 0.75);
+}
+
+.properties-content {
+ display: flex;
+ flex-direction: column;
+ flex: 1;
+}
+
+.tree-view-wrapper {
+ display: flex;
+ flex-direction: column;
+ flex: 1;
+}
+
+.treeview {
+ flex: 1 0 0;
+}
</style>
diff --git a/tools/winscope/src/TransactionEntry.vue b/tools/winscope/src/TransactionEntry.vue
new file mode 100644
index 000000000..24a80e098
--- /dev/null
+++ b/tools/winscope/src/TransactionEntry.vue
@@ -0,0 +1,271 @@
+<template>
+ <div>
+
+ <div v-if="source.type === 'vsyncEvent'" class="vsync">
+ <div class="vsync-dot" />
+ <md-tooltip md-direction="left">
+ VSync
+ </md-tooltip>
+ </div>
+
+ <div v-else
+ class="entry"
+ :class="{
+ inactive: source.timestamp > currentTimestamp,
+ selected: isSelected
+ }"
+ @click="onClick(source)"
+ >
+ <div class="time-column">
+ <a @click="e => setTimelineTime(e, source.timestamp)" class="time-link">
+ {{source.time}}
+ </a>
+ <div
+ class="new-badge"
+ :style="{visibility: source.new ? 'visible' : 'hidden'} "
+ >
+ New
+ </div>
+ </div>
+ <div class="type-column">{{transactionTypeOf(source)}}</div>
+ <div class="affected-surfaces-column">
+ <span
+ v-for="(surface, index) in sufacesAffectedBy(source)"
+ v-bind:key="surface.id"
+ >
+ <!-- eslint-disable-next-line max-len -->
+ <span v-if="surface.name" class="surface-name">{{ surface.name }}</span>
+ <span class="surface-id">
+ <!-- eslint-disable-next-line max-len -->
+ <span v-if="surface.name">(</span>{{surface.id}}<span v-if="surface.name">)</span>
+ </span>
+ <!-- eslint-disable-next-line max-len -->
+ <span v-if="index + 1 < sufacesAffectedBy(source).length">,&nbsp;</span>
+ </span>
+ </div>
+ <div class="extra-info-column">
+ <span v-if="source.identifier">
+ <!-- eslint-disable-next-line max-len -->
+ Tx Id: <span class="light">{{ prettifyTransactionId(source.identifier) }}</span><br/>
+ </span>
+ <span v-if="source.origin">
+ PID: <span class="light">{{ source.origin.pid }}</span><br/>
+ UID: <span class="light">{{ source.origin.uid }}</span><br/>
+ </span>
+ </div>
+ </div>
+
+ </div>
+</template>
+
+<script>
+export default {
+ name: 'transaction-entry',
+ props: {
+ index: {
+ type: Number,
+ },
+ source: {
+ type: Object,
+ default() {
+ return {};
+ },
+ },
+ onClick: {
+ type: Function,
+ },
+ selectedTransaction: {
+ type: Object,
+ },
+ transactionsTrace: {
+ type: Object,
+ },
+ prettifyTransactionId: {
+ type: Function,
+ },
+ },
+ computed: {
+ currentTimestamp() {
+ return this.$store.state.currentTimestamp;
+ },
+ isSelected() {
+ return this.source === this.selectedTransaction;
+ },
+ hasOverrideChangeDueToMerge() {
+ const transaction = this.source;
+
+ if (!transaction.identifier) {
+ return;
+ }
+
+ // console.log('transaction', transaction.identifier);
+
+ // const history = this.transactionsTrace.transactionHistory;
+
+ // const allTransactionsMergedInto = history
+ // .allTransactionsMergedInto(transaction.identifier);
+ // console.log('All merges', allTransactionsMergedInto);
+
+ // console.log('Direct merges',
+ // history.allDirectMergesInto(transaction.identifier));
+
+
+ return true;
+ },
+ },
+ methods: {
+ setTimelineTime(e, timestamp) {
+ e.preventDefault();
+ e.stopPropagation();
+ this.$store.dispatch('updateTimelineTime', timestamp);
+ },
+ transactionTypeOf(transaction) {
+ if (transaction.type !== 'transaction') {
+ return transaction.type;
+ }
+
+ if (transaction.transactions.length === 0) {
+ return 'Empty Transaction';
+ }
+
+ const types = new Set();
+ transaction.transactions.forEach((t) => types.add(t.type));
+
+ return Array.from(types).join(', ');
+ },
+ sufacesAffectedBy(transaction) {
+ if (transaction.type !== 'transaction') {
+ // TODO (b/162402459): Shorten layer name
+ return [{name: transaction.layerName, id: transaction.obj.id}];
+ }
+
+ const surfaceIds = new Set();
+ const affectedSurfaces = [];
+ for (const transaction of transaction.transactions) {
+ const id = transaction.obj.id;
+ if (!surfaceIds.has(id)) {
+ surfaceIds.add(id);
+ affectedSurfaces.push({name: transaction.layerName, id});
+ }
+ }
+
+ return affectedSurfaces;
+ },
+ },
+};
+</script>
+<style scoped>
+.time-column {
+ display: inline-flex;
+ width: 13em;
+}
+
+.time-column .time-link {
+ width: 9em;
+}
+
+.type-column {
+ width: 12em;
+}
+
+.origin-column {
+ width: 9em;
+}
+
+.affected-surfaces-column {
+ word-wrap: break-word;
+ width: 30em;
+}
+
+.extra-info-column {
+ width: 20em;
+}
+
+.entry {
+ display: inline-flex;
+ cursor: pointer;
+}
+
+.entry > div {
+ padding: 6px 10px;
+ border-bottom: 1px solid #f1f1f1;
+}
+
+.entry.selected {
+ background-color: #365179;
+ color: white;
+}
+
+.entry.selected a {
+ color: white;
+}
+
+.entry:not(.selected):hover {
+ background: #f1f1f1;
+}
+
+a {
+ cursor: pointer;
+}
+
+.inactive {
+ color: gray;
+}
+
+.inactive a {
+ color: gray;
+}
+
+.new-badge {
+ display: inline-block;
+ background: rgb(84, 139, 247);
+ border-radius: 3px;
+ color: white;
+ padding: 0 5px;
+ margin-left: 5px;
+ font-size: 10px;
+}
+
+.affected-surfaces-column .surface-id {
+ color: #999999
+}
+
+.inactive .affected-surfaces-column .surface-id {
+ color: #b4b4b4
+}
+
+.light {
+ color: #999999
+}
+
+.inactive .light {
+ color: #b4b4b4
+}
+
+.vsync {
+ position: relative;
+}
+
+.vsync-dot:before {
+ content: "";
+ position: absolute;
+ left: 0;
+ top: -5px;
+ height: 10px;
+ width: 10px;
+ background-color: rgb(170, 65, 255);
+ border-radius: 50%;
+ display: inline-block;
+}
+
+.vsync-dot:after {
+ content: "";
+ position: absolute;
+ left: 0;
+ top: 0;
+ height: 1px;
+ width: 100%;
+ background-color: rgb(170, 65, 255);
+ display: inline-block;
+}
+</style>
diff --git a/tools/winscope/src/TransactionsView.vue b/tools/winscope/src/TransactionsView.vue
new file mode 100644
index 000000000..84ea3db20
--- /dev/null
+++ b/tools/winscope/src/TransactionsView.vue
@@ -0,0 +1,523 @@
+<!-- Copyright (C) 2020 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<template>
+ <md-card-content class="container">
+
+ <flat-card class="changes card">
+ <div class="filters">
+ <div class="input">
+ <md-field>
+ <label>Transaction Type</label>
+ <md-select v-model="selectedTransactionTypes" multiple>
+ <md-option
+ v-for="type in transactionTypes"
+ :value="type"
+ v-bind:key="type">
+ {{ type }}
+ </md-option>
+ </md-select>
+ </md-field>
+ </div>
+
+ <div class="input">
+ <div>
+ <md-autocomplete
+ v-model="selectedProperty"
+ :md-options="properties"
+ >
+ <label>Changed property</label>
+ </md-autocomplete>
+ <!-- TODO(b/159582192): Add way to select value a property has
+ changed to, figure out how to handle properties that are
+ objects... -->
+ </div>
+ </div>
+
+ <div class="input">
+ <md-field>
+ <label>Origin PID</label>
+ <md-select v-model="selectedPids" multiple>
+ <md-option v-for="pid in pids" :value="pid" v-bind:key="pid">
+ {{ pid }}
+ </md-option>
+ </md-select>
+ </md-field>
+ </div>
+
+ <div class="input">
+ <md-field>
+ <label>Origin UID</label>
+ <md-select v-model="selectedUids" multiple>
+ <md-option v-for="uid in uids" :value="uid" v-bind:key="uid">
+ {{ uid }}
+ </md-option>
+ </md-select>
+ </md-field>
+ </div>
+
+ <div class="input">
+ <md-chips
+ v-model="filters"
+ md-placeholder="Add surface id or name..."
+ >
+ <div class="md-helper-text">Press enter to add</div>
+ </md-chips>
+ </div>
+ </div>
+
+ <virtual-list style="height: 600px; overflow-y: auto;"
+ :data-key="'timestamp'"
+ :data-sources="filteredData"
+ :data-component="transactionEntryComponent"
+ :extra-props="{
+ onClick: transactionSelected,
+ selectedTransaction,
+ transactionsTrace,
+ prettifyTransactionId,
+ }"
+ ref="loglist"
+ />
+ </flat-card>
+
+ <flat-card class="changes card">
+ <md-content
+ md-tag="md-toolbar"
+ md-elevation="0"
+ class="card-toolbar md-transparent md-dense"
+ >
+ <h2 class="md-title" style="flex: 1">Changes</h2>
+ </md-content>
+ <div class="changes-content" v-if="selectedTree">
+ <div
+ v-if="selectedTransaction.type === 'transaction'"
+ class="transaction-events"
+ >
+ <div
+ v-for="(event, i) in transactionHistory(selectedTransaction)"
+ v-bind:key="`${selectedTransaction.identifier}-${i}`"
+ class="transaction-event"
+ >
+ <div v-if="event.type === 'apply'" class="applied-event">
+ applied
+ </div>
+ <div v-if="event.type === 'merge'" class="merged-event">
+ <!-- eslint-disable-next-line max-len -->
+ {{ prettifyTransactionId(event.mergedId) }}
+ </div>
+ </div>
+ </div>
+ <tree-view
+ :item="selectedTree"
+ :collapseChildren="true"
+ :useGlobalCollapsedState="true"
+ />
+ </div>
+ <div class="no-properties" v-else>
+ <i class="material-icons none-icon">
+ filter_none
+ </i>
+ <span>No transaction selected.</span>
+ </div>
+ </flat-card>
+
+ </md-card-content>
+</template>
+<script>
+import TreeView from './TreeView.vue';
+import VirtualList from '../libs/virtualList/VirtualList';
+import TransactionEntry from './TransactionEntry.vue';
+import FlatCard from './components/FlatCard.vue';
+
+import {ObjectTransformer} from './transform.js';
+import {expandTransactionId} from '@/traces/Transactions.ts';
+
+export default {
+ name: 'transactionsview',
+ props: ['trace'],
+ data() {
+ const transactionTypes = new Set();
+ const properties = new Set();
+ const pids = new Set();
+ const uids = new Set();
+ const transactionsTrace = this.trace;
+ for (const entry of transactionsTrace.data) {
+ if (entry.type == 'transaction') {
+ for (const transaction of entry.transactions) {
+ transactionTypes.add(transaction.type);
+ Object.keys(transaction.obj).forEach((item) => properties.add(item));
+ }
+ } else {
+ transactionTypes.add(entry.type);
+ Object.keys(entry.obj).forEach((item) => properties.add(item));
+ }
+
+ if (entry.origin) {
+ pids.add(entry.origin.pid);
+ uids.add(entry.origin.uid);
+ }
+ }
+
+ // Remove vsync from being transaction types that can be filtered
+ // We want to always show vsyncs
+ transactionTypes.delete('vsyncEvent');
+
+ return {
+ transactionTypes: Array.from(transactionTypes),
+ properties: Array.from(properties),
+ pids: Array.from(pids),
+ uids: Array.from(uids),
+ selectedTransactionTypes: [],
+ selectedPids: [],
+ selectedUids: [],
+ searchInput: '',
+ selectedTree: null,
+ filters: [],
+ selectedProperty: null,
+ selectedTransaction: null,
+ transactionEntryComponent: TransactionEntry,
+ transactionsTrace,
+ expandTransactionId,
+ };
+ },
+ computed: {
+ data() {
+ return this.transactionsTrace.data;
+ },
+ filteredData() {
+ let filteredData = this.data;
+
+ if (this.selectedTransactionTypes.length > 0) {
+ filteredData = filteredData.filter(
+ this.filterTransactions((transaction) =>
+ transaction.type === 'vsyncEvent' ||
+ this.selectedTransactionTypes.includes(transaction.type)));
+ }
+
+ if (this.selectedPids.length > 0) {
+ filteredData = filteredData.filter((entry) =>
+ this.selectedPids.includes(entry.origin?.pid));
+ }
+
+ if (this.selectedUids.length > 0) {
+ filteredData = filteredData.filter((entry) =>
+ this.selectedUids.includes(entry.origin?.uid));
+ }
+
+ if (this.filters.length > 0) {
+ filteredData = filteredData.filter(
+ this.filterTransactions((transaction) => {
+ for (const filter of this.filters) {
+ if (isNaN(filter) && transaction.layerName?.includes(filter)) {
+ // If filter isn't a number then check if the transaction's
+ // target surface's name matches the filter — if so keep it.
+ return true;
+ }
+ if (filter == transaction.obj.id) {
+ // If filteter is a number then check if the filter matches
+ // the transaction's target surface id — if so keep it.
+ return true;
+ }
+ }
+
+ // Exclude transaction if it fails to match filter.
+ return false;
+ }),
+ );
+ }
+
+ if (this.selectedProperty) {
+ filteredData = filteredData.filter(
+ this.filterTransactions((transaction) => {
+ for (const key in transaction.obj) {
+ if (this.isMeaningfulChange(transaction.obj, key) &&
+ key === this.selectedProperty) {
+ return true;
+ }
+ }
+
+ return false;
+ }),
+ );
+ }
+
+ // We quish vsyncs because otherwise the lazy list will not load enough
+ // elements if there are many vsyncs in a row since vsyncs take up no
+ // space.
+ return this.squishVSyncs(filteredData);
+ },
+
+ },
+ methods: {
+ removeNullFields(changeObject) {
+ for (const key in changeObject) {
+ if (changeObject[key] === null) {
+ delete changeObject[key];
+ }
+ }
+
+ return changeObject;
+ },
+ transactionSelected(transaction) {
+ this.selectedTransaction = transaction;
+
+ const META_DATA_KEY = 'metadata';
+
+ let obj;
+ let name;
+ if (transaction.type == 'transaction') {
+ name = 'changes';
+ obj = {};
+
+ const [surfaceChanges, displayChanges] =
+ this.aggregateTransactions(transaction.transactions);
+
+ // Prepare the surface and display changes to be passed through
+ // the ObjectTransformer — in particular, remove redundant properties
+ // and add metadata that can be accessed post transformation
+ const perpareForTreeViewTransform = (change) => {
+ this.removeNullFields(change);
+ change[META_DATA_KEY] = {
+ // TODO (b/162402459): Shorten layer name
+ layerName: change.layerName,
+ };
+ // remove redundant properties
+ delete change.layerName;
+ delete change.id;
+ };
+
+ for (const changeId in surfaceChanges) {
+ if (surfaceChanges.hasOwnProperty(changeId)) {
+ perpareForTreeViewTransform(surfaceChanges[changeId]);
+ }
+ }
+ for (const changeId in displayChanges) {
+ if (displayChanges.hasOwnProperty(changeId)) {
+ perpareForTreeViewTransform(displayChanges[changeId]);
+ }
+ }
+
+ if (Object.keys(surfaceChanges).length > 0) {
+ obj.surfaceChanges = surfaceChanges;
+ }
+
+ if (Object.keys(displayChanges).length > 0) {
+ obj.displayChanges = displayChanges;
+ }
+ } else {
+ obj = this.removeNullFields(transaction.obj);
+ name = transaction.type;
+ }
+
+ // Transform the raw JS object to be TreeView compatible
+ const transactionUniqueId = transaction.timestamp;
+ let tree = new ObjectTransformer(
+ obj,
+ name,
+ transactionUniqueId,
+ ).setOptions({
+ formatter: () => {},
+ }).transform({
+ keepOriginal: true,
+ metadataKey: META_DATA_KEY,
+ freeze: false,
+ });
+
+ // Add the layer name as the kind of the object to be shown in the
+ // TreeView
+ const addLayerNameAsKind = (tree) => {
+ for (const layerChanges of tree.children) {
+ layerChanges.kind = layerChanges.metadata.layerName;
+ }
+ };
+
+ if (transaction.type == 'transaction') {
+ for (const child of tree.children) {
+ // child = surfaceChanges or displayChanges tree node
+ addLayerNameAsKind(child);
+ }
+ }
+
+ // If there are only surfaceChanges or only displayChanges and not both
+ // remove the extra top layer node which is meant to hold both types of
+ // changes when both are present
+ if (tree.name == 'changes' && tree.children.length === 1) {
+ tree = tree.children[0];
+ }
+
+ this.selectedTree = tree;
+ },
+ filterTransactions(condition) {
+ return (entry) => {
+ if (entry.type == 'transaction') {
+ for (const transaction of entry.transactions) {
+ if (condition(transaction)) {
+ return true;
+ }
+ }
+
+ return false;
+ } else {
+ return condition(entry);
+ }
+ };
+ },
+ isMeaningfulChange(object, key) {
+ // TODO (b/159799733): Handle cases of non null objects but meaningless
+ // change
+ return object[key] !== null && object.hasOwnProperty(key);
+ },
+ mergeChanges(a, b) {
+ const res = {};
+
+ for (const key in a) {
+ if (this.isMeaningfulChange(a, key)) {
+ res[key] = a[key];
+ }
+ }
+
+ for (const key in b) {
+ if (this.isMeaningfulChange(b, key)) {
+ if (res.hasOwnProperty(key) && key != 'id') {
+ throw new Error(`Merge failed – key '${key}' already present`);
+ }
+ res[key] = b[key];
+ }
+ }
+
+ return res;
+ },
+ aggregateTransactions(transactions) {
+ const surfaceChanges = {};
+ const displayChanges = {};
+
+ for (const transaction of transactions) {
+ const obj = transaction.obj;
+
+ // Create a new base object to merge all changes into
+ const newBaseObj = () => {
+ return {
+ layerName: transaction.layerName,
+ };
+ };
+
+ switch (transaction.type) {
+ case 'surfaceChange':
+ surfaceChanges[obj.id] =
+ this.mergeChanges(surfaceChanges[obj.id] ?? newBaseObj(), obj);
+ break;
+
+ case 'displayChange':
+ displayChanges[obj.id] =
+ this.mergeChanges(displayChanges[obj.id] ?? newBaseObj(), obj);
+ break;
+
+ default:
+ throw new Error(`Unhandled transaction type ${transaction.type}`);
+ }
+ }
+
+ return [surfaceChanges, displayChanges];
+ },
+
+ transactionHistory(selectedTransaction) {
+ const transactionId = selectedTransaction.identifier;
+ const history = this.transactionsTrace.transactionHistory
+ .generateHistoryTreesOf(transactionId);
+
+ return history;
+ },
+
+ prettifyTransactionId(transactionId) {
+ const expandedId = expandTransactionId(transactionId);
+ return `${expandedId.pid}.${expandedId.id}`;
+ },
+
+ squishVSyncs(data) {
+ return data.filter((event, i) => {
+ return !(event.type === 'vsyncEvent' &&
+ data[i + 1]?.type === 'vsyncEvent');
+ });
+ },
+ },
+ components: {
+ 'virtual-list': VirtualList,
+ 'tree-view': TreeView,
+ 'flat-card': FlatCard,
+ },
+};
+
+</script>
+<style scoped>
+.container {
+ display: flex;
+ flex-wrap: wrap;
+}
+
+.transaction-table,
+.changes {
+ flex: 1 1 0;
+ width: 0;
+ margin: 8px;
+}
+
+.scrollBody {
+ width: 100%;
+ height: 100%;
+ overflow: scroll;
+}
+
+.filters {
+ margin-bottom: 15px;
+ width: 100%;
+ padding: 15px 5px;
+ display: flex;
+ flex-wrap: wrap;
+}
+
+.filters .input {
+ max-width: 300px;
+ margin: 0 10px;
+ flex-grow: 1;
+}
+
+.changes-content {
+ padding: 18px;
+ height: 550px;
+ overflow: auto;
+}
+
+.no-properties {
+ display: flex;
+ flex-direction: column;
+ align-self: center;
+ align-items: center;
+ justify-content: center;
+ height: calc(100% - 50px);
+ padding: 50px 25px;
+}
+
+.no-properties .none-icon {
+ font-size: 35px;
+ margin-bottom: 10px;
+}
+
+.no-properties span {
+ font-weight: 100;
+}
+
+.transaction-event {
+ display: inline-flex;
+}
+</style>
diff --git a/tools/winscope/src/TreeView.vue b/tools/winscope/src/TreeView.vue
index 9445c522e..929240e27 100644
--- a/tools/winscope/src/TreeView.vue
+++ b/tools/winscope/src/TreeView.vue
@@ -13,79 +13,283 @@
limitations under the License.
-->
<template>
- <div class="tree-view">
- <div @click="clicked" :class="computedClass">
- <span class="kind">{{item.kind}}</span><span v-if="item.kind && item.name"> - </span><span>{{item.name}}</span>
- <div v-for="c in item.chips" :title="c.long" :class="chipClassForChip(c)">
- {{c.short}}
+ <div class="tree-view" v-if="item">
+ <div class="node"
+ :class="[{
+ leaf: isLeaf,
+ selected: isSelected,
+ 'child-selected': immediateChildSelected,
+ clickable: isClickable,
+ hover: nodeHover,
+ 'child-hover': childHover,
+ }, diffClass]"
+ :style="nodeOffsetStyle"
+ @click="clicked"
+ @contextmenu.prevent="openContextMenu"
+ ref="node"
+ >
+ <button
+ class="toggle-tree-btn"
+ @click="toggleTree"
+ v-if="!isLeaf"
+ v-on:click.stop
+ >
+ <i aria-hidden="true" class="md-icon md-theme-default material-icons">
+ {{isCollapsed ? "chevron_right" : "expand_more"}}
+ </i>
+ </button>
+ <div class="leaf-node-icon-wrapper" v-else>
+ <i class="leaf-node-icon"/>
+ </div>
+ <div class="description">
+ <div v-if="elementView">
+ <component
+ :is="elementView"
+ :item="item"
+ :simplify-names="simplifyNames"
+ />
+ </div>
+ <div v-else>
+ <DefaultTreeElement :item="item" :simplify-names="simplifyNames"/>
+ </div>
+ </div>
+ <div v-show="isCollapsed">
+ <button
+ class="expand-tree-btn"
+ :class="[{
+ 'child-selected': isCollapsed && childIsSelected
+ }, collapseDiffClass]"
+ v-if="children"
+ @click="expandTree"
+ v-on:click.stop
+ >
+ <i
+ aria-hidden="true"
+ class="md-icon md-theme-default material-icons"
+ >
+ more_horiz
+ </i>
+ </button>
</div>
</div>
- <div class="children" v-if="children">
- <tree-view v-for="(c,i) in children" :item="c" @item-selected="childItemSelected" :selected="selected" :key="i" :chip-class='chipClass' :filter="childFilter(c)" :flattened="flattened" :force-flattened="applyingFlattened" v-show="filterMatches(c)" ref='children' />
+
+ <node-context-menu
+ ref="nodeContextMenu"
+ v-on:collapseAllOtherNodes="collapseAllOtherNodes"
+ />
+
+ <div class="children" v-if="children" v-show="!isCollapsed">
+ <tree-view
+ v-for="(c,i) in children"
+ :item="c"
+ @item-selected="childItemSelected"
+ :selected="selected"
+ :key="i"
+ :filter="childFilter(c)"
+ :flattened="flattened"
+ :simplify-names="simplifyNames"
+ :force-flattened="applyingFlattened"
+ v-show="filterMatches(c)"
+ :items-clickable="itemsClickable"
+ :initial-depth="depth + 1"
+ :collapse="collapseChildren"
+ :collapseChildren="collapseChildren"
+ :useGlobalCollapsedState="useGlobalCollapsedState"
+ v-on:hoverStart="childHover = true"
+ v-on:hoverEnd="childHover = false"
+ v-on:selected="immediateChildSelected = true"
+ v-on:unselected="immediateChildSelected = false"
+ :elementView="elementView"
+ v-on:collapseSibbling="collapseSibbling"
+ v-on:collapseAllOtherNodes="collapseAllOtherNodes"
+ v-on:closeAllContextMenus="closeAllContextMenus"
+ ref="children"
+ />
</div>
</div>
</template>
+
<script>
-import jsonProtoDefs from 'frameworks/base/core/proto/android/server/windowmanagertrace.proto'
-import protobuf from 'protobufjs'
+import DefaultTreeElement from './DefaultTreeElement.vue';
+import NodeContextMenu from './NodeContextMenu.vue';
-var protoDefs = protobuf.Root.fromJSON(jsonProtoDefs);
+import {DiffType} from './utils/diff.js';
+
+/* in px, must be kept in sync with css, maybe find a better solution... */
+const levelOffset = 24;
export default {
name: 'tree-view',
- props: ['item', 'selected', 'chipClass', 'filter', 'flattened', 'force-flattened'],
+ props: [
+ 'item',
+ 'selected',
+ 'filter',
+ 'simplify-names',
+ 'flattened',
+ 'force-flattened',
+ 'items-clickable',
+ 'initial-depth',
+ 'collapse',
+ 'collapseChildren',
+ // Allows collapse state to be tracked by Vuex so that collapse state of
+ // items with same stableId can remain consisten accross time and easily
+ // toggled from anywhere in the app.
+ // Should be true if you are using the same TreeView to display multiple
+ // trees throughout the component's lifetime to make sure same nodes are
+ // toggled when switching back and forth between trees.
+ // If true, requires all nodes in tree to have a stableId.
+ 'useGlobalCollapsedState',
+ // Custom view to use to render the elements in the tree view
+ 'elementView',
+ ],
data() {
- return {};
+ const isCollapsedByDefault = this.collapse ?? false;
+
+ return {
+ isChildSelected: false,
+ immediateChildSelected: false,
+ clickTimeout: null,
+ isCollapsedByDefault,
+ localCollapsedState: isCollapsedByDefault,
+ collapseDiffClass: null,
+ nodeHover: false,
+ childHover: false,
+ diffSymbol: {
+ [DiffType.NONE]: '',
+ [DiffType.ADDED]: '+',
+ [DiffType.DELETED]: '-',
+ [DiffType.MODIFIED]: '.',
+ [DiffType.MOVED]: '.',
+ },
+ };
+ },
+ watch: {
+ stableId() {
+ // Update anything that is required to change when item changes.
+ this.updateCollapsedDiffClass();
+ },
+ hasDiff(hasDiff) {
+ if (!hasDiff) {
+ this.collapseDiffClass = null;
+ } else {
+ this.updateCollapsedDiffClass();
+ }
+ },
+ currentTimestamp() {
+ // Update anything that is required to change when time changes.
+ this.updateCollapsedDiffClass();
+ },
+ isSelected(isSelected) {
+ if (isSelected) {
+ this.$emit('selected');
+ } else {
+ this.$emit('unselected');
+ }
+ },
},
methods: {
- selectNext(found, parent) {
- if (found && this.filterMatches(this.item)) {
- this.clicked();
+ setCollapseValue(isCollapsed) {
+ if (this.useGlobalCollapsedState) {
+ this.$store.commit('setCollapsedState', {
+ item: this.item,
+ isCollapsed,
+ });
+ } else {
+ this.localCollapsedState = isCollapsed;
+ }
+ },
+ toggleTree() {
+ this.setCollapseValue(!this.isCollapsed);
+ },
+ expandTree() {
+ this.setCollapseValue(false);
+ },
+ selectNext(found, inCollapsedTree) {
+ // Check if this is the next visible item
+ if (found && this.filterMatches(this.item) && !inCollapsedTree) {
+ this.select();
return false;
}
- if (this.selected === this.item) {
+
+ // Set traversal state variables
+ if (this.isSelected) {
found = true;
}
+ if (this.isCollapsed) {
+ inCollapsedTree = true;
+ }
+
+ // Travers children trees recursively in reverse to find currently
+ // selected item and select the next visible one
if (this.$refs.children) {
- for (var c of this.$refs.children) {
- found = c.selectNext(found);
+ for (const c of this.$refs.children) {
+ found = c.selectNext(found, inCollapsedTree);
}
}
+
return found;
},
- selectPrev(found) {
+ selectPrev(found, inCollapsedTree) {
+ // Set inCollapseTree flag to make sure elements in collapsed trees are
+ // not selected.
+ const isRootCollapse = !inCollapsedTree && this.isCollapsed;
+ if (isRootCollapse) {
+ inCollapsedTree = true;
+ }
+
+ // Travers children trees recursively in reverse to find currently
+ // selected item and select the previous visible one
if (this.$refs.children) {
- for (var c of [...this.$refs.children].reverse()) {
- found = c.selectPrev(found);
+ for (const c of [...this.$refs.children].reverse()) {
+ found = c.selectPrev(found, inCollapsedTree);
}
}
- if (found && this.filterMatches(this.item)) {
- this.clicked();
+
+ // Unset inCollapseTree flag as we are no longer in a collapsed tree.
+ if (isRootCollapse) {
+ inCollapsedTree = false;
+ }
+
+ // Check if this is the previous visible item
+ if (found && this.filterMatches(this.item) && !inCollapsedTree) {
+ this.select();
return false;
}
- if (this.selected === this.item) {
+
+ // Set found flag so that the next visited visible item can be selected.
+ if (this.isSelected) {
found = true;
}
+
return found;
},
childItemSelected(item) {
+ this.isChildSelected = true;
this.$emit('item-selected', item);
},
- clicked() {
+ select() {
this.$emit('item-selected', this.item);
},
- chipClassForChip(c) {
- return ['tree-view-internal-chip', this.chipClassOrDefault,
- this.chipClassOrDefault + '-' + (c.class || 'default')
- ];
+ clicked(e) {
+ if (window.getSelection().type === 'range') {
+ // Ignore click if is selection
+ return;
+ }
+
+ if (!this.isLeaf && e.detail % 2 === 0) {
+ // Double click collaspable node
+ this.toggleTree();
+ } else {
+ this.select();
+ }
},
filterMatches(c) {
- // If a filter is set, consider the item matches if the current item or any of its
- // children matches.
+ // If a filter is set, consider the item matches if the current item or
+ // any of its children matches.
if (this.filter) {
- var thisMatches = this.filter(c);
+ const thisMatches = this.filter(c);
const childMatches = (child) => this.filterMatches(child);
- return thisMatches || (!this.applyingFlattened &&
+ return thisMatches || (!this.applyingFlattened &&
c.children && c.children.some(childMatches));
}
return true;
@@ -99,71 +303,357 @@ export default {
}
return this.filter;
},
+ isCurrentSelected() {
+ return this.selected === this.item;
+ },
+ updateCollapsedDiffClass() {
+ // NOTE: Could be memoized in $store map like collapsed state if
+ // performance ever becomes a problem.
+ if (this.item) {
+ this.collapseDiffClass = this.computeCollapseDiffClass();
+ }
+ },
+ getAllDiffTypesOfChildren(item) {
+ if (!item.children) {
+ return new Set();
+ }
+
+ const classes = new Set();
+ for (const child of item.children) {
+ if (child.diff) {
+ classes.add(child.diff.type);
+ }
+ for (const diffClass of this.getAllDiffTypesOfChildren(child)) {
+ classes.add(diffClass);
+ }
+ }
+
+ return classes;
+ },
+ computeCollapseDiffClass() {
+ if (!this.isCollapsed) {
+ return '';
+ }
+
+ const childrenDiffClasses = this.getAllDiffTypesOfChildren(this.item);
+
+ childrenDiffClasses.delete(DiffType.NONE);
+ childrenDiffClasses.delete(undefined);
+
+ if (childrenDiffClasses.size === 0) {
+ return '';
+ }
+ if (childrenDiffClasses.size === 1) {
+ const diff = childrenDiffClasses.values().next().value;
+ return diff;
+ }
+
+ return DiffType.MODIFIED;
+ },
+ collapseAllOtherNodes() {
+ this.$emit('collapseAllOtherNodes');
+ this.$emit('collapseSibbling', this.item);
+ },
+ collapseSibbling(item) {
+ if (!this.$refs.children) {
+ return;
+ }
+
+ for (const child of this.$refs.children) {
+ if (child.item === item) {
+ continue;
+ }
+
+ child.collapseAll();
+ }
+ },
+ collapseAll() {
+ this.setCollapseValue(true);
+
+ if (!this.$refs.children) {
+ return;
+ }
+
+ for (const child of this.$refs.children) {
+ child.collapseAll();
+ }
+ },
+ openContextMenu(e) {
+ this.closeAllContextMenus();
+ // vue-context takes in the event and uses clientX and clientY to
+ // determine the position of the context meny.
+ // This doesn't satisfy our use case so we specify our own positions for
+ // this.
+ this.$refs.nodeContextMenu.open({
+ clientX: e.x,
+ clientY: e.y,
+ });
+ },
+ closeAllContextMenus(requestOrigin) {
+ this.$refs.nodeContextMenu.close();
+ this.$emit('closeAllContextMenus', this.item);
+ this.closeAllChildrenContextMenus(requestOrigin);
+ },
+ closeAllChildrenContextMenus(requestOrigin) {
+ if (!this.$refs.children) {
+ return;
+ }
+
+ for (const child of this.$refs.children) {
+ if (child.item === requestOrigin) {
+ continue;
+ }
+
+ child.$refs.nodeContextMenu.close();
+ child.closeAllChildrenContextMenus();
+ }
+ },
},
computed: {
- computedClass() {
- return (this.item == this.selected) ? 'selected' : ''
+ hasDiff() {
+ return this.item?.diff !== undefined;
+ },
+ stableId() {
+ return this.item?.stableId;
+ },
+ currentTimestamp() {
+ return this.$store.state.currentTimestamp;
+ },
+ isCollapsed() {
+ if (!this.item.children || this.item.children?.length === 0) {
+ return false;
+ }
+
+ if (this.useGlobalCollapsedState) {
+ return this.$store.getters.collapsedStateStoreFor(this.item) ??
+ this.isCollapsedByDefault;
+ }
+
+ return this.localCollapsedState;
+ },
+ isSelected() {
+ return this.selected === this.item;
+ },
+ childIsSelected() {
+ if (this.$refs.children) {
+ for (const c of this.$refs.children) {
+ if (c.isSelected || c.childIsSelected) {
+ return true;
+ }
+ }
+ }
+
+ return false;
},
- chipClassOrDefault() {
- return this.chipClass || 'tree-view-chip';
+ diffClass() {
+ return this.item.diff ? this.item.diff.type : '';
},
applyingFlattened() {
- return this.flattened && this.item.flattened || this.forceFlattened;
+ return (this.flattened && this.item.flattened) || this.forceFlattened;
},
children() {
return this.applyingFlattened ? this.item.flattened : this.item.children;
},
- }
-}
+ isLeaf() {
+ return !this.children || this.children.length === 0;
+ },
+ isClickable() {
+ return !this.isLeaf || this.itemsClickable;
+ },
+ depth() {
+ return this.initialDepth || 0;
+ },
+ nodeOffsetStyle() {
+ const offest = levelOffset * (this.depth + this.isLeaf) + 'px';
+
+ return {
+ marginLeft: '-' + offest,
+ paddingLeft: offest,
+ };
+ },
+ },
+ mounted() {
+ // Prevent highlighting on multiclick of node element
+ this.nodeMouseDownEventListner = (e) => {
+ if (e.detail > 1) {
+ e.preventDefault();
+ return false;
+ }
+
+ return true;
+ };
+ this.$refs.node?.addEventListener('mousedown',
+ this.nodeMouseDownEventListner);
+
+ this.updateCollapsedDiffClass();
+ this.nodeMouseEnterEventListener = (e) => {
+ this.nodeHover = true;
+ this.$emit('hoverStart');
+ };
+ this.$refs.node?.addEventListener('mouseenter',
+ this.nodeMouseEnterEventListener);
+
+ this.nodeMouseLeaveEventListener = (e) => {
+ this.nodeHover = false;
+ this.$emit('hoverEnd');
+ };
+ this.$refs.node?.addEventListener('mouseleave',
+ this.nodeMouseLeaveEventListener);
+ },
+ beforeDestroy() {
+ this.$refs.node?.removeEventListener('mousedown',
+ this.nodeMouseDownEventListner);
+ this.$refs.node?.removeEventListener('mouseenter',
+ this.nodeMouseEnterEventListener);
+ this.$refs.node?.removeEventListener('mouseleave',
+ this.nodeMouseLeaveEventListener);
+ },
+ components: {
+ DefaultTreeElement,
+ NodeContextMenu,
+ },
+};
</script>
<style>
+.data-card > .tree-view {
+ border: none;
+}
+
+.tree-view {
+ display: block;
+}
+
+.tree-view .node {
+ display: flex;
+ padding: 2px;
+ align-items: flex-start;
+}
+
+.tree-view .node.clickable {
+ cursor: pointer;
+}
+
+.tree-view .node:hover:not(.selected) {
+ background: #f1f1f1;
+}
+
+.tree-view .node:not(.selected).added,
+.tree-view .node:not(.selected).addedMove,
+.tree-view .expand-tree-btn.added,
+.tree-view .expand-tree-btn.addedMove {
+ background: #03ff35;
+}
+
+.tree-view .node:not(.selected).deleted,
+.tree-view .node:not(.selected).deletedMove,
+.tree-view .expand-tree-btn.deleted,
+.tree-view .expand-tree-btn.deletedMove {
+ background: #ff6b6b;
+}
+
+.tree-view .node:not(.selected).modified,
+.tree-view .expand-tree-btn.modified {
+ background: cyan;
+}
+
+.tree-view .node.addedMove:after,
+.tree-view .node.deletedMove:after {
+ content: 'moved';
+ margin: 0 5px;
+ background: #448aff;
+ border-radius: 5px;
+ padding: 3px;
+ color: white;
+}
+
.children {
- margin-left: 24px;
+ /* Aligns border with collapse arrows */
+ margin-left: 12px;
+ padding-left: 11px;
+ border-left: 1px solid rgb(238, 238, 238);
+ margin-top: 0px;
+}
+
+.tree-view .node.child-selected + .children {
+ border-left: 1px solid #b4b4b4;
+}
+
+.tree-view .node.selected + .children {
+ border-left: 1px solid rgb(200, 200, 200);
+}
+
+.tree-view .node.child-hover + .children {
+ border-left: 1px solid #b4b4b4;
+}
+
+.tree-view .node.hover + .children {
+ border-left: 1px solid rgb(200, 200, 200);
}
.kind {
color: #333;
+ font-weight: bold;
}
.selected {
- background-color: #3f51b5;
+ background-color: #365179;
color: white;
}
+.childSelected {
+ border-left: 1px solid rgb(233, 22, 22)
+}
+
.selected .kind {
- color: #ccc;
+ color: #e9e9e9;
}
-.tree-view-internal-chip {
- display: inline-block;
+.toggle-tree-btn, .expand-tree-btn {
+ background: none;
+ color: inherit;
+ border: none;
+ padding: 0;
+ font: inherit;
+ cursor: pointer;
+ outline: inherit;
+}
+
+.expand-tree-btn {
+ margin-left: 5px;
}
-.tree-view-chip {
- padding: 0 10px;
- border-radius: 10px;
- background-color: #aaa;
- color: black;
+.expand-tree-btn.child-selected {
+ color: #3f51b5;
}
-.tree-view-chip.tree-view-chip-warn {
- background-color: #ffaa6b;
- color: black;
+.description {
+ display: flex;
+ flex: 1 1 auto;
}
-.tree-view-chip.tree-view-chip-error {
- background-color: #ff6b6b;
- color: black;
+.description > div {
+ display: flex;
+ flex: 1 1 auto;
}
-.tree-view-chip.tree-view-chip-gpu {
- background-color: #00c853;
- color: black;
+.leaf-node-icon-wrapper {
+ width: 24px;
+ height: 24px;
+ display: inline-flex;
+ align-content: center;
+ align-items: center;
+ justify-content: center;
}
-.tree-view-chip.tree-view-chip-hwc {
- background-color: #448aff;
- color: black;
+.leaf-node-icon {
+ content: "";
+ display: inline-block;
+ height: 5px;
+ width: 5px;
+ margin-top: -2px;
+ border-radius: 50%;
+ background-color: #9b9b9b;
}
</style>
diff --git a/tools/winscope/src/VideoView.vue b/tools/winscope/src/VideoView.vue
index 9b614936d..4180767e4 100644
--- a/tools/winscope/src/VideoView.vue
+++ b/tools/winscope/src/VideoView.vue
@@ -13,63 +13,73 @@
limitations under the License.
-->
<template>
- <md-card-content class="container">
- <md-card class="rects">
- <md-whiteframe md-tag="md-toolbar" md-elevation="0" class="card-toolbar md-transparent md-dense">
- <h2 class="md-title">Screen</h2>
- </md-whiteframe>
- <md-whiteframe md-elevation="8">
- <video :id="file.filename" class="screen" :src="file.data" />
- </md-whiteframe>
- </md-card>
- </md-card-content>
+ <video
+ class="md-elevation-2 screen"
+ :src="file.data"
+ :style="style"
+ ref="video"
+ />
</template>
<script>
-const EPSILON = 0.00001
+const EPSILON = 0.00001;
function uint8ToString(array) {
- var chunk = 0x8000;
- var out = [];
- for (var i = 0; i < array.length; i += chunk) {
+ const chunk = 0x8000;
+ const out = [];
+ for (let i = 0; i < array.length; i += chunk) {
out.push(String.fromCharCode.apply(null, array.subarray(i, i + chunk)));
}
- return out.join("");
+ return out.join('');
}
export default {
name: 'videoview',
+ props: ['file', 'height'],
data() {
- return {}
+ return {};
+ },
+ computed: {
+ selectedIndex() {
+ return this.file.selectedIndex;
+ },
+ style() {
+ if (typeof this.height == 'number') {
+ return `height: ${this.height}px`;
+ } else {
+ return `height: ${this.height}`;
+ }
+ },
},
methods: {
arrowUp() {
- return true
+ return true;
},
arrowDown() {
return true;
},
+ selectFrameAtTime(timestamp) {
+ const time = (timestamp - this.file.timeline[0]) / 1000000000 + EPSILON;
+ this.$refs.video.currentTime = time;
+ },
selectFrame(idx) {
- var time = (this.file.timeline[idx] - this.file.timeline[0]) / 1000000000 + EPSILON;
- document.getElementById(this.file.filename).currentTime = time;
+ this.selectFrameAtTime(this.file.timeline[idx]);
+ },
+ jumpToSelectedIndex() {
+ this.selectFrame(this.file.selectedIndex);
},
},
watch: {
selectedIndex() {
this.selectFrame(this.file.selectedIndex);
- }
- },
- props: ['file'],
- computed: {
- selectedIndex() {
- return this.file.selectedIndex;
},
},
-}
+ mounted() {
+ this.$el.addEventListener('canplay', (e) => {
+ this.$emit('loaded');
+ });
+ },
+};
</script>
<style>
-.screen {
- max-height: 50em;
-}
-
</style>
diff --git a/tools/winscope/src/WindowManagerTraceView.vue b/tools/winscope/src/WindowManagerTraceView.vue
new file mode 100644
index 000000000..1c9264cdf
--- /dev/null
+++ b/tools/winscope/src/WindowManagerTraceView.vue
@@ -0,0 +1,41 @@
+<!-- Copyright (C) 2020 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<template>
+ <TraceView :store="store" :file="file" :summarizer="summarizer" />
+</template>
+
+<script>
+import TraceView from "@/TraceView.vue"
+
+export default {
+ name: "WindowManagerTraceView",
+ props: ["store", "file"],
+ components: {
+ TraceView
+ },
+ methods: {
+ summarizer(item) {
+ const summary = [];
+
+ if (item.obj.isIncompleteReason) {
+ summary.push({key: 'Incomplete state reason', value: item.obj.isIncompleteReason});
+ }
+
+ return summary;
+ },
+ }
+}
+</script> \ No newline at end of file
diff --git a/tools/winscope/src/components/FlatCard.vue b/tools/winscope/src/components/FlatCard.vue
new file mode 100644
index 000000000..38c33561c
--- /dev/null
+++ b/tools/winscope/src/components/FlatCard.vue
@@ -0,0 +1,38 @@
+<template>
+ <div class="flat-card">
+ <slot />
+ </div>
+</template>
+<script>
+export default {
+ name: 'FlatCard',
+}
+</script>
+<style scoped>
+.flat-card {
+ word-break: normal;
+ tab-size: 4;
+ font-size: 14px;
+ text-rendering: optimizeLegibility;
+ -webkit-font-smoothing: antialiased;
+ -webkit-tap-highlight-color: rgba(0,0,0,0);
+ font-family: Roboto, sans-serif;
+ line-height: 1.5;
+ background-repeat: no-repeat;
+ box-sizing: inherit;
+ padding: 0;
+ margin: 0;
+ display: block;
+ max-width: 100%;
+ outline: none;
+ text-decoration: none;
+ transition-property: box-shadow,opacity;
+ overflow-wrap: break-word;
+ position: relative;
+ white-space: normal;
+ border: thin solid rgba(0,0,0,.12);
+ background-color: #fff;
+ color: rgba(0,0,0,.87);
+ border-radius: 4px;
+}
+</style> \ No newline at end of file
diff --git a/tools/winscope/src/components/IconSelection/IconSelectOption.vue b/tools/winscope/src/components/IconSelection/IconSelectOption.vue
new file mode 100644
index 000000000..8c428b81d
--- /dev/null
+++ b/tools/winscope/src/components/IconSelection/IconSelectOption.vue
@@ -0,0 +1,164 @@
+<!-- Copyright (C) 2020 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<template>
+ <md-menu-item
+ :class="optionClasses"
+ :disabled="isDisabled" @click="setSelection"
+ >
+ <md-checkbox
+ class="md-primary"
+ v-model="isChecked"
+ v-if="MdSelect.multiple"
+ :disabled="isDisabled"
+ />
+
+ <div class="item">
+ <i class="material-icons" v-if="icon">
+ {{ icon }}
+ </i>
+ <span class="value">
+ {{ displayValue || value }}
+ </span>
+ <span class="material-icons help-icon">
+ help_outline
+ <md-tooltip md-direction="right">{{ desc }}</md-tooltip>
+ </span>
+ </div>
+ </md-menu-item>
+</template>
+
+<script>
+export default {
+ name: 'MdIconOption',
+ props: {
+ // Serves as key for option (should be unique within an MdSelect)
+ // Also serves as the backup to displayValue if null
+ value: [String, Number, Boolean],
+ // Value shown to describe an option in dropdown selection
+ displayValue: [String, Number, Boolean],
+ // If present, this is shown to represent item when dropdown is collapsed
+ shortValue: [String, Number, Boolean],
+ icon: String,
+ desc: String,
+ disabled: Boolean,
+ },
+ inject: {
+ MdSelect: {},
+ MdOptgroup: {
+ default: {},
+ },
+ },
+ data: () => ({
+ isSelected: false,
+ isChecked: false,
+ }),
+ computed: {
+ selectValue() {
+ return this.MdSelect.modelValue;
+ },
+ isMultiple() {
+ return this.MdSelect.multiple;
+ },
+ isDisabled() {
+ return this.MdOptgroup.disabled || this.disabled;
+ },
+ key() {
+ return this.value;
+ },
+ inputLabel() {
+ return this.MdSelect.label;
+ },
+ optionClasses() {
+ return {
+ 'md-selected': this.isSelected || this.isChecked,
+ };
+ },
+ },
+ watch: {
+ selectValue() {
+ this.setIsSelected();
+ },
+ isChecked(val) {
+ if (val === this.isSelected) {
+ return;
+ }
+ this.setSelection();
+ },
+ isSelected(val) {
+ this.isChecked = val;
+ },
+ },
+ methods: {
+ getTextContent() {
+ return this.shortValue || this.displayValue || this.value;
+ },
+ setIsSelected() {
+ if (!this.isMultiple) {
+ this.isSelected = this.selectValue === this.value;
+ return;
+ }
+ if (this.selectValue === undefined) {
+ this.isSelected = false;
+ return;
+ }
+ this.isSelected = this.selectValue.includes(this.value);
+ },
+ setSingleSelection() {
+ this.MdSelect.setValue(this.value);
+ },
+ setMultipleSelection() {
+ this.MdSelect.setMultipleValue(this.value);
+ },
+ setSelection() {
+ if (!this.isDisabled) {
+ if (this.isMultiple) {
+ this.setMultipleSelection();
+ } else {
+ this.setSingleSelection();
+ }
+ }
+ },
+ setItem() {
+ this.$set(this.MdSelect.items, this.key, this.getTextContent());
+ },
+ },
+ updated() {
+ this.setItem();
+ },
+ created() {
+ this.setItem();
+ this.setIsSelected();
+ },
+};
+</script>
+
+<style scoped>
+.item {
+ display: inline-flex;
+ align-items: center;
+ width: 100%;
+ flex: 1;
+}
+
+.item .value {
+ flex-grow: 1;
+ margin: 0 10px;
+}
+
+.item .help-icon {
+ font-size: 15px;
+}
+</style>
diff --git a/tools/winscope/src/decode.js b/tools/winscope/src/decode.js
index 94a3de07a..7dfbfa618 100644
--- a/tools/winscope/src/decode.js
+++ b/tools/winscope/src/decode.js
@@ -14,195 +14,403 @@
* limitations under the License.
*/
+/* eslint-disable camelcase */
+/* eslint-disable max-len */
-import jsonProtoDefsWm from 'frameworks/base/core/proto/android/server/windowmanagertrace.proto'
-import jsonProtoDefsProtoLog from 'frameworks/base/core/proto/android/server/protolog.proto'
-import jsonProtoDefsSf from 'frameworks/native/services/surfaceflinger/layerproto/layerstrace.proto'
-import jsonProtoDefsTransaction from 'frameworks/native/cmds/surfacereplayer/proto/src/trace.proto'
-import jsonProtoDefsWl from 'WaylandSafePath/waylandtrace.proto'
-import jsonProtoDefsSysUi from 'frameworks/base/packages/SystemUI/src/com/android/systemui/tracing/sysui_trace.proto'
-import jsonProtoDefsLauncher from 'packages/apps/Launcher3/protos/launcher_trace_file.proto'
-import protobuf from 'protobufjs'
-import { transform_layers, transform_layers_trace } from './transform_sf.js'
-import { transform_window_service, transform_window_trace } from './transform_wm.js'
-import { transform_transaction_trace } from './transform_transaction.js'
-import { transform_wl_outputstate, transform_wayland_trace } from './transform_wl.js'
-import { transform_protolog } from './transform_protolog.js'
-import { transform_sysui_trace } from './transform_sys_ui.js'
-import { transform_launcher_trace } from './transform_launcher.js'
-import { fill_transform_data } from './matrix_utils.js'
-import { mp4Decoder } from './decodeVideo.js'
-
-var WmTraceMessage = lookup_type(jsonProtoDefsWm, "com.android.server.wm.WindowManagerTraceFileProto");
-var WmDumpMessage = lookup_type(jsonProtoDefsWm, "com.android.server.wm.WindowManagerServiceDumpProto");
-var SfTraceMessage = lookup_type(jsonProtoDefsSf, "android.surfaceflinger.LayersTraceFileProto");
-var SfDumpMessage = lookup_type(jsonProtoDefsSf, "android.surfaceflinger.LayersProto");
-var SfTransactionTraceMessage = lookup_type(jsonProtoDefsTransaction, "Trace");
-var WaylandTraceMessage = lookup_type(jsonProtoDefsWl, "org.chromium.arc.wayland_composer.TraceFileProto");
-var WaylandDumpMessage = lookup_type(jsonProtoDefsWl, "org.chromium.arc.wayland_composer.OutputStateProto");
-var ProtoLogMessage = lookup_type(jsonProtoDefsProtoLog, "com.android.server.protolog.ProtoLogFileProto");
-var SystemUiTraceMessage = lookup_type(jsonProtoDefsSysUi, "com.android.systemui.tracing.SystemUiTraceFileProto");
-var LauncherTraceMessage = lookup_type(jsonProtoDefsLauncher, "com.android.launcher3.tracing.LauncherTraceFileProto");
-
-const LAYER_TRACE_MAGIC_NUMBER = [0x09, 0x4c, 0x59, 0x52, 0x54, 0x52, 0x41, 0x43, 0x45] // .LYRTRACE
-const WINDOW_TRACE_MAGIC_NUMBER = [0x09, 0x57, 0x49, 0x4e, 0x54, 0x52, 0x41, 0x43, 0x45] // .WINTRACE
-const MPEG4_MAGIC_NMBER = [0x00, 0x00, 0x00, 0x18, 0x66, 0x74, 0x79, 0x70, 0x6d, 0x70, 0x34, 0x32] // ....ftypmp42
-const WAYLAND_TRACE_MAGIC_NUMBER = [0x09, 0x57, 0x59, 0x4c, 0x54, 0x52, 0x41, 0x43, 0x45] // .WYLTRACE
-const PROTO_LOG_MAGIC_NUMBER = [0x09, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x4c, 0x4f, 0x47] // .PROTOLOG
-const SYSTEM_UI_MAGIC_NUMBER = [0x09, 0x53, 0x59, 0x53, 0x55, 0x49, 0x54, 0x52, 0x43] // .SYSUITRC
-const LAUNCHER_MAGIC_NUMBER = [0x09, 0x4C, 0x4E, 0x43, 0x48, 0x52, 0x54, 0x52, 0x43] // .LNCHRTRC
-
-const DATA_TYPES = {
- WINDOW_MANAGER: {
- name: "WindowManager",
- icon: "view_compact",
- mime: "application/octet-stream",
+import jsonProtoDefsWm from 'frameworks/base/core/proto/android/server/windowmanagertrace.proto';
+import jsonProtoDefsProtoLog from 'frameworks/base/core/proto/android/internal/protolog.proto';
+import jsonProtoDefsSf from 'frameworks/native/services/surfaceflinger/layerproto/layerstrace.proto';
+import jsonProtoDefsTransaction from 'frameworks/native/cmds/surfacereplayer/proto/src/trace.proto';
+import jsonProtoDefsWl from 'WaylandSafePath/waylandtrace.proto';
+import jsonProtoDefsSysUi from 'frameworks/base/packages/SystemUI/src/com/android/systemui/tracing/sysui_trace.proto';
+import jsonProtoDefsLauncher from 'packages/apps/Launcher3/protos/launcher_trace_file.proto';
+import jsonProtoDefsIme from 'frameworks/base/core/proto/android/view/inputmethod/inputmethodeditortrace.proto';
+import protobuf from 'protobufjs';
+import {transformLayers, transformLayersTrace} from './transform_sf.js';
+import {transform_transaction_trace} from './transform_transaction.js';
+import {transform_wl_outputstate, transform_wayland_trace} from './transform_wl.js';
+import {transformProtolog} from './transform_protolog.js';
+import {transform_sysui_trace} from './transform_sys_ui.js';
+import {transform_launcher_trace} from './transform_launcher.js';
+import {transform_ime_trace_clients, transform_ime_trace_service, transform_ime_trace_managerservice} from './transform_ime.js';
+import {fill_transform_data} from './matrix_utils.js';
+import {mp4Decoder} from './decodeVideo.js';
+
+import SurfaceFlingerTrace from '@/traces/SurfaceFlinger.ts';
+import WindowManagerTrace from '@/traces/WindowManager.ts';
+import TransactionsTrace from '@/traces/Transactions.ts';
+import ScreenRecordingTrace from '@/traces/ScreenRecording.ts';
+import WaylandTrace from '@/traces/Wayland.ts';
+import ProtoLogTrace from '@/traces/ProtoLog.ts';
+import SystemUITrace from '@/traces/SystemUI.ts';
+import LauncherTrace from '@/traces/Launcher.ts';
+import ImeTraceClients from '@/traces/InputMethodClients.ts';
+import ImeTraceService from '@/traces/InputMethodService.ts';
+import ImeTraceManagerService from '@/traces/InputMethodManagerService.ts';
+
+import SurfaceFlingerDump from '@/dumps/SurfaceFlinger.ts';
+import WindowManagerDump from '@/dumps/WindowManager.ts';
+import WaylandDump from '@/dumps/Wayland.ts';
+
+const WmTraceMessage = lookup_type(jsonProtoDefsWm, 'com.android.server.wm.WindowManagerTraceFileProto');
+const WmDumpMessage = lookup_type(jsonProtoDefsWm, 'com.android.server.wm.WindowManagerServiceDumpProto');
+const SfTraceMessage = lookup_type(jsonProtoDefsSf, 'android.surfaceflinger.LayersTraceFileProto');
+const SfDumpMessage = lookup_type(jsonProtoDefsSf, 'android.surfaceflinger.LayersProto');
+const SfTransactionTraceMessage = lookup_type(jsonProtoDefsTransaction, 'Trace');
+const WaylandTraceMessage = lookup_type(jsonProtoDefsWl, 'org.chromium.arc.wayland_composer.TraceFileProto');
+const WaylandDumpMessage = lookup_type(jsonProtoDefsWl, 'org.chromium.arc.wayland_composer.OutputStateProto');
+const ProtoLogMessage = lookup_type(jsonProtoDefsProtoLog, 'com.android.internal.protolog.ProtoLogFileProto');
+const SystemUiTraceMessage = lookup_type(jsonProtoDefsSysUi, 'com.android.systemui.tracing.SystemUiTraceFileProto');
+const LauncherTraceMessage = lookup_type(jsonProtoDefsLauncher, 'com.android.launcher3.tracing.LauncherTraceFileProto');
+const InputMethodClientsTraceMessage = lookup_type(jsonProtoDefsIme, "android.view.inputmethod.InputMethodClientsTraceFileProto");
+const InputMethodServiceTraceMessage = lookup_type(jsonProtoDefsIme, "android.view.inputmethod.InputMethodServiceTraceFileProto");
+const InputMethodManagerServiceTraceMessage = lookup_type(jsonProtoDefsIme, "android.view.inputmethod.InputMethodManagerServiceTraceFileProto");
+
+const LAYER_TRACE_MAGIC_NUMBER = [0x09, 0x4c, 0x59, 0x52, 0x54, 0x52, 0x41, 0x43, 0x45]; // .LYRTRACE
+const WINDOW_TRACE_MAGIC_NUMBER = [0x09, 0x57, 0x49, 0x4e, 0x54, 0x52, 0x41, 0x43, 0x45]; // .WINTRACE
+const MPEG4_MAGIC_NMBER = [0x00, 0x00, 0x00, 0x18, 0x66, 0x74, 0x79, 0x70, 0x6d, 0x70, 0x34, 0x32]; // ....ftypmp42
+const WAYLAND_TRACE_MAGIC_NUMBER = [0x09, 0x57, 0x59, 0x4c, 0x54, 0x52, 0x41, 0x43, 0x45]; // .WYLTRACE
+const PROTO_LOG_MAGIC_NUMBER = [0x09, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x4c, 0x4f, 0x47]; // .PROTOLOG
+const SYSTEM_UI_MAGIC_NUMBER = [0x09, 0x53, 0x59, 0x53, 0x55, 0x49, 0x54, 0x52, 0x43]; // .SYSUITRC
+const LAUNCHER_MAGIC_NUMBER = [0x09, 0x4C, 0x4E, 0x43, 0x48, 0x52, 0x54, 0x52, 0x43]; // .LNCHRTRC
+const IMC_TRACE_MAGIC_NUMBER = [0x09, 0x49, 0x4d, 0x43, 0x54, 0x52, 0x41, 0x43, 0x45] //.IMCTRACE
+const IMS_TRACE_MAGIC_NUMBER = [0x09, 0x49, 0x4d, 0x53, 0x54, 0x52, 0x41, 0x43, 0x45] //.IMSTRACE
+const IMM_TRACE_MAGIC_NUMBER = [0x09, 0x49, 0x4d, 0x4d, 0x54, 0x52, 0x41, 0x43, 0x45] //.IMMTRACE
+
+const FILE_TYPES = Object.freeze({
+ WINDOW_MANAGER_TRACE: 'WindowManagerTrace',
+ SURFACE_FLINGER_TRACE: 'SurfaceFlingerTrace',
+ WINDOW_MANAGER_DUMP: 'WindowManagerDump',
+ SURFACE_FLINGER_DUMP: 'SurfaceFlingerDump',
+ SCREEN_RECORDING: 'ScreenRecording',
+ TRANSACTIONS_TRACE: 'TransactionsTrace',
+ WAYLAND_TRACE: 'WaylandTrace',
+ WAYLAND_DUMP: 'WaylandDump',
+ PROTO_LOG: 'ProtoLog',
+ SYSTEM_UI: 'SystemUI',
+ LAUNCHER: 'Launcher',
+ IME_TRACE_CLIENTS: 'ImeTraceClients',
+ IME_TRACE_SERVICE: 'ImeTrace InputMethodService',
+ IME_TRACE_MANAGERSERVICE: 'ImeTrace InputMethodManagerService',
+});
+
+const WINDOW_MANAGER_ICON = 'view_compact';
+const SURFACE_FLINGER_ICON = 'filter_none';
+const SCREEN_RECORDING_ICON = 'videocam';
+const TRANSACTION_ICON = 'timeline';
+const WAYLAND_ICON = 'filter_none';
+const PROTO_LOG_ICON = 'notes';
+const SYSTEM_UI_ICON = 'filter_none';
+const LAUNCHER_ICON = 'filter_none';
+const IME_ICON = 'keyboard';
+
+const FILE_ICONS = {
+ [FILE_TYPES.WINDOW_MANAGER_TRACE]: WINDOW_MANAGER_ICON,
+ [FILE_TYPES.SURFACE_FLINGER_TRACE]: SURFACE_FLINGER_ICON,
+ [FILE_TYPES.WINDOW_MANAGER_DUMP]: WINDOW_MANAGER_ICON,
+ [FILE_TYPES.SURFACE_FLINGER_DUMP]: SURFACE_FLINGER_ICON,
+ [FILE_TYPES.SCREEN_RECORDING]: SCREEN_RECORDING_ICON,
+ [FILE_TYPES.TRANSACTIONS_TRACE]: TRANSACTION_ICON,
+ [FILE_TYPES.WAYLAND_TRACE]: WAYLAND_ICON,
+ [FILE_TYPES.WAYLAND_DUMP]: WAYLAND_ICON,
+ [FILE_TYPES.PROTO_LOG]: PROTO_LOG_ICON,
+ [FILE_TYPES.SYSTEM_UI]: SYSTEM_UI_ICON,
+ [FILE_TYPES.LAUNCHER]: LAUNCHER_ICON,
+ [FILE_TYPES.IME_TRACE_CLIENTS]: IME_ICON,
+ [FILE_TYPES.IME_TRACE_SERVICE]: IME_ICON,
+ [FILE_TYPES.IME_TRACE_MANAGERSERVICE]: IME_ICON,
+};
+
+function oneOf(dataType) {
+ return {oneOf: true, type: dataType};
+}
+
+function manyOf(dataType, fold = null) {
+ return {manyOf: true, type: dataType, fold};
+}
+
+const TRACE_TYPES = Object.freeze({
+ WINDOW_MANAGER: 'WindowManagerTrace',
+ SURFACE_FLINGER: 'SurfaceFlingerTrace',
+ SCREEN_RECORDING: 'ScreenRecording',
+ TRANSACTION: 'Transaction',
+ WAYLAND: 'Wayland',
+ PROTO_LOG: 'ProtoLog',
+ SYSTEM_UI: 'SystemUI',
+ LAUNCHER: 'Launcher',
+ IME_CLIENTS: 'ImeTrace Clients',
+ IME_SERVICE: 'ImeTrace InputMethodService',
+ IME_MANAGERSERVICE: 'ImeTrace InputMethodManagerService',
+});
+
+const TRACE_INFO = {
+ [TRACE_TYPES.WINDOW_MANAGER]: {
+ name: 'WindowManager',
+ icon: WINDOW_MANAGER_ICON,
+ files: [oneOf(FILE_TYPES.WINDOW_MANAGER_TRACE)],
+ constructor: WindowManagerTrace,
},
- SURFACE_FLINGER: {
- name: "SurfaceFlinger",
- icon: "filter_none",
- mime: "application/octet-stream",
+ [TRACE_TYPES.SURFACE_FLINGER]: {
+ name: 'SurfaceFlinger',
+ icon: SURFACE_FLINGER_ICON,
+ files: [oneOf(FILE_TYPES.SURFACE_FLINGER_TRACE)],
+ constructor: SurfaceFlingerTrace,
},
- SCREEN_RECORDING: {
- name: "Screen recording",
- icon: "videocam",
- mime: "video/mp4",
+ [TRACE_TYPES.SCREEN_RECORDING]: {
+ name: 'Screen recording',
+ icon: SCREEN_RECORDING_ICON,
+ files: [oneOf(FILE_TYPES.SCREEN_RECORDING)],
+ constructor: ScreenRecordingTrace,
},
- TRANSACTION: {
- name: "Transaction",
- icon: "timeline",
- mime: "application/octet-stream",
+ [TRACE_TYPES.TRANSACTION]: {
+ name: 'Transaction',
+ icon: TRANSACTION_ICON,
+ files: [
+ oneOf(FILE_TYPES.TRANSACTIONS_TRACE),
+ ],
+ constructor: TransactionsTrace,
},
- WAYLAND: {
- name: "Wayland",
- icon: "filter_none",
- mime: "application/octet-stream",
+ [TRACE_TYPES.WAYLAND]: {
+ name: 'Wayland',
+ icon: WAYLAND_ICON,
+ files: [oneOf(FILE_TYPES.WAYLAND_TRACE)],
+ constructor: WaylandTrace,
},
- PROTO_LOG: {
- name: "ProtoLog",
- icon: "notes",
- mime: "application/octet-stream",
+ [TRACE_TYPES.PROTO_LOG]: {
+ name: 'ProtoLog',
+ icon: PROTO_LOG_ICON,
+ files: [oneOf(FILE_TYPES.PROTO_LOG)],
+ constructor: ProtoLogTrace,
},
- SYSTEM_UI: {
- name: "SystemUI",
- icon: "filter_none",
- mime: "application/octet-stream",
+ [TRACE_TYPES.SYSTEM_UI]: {
+ name: 'SystemUI',
+ icon: SYSTEM_UI_ICON,
+ files: [oneOf(FILE_TYPES.SYSTEM_UI)],
+ constructor: SystemUITrace,
},
- LAUNCHER: {
- name: "Launcher",
- icon: "filter_none",
- mime: "application/octet-stream",
+ [TRACE_TYPES.LAUNCHER]: {
+ name: 'Launcher',
+ icon: LAUNCHER_ICON,
+ files: [oneOf(FILE_TYPES.LAUNCHER)],
+ constructor: LauncherTrace,
},
-}
+ [TRACE_TYPES.IME_CLIENTS]: {
+ name: 'InputMethodClients',
+ icon: IME_ICON,
+ files: [oneOf(FILE_TYPES.IME_TRACE_CLIENTS)],
+ constructor: ImeTraceClients,
+ },
+ [TRACE_TYPES.IME_SERVICE]: {
+ name: 'InputMethodService',
+ icon: IME_ICON,
+ files: [oneOf(FILE_TYPES.IME_TRACE_SERVICE)],
+ constructor: ImeTraceService,
+ },
+ [TRACE_TYPES.IME_MANAGERSERVICE]: {
+ name: 'InputMethodManagerService',
+ icon: IME_ICON,
+ files: [oneOf(FILE_TYPES.IME_TRACE_MANAGERSERVICE)],
+ constructor: ImeTraceManagerService,
+ },
+};
+
+const DUMP_TYPES = Object.freeze({
+ WINDOW_MANAGER: 'WindowManagerDump',
+ SURFACE_FLINGER: 'SurfaceFlingerDump',
+ WAYLAND: 'WaylandDump',
+});
+
+const DUMP_INFO = {
+ [DUMP_TYPES.WINDOW_MANAGER]: {
+ name: 'WindowManager',
+ icon: WINDOW_MANAGER_ICON,
+ files: [oneOf(FILE_TYPES.WINDOW_MANAGER_DUMP)],
+ constructor: WindowManagerDump,
+ },
+ [DUMP_TYPES.SURFACE_FLINGER]: {
+ name: 'SurfaceFlinger',
+ icon: SURFACE_FLINGER_ICON,
+ files: [oneOf(FILE_TYPES.SURFACE_FLINGER_DUMP)],
+ constructor: SurfaceFlingerDump,
+ },
+ [DUMP_TYPES.WAYLAND]: {
+ name: 'Wayland',
+ icon: WAYLAND_ICON,
+ files: [oneOf(FILE_TYPES.WAYLAND_DUMP)],
+ constructor: WaylandDump,
+ },
+};
+
+export const TRACE_ICONS = {
+ [TRACE_TYPES.WINDOW_MANAGER]: WINDOW_MANAGER_ICON,
+ [TRACE_TYPES.SURFACE_FLINGER]: SURFACE_FLINGER_ICON,
+ [TRACE_TYPES.SCREEN_RECORDING]: SCREEN_RECORDING_ICON,
+ [TRACE_TYPES.TRANSACTION]: TRANSACTION_ICON,
+ [TRACE_TYPES.WAYLAND]: WAYLAND_ICON,
+ [TRACE_TYPES.PROTO_LOG]: PROTO_LOG_ICON,
+ [TRACE_TYPES.SYSTEM_UI]: SYSTEM_UI_ICON,
+ [TRACE_TYPES.LAUNCHER]: LAUNCHER_ICON,
+ [TRACE_TYPES.IME_CLIENTS]: IME_ICON,
+ [TRACE_TYPES.IME_SERVICE]: IME_ICON,
+ [TRACE_TYPES.IME_MANAGERSERVICE]: IME_ICON,
-const FILE_TYPES = {
- 'window_trace': {
- name: "WindowManager trace",
- dataType: DATA_TYPES.WINDOW_MANAGER,
+ [DUMP_TYPES.WINDOW_MANAGER]: WINDOW_MANAGER_ICON,
+ [DUMP_TYPES.SURFACE_FLINGER]: SURFACE_FLINGER_ICON,
+ [DUMP_TYPES.WAYLAND]: WAYLAND_ICON,
+};
+
+// TODO: Rename name to defaultName
+const FILE_DECODERS = {
+ [FILE_TYPES.WINDOW_MANAGER_TRACE]: {
+ name: 'WindowManager trace',
decoder: protoDecoder,
decoderParams: {
+ type: FILE_TYPES.WINDOW_MANAGER_TRACE,
protoType: WmTraceMessage,
- transform: transform_window_trace,
+ transform: WindowManagerTrace.fromProto,
timeline: true,
},
},
- 'layers_trace': {
- name: "SurfaceFlinger trace",
- dataType: DATA_TYPES.SURFACE_FLINGER,
+ [FILE_TYPES.SURFACE_FLINGER_TRACE]: {
+ name: 'SurfaceFlinger trace',
decoder: protoDecoder,
decoderParams: {
+ type: FILE_TYPES.SURFACE_FLINGER_TRACE,
+ mime: 'application/octet-stream',
protoType: SfTraceMessage,
- transform: transform_layers_trace,
+ transform: transformLayersTrace,
timeline: true,
},
},
- 'wl_trace': {
- name: "Wayland trace",
- dataType: DATA_TYPES.WAYLAND,
+ [FILE_TYPES.WAYLAND_TRACE]: {
+ name: 'Wayland trace',
decoder: protoDecoder,
decoderParams: {
+ type: FILE_TYPES.WAYLAND_TRACE,
+ mime: 'application/octet-stream',
protoType: WaylandTraceMessage,
transform: transform_wayland_trace,
timeline: true,
},
},
- 'layers_dump': {
- name: "SurfaceFlinger dump",
- dataType: DATA_TYPES.SURFACE_FLINGER,
+ [FILE_TYPES.SURFACE_FLINGER_DUMP]: {
+ name: 'SurfaceFlinger dump',
decoder: protoDecoder,
decoderParams: {
+ type: FILE_TYPES.SURFACE_FLINGER_DUMP,
+ mime: 'application/octet-stream',
protoType: SfDumpMessage,
- transform: (decoded) => transform_layers(true /*includesCompositionState*/, decoded),
+ transform: (decoded) => transformLayers(true /* includesCompositionState*/, decoded),
timeline: false,
},
},
- 'window_dump': {
- name: "WindowManager dump",
- dataType: DATA_TYPES.WINDOW_MANAGER,
+ [FILE_TYPES.WINDOW_MANAGER_DUMP]: {
+ name: 'WindowManager dump',
decoder: protoDecoder,
decoderParams: {
+ type: FILE_TYPES.WINDOW_MANAGER_DUMP,
+ mime: 'application/octet-stream',
protoType: WmDumpMessage,
- transform: transform_window_service,
+ transform: WindowManagerDump.fromProto,
timeline: false,
},
},
- 'wl_dump': {
- name: "Wayland dump",
- dataType: DATA_TYPES.WAYLAND,
+ [FILE_TYPES.WAYLAND_DUMP]: {
+ name: 'Wayland dump',
decoder: protoDecoder,
decoderParams: {
+ type: FILE_TYPES.WAYLAND_DUMP,
+ mime: 'application/octet-stream',
protoType: WaylandDumpMessage,
transform: transform_wl_outputstate,
timeline: false,
},
},
- 'screen_recording': {
- name: "Screen recording",
- dataType: DATA_TYPES.SCREEN_RECORDING,
+ [FILE_TYPES.SCREEN_RECORDING]: {
+ name: 'Screen recording',
decoder: videoDecoder,
decoderParams: {
+ type: FILE_TYPES.SCREEN_RECORDING,
+ mime: 'video/mp4',
videoDecoder: mp4Decoder,
},
},
- 'transaction': {
- name: "Transaction",
- dataType: DATA_TYPES.TRANSACTION,
+ [FILE_TYPES.TRANSACTIONS_TRACE]: {
+ name: 'Transaction',
decoder: protoDecoder,
decoderParams: {
+ type: FILE_TYPES.TRANSACTIONS_TRACE,
+ mime: 'application/octet-stream',
protoType: SfTransactionTraceMessage,
transform: transform_transaction_trace,
timeline: true,
- }
+ },
},
- 'proto_log': {
- name: "ProtoLog",
- dataType: DATA_TYPES.PROTO_LOG,
+ [FILE_TYPES.PROTO_LOG]: {
+ name: 'ProtoLog',
decoder: protoDecoder,
decoderParams: {
+ type: FILE_TYPES.PROTO_LOG,
+ mime: 'application/octet-stream',
protoType: ProtoLogMessage,
- transform: transform_protolog,
+ transform: transformProtolog,
timeline: true,
- }
+ },
},
- 'system_ui_trace': {
- name: "SystemUI trace",
- dataType: DATA_TYPES.SYSTEM_UI,
+ [FILE_TYPES.SYSTEM_UI]: {
+ name: 'SystemUI trace',
decoder: protoDecoder,
decoderParams: {
+ type: FILE_TYPES.SYSTEM_UI,
+ mime: 'application/octet-stream',
protoType: SystemUiTraceMessage,
transform: transform_sysui_trace,
timeline: true,
- }
+ },
},
- 'launcher_trace': {
- name: "Launcher trace",
- dataType: DATA_TYPES.LAUNCHER,
+ [FILE_TYPES.LAUNCHER]: {
+ name: 'Launcher trace',
decoder: protoDecoder,
decoderParams: {
+ type: FILE_TYPES.LAUNCHER,
+ mime: 'application/octet-stream',
protoType: LauncherTraceMessage,
transform: transform_launcher_trace,
timeline: true,
- }
+ },
+ },
+ [FILE_TYPES.IME_TRACE_CLIENTS]: {
+ name: 'InputMethodClients trace',
+ decoder: protoDecoder,
+ decoderParams: {
+ type: FILE_TYPES.IME_TRACE_CLIENTS,
+ mime: 'application/octet-stream',
+ protoType: InputMethodClientsTraceMessage,
+ transform: transform_ime_trace_clients,
+ timeline: true,
+ },
+ },
+ [FILE_TYPES.IME_TRACE_SERVICE]: {
+ name: 'InputMethodService trace',
+ decoder: protoDecoder,
+ decoderParams: {
+ type: FILE_TYPES.IME_TRACE_SERVICE,
+ mime: 'application/octet-stream',
+ protoType: InputMethodServiceTraceMessage,
+ transform: transform_ime_trace_service,
+ timeline: true,
+ },
+ },
+ [FILE_TYPES.IME_TRACE_MANAGERSERVICE]: {
+ name: 'InputMethodManagerService trace',
+ decoder: protoDecoder,
+ decoderParams: {
+ type: FILE_TYPES.IME_TRACE_MANAGERSERVICE,
+ mime: 'application/octet-stream',
+ protoType: InputMethodManagerServiceTraceMessage,
+ transform: transform_ime_trace_managerservice,
+ timeline: true,
+ },
},
};
@@ -218,58 +426,69 @@ function modifyProtoFields(protoObj, displayDefaults) {
if (!protoObj || protoObj !== Object(protoObj) || !protoObj.$type) {
return;
}
- for (var fieldName in protoObj.$type.fields) {
- var fieldProperties = protoObj.$type.fields[fieldName];
- var field = protoObj[fieldName];
-
- if (Array.isArray(field)) {
- field.forEach((item, _) => {
- modifyProtoFields(item, displayDefaults);
- })
- continue;
- }
- if (displayDefaults && !(field)) {
- protoObj[fieldName] = fieldProperties.defaultValue;
- }
+ for (const fieldName in protoObj.$type.fields) {
+ if (protoObj.$type.fields.hasOwnProperty(fieldName)) {
+ const fieldProperties = protoObj.$type.fields[fieldName];
+ const field = protoObj[fieldName];
- if (fieldProperties.type === 'TransformProto') {
- fill_transform_data(protoObj[fieldName]);
- continue;
- }
+ if (Array.isArray(field)) {
+ field.forEach((item, _) => {
+ modifyProtoFields(item, displayDefaults);
+ });
+ continue;
+ }
+
+ if (displayDefaults && !(field)) {
+ protoObj[fieldName] = fieldProperties.defaultValue;
+ }
+
+ if (fieldProperties.type === 'TransformProto') {
+ fill_transform_data(protoObj[fieldName]);
+ continue;
+ }
- if (fieldProperties.resolvedType && fieldProperties.resolvedType.valuesById) {
- protoObj[fieldName] = fieldProperties.resolvedType.valuesById[protoObj[fieldProperties.name]];
- continue;
+ if (fieldProperties.resolvedType && fieldProperties.resolvedType.valuesById) {
+ protoObj[fieldName] = fieldProperties.resolvedType.valuesById[protoObj[fieldProperties.name]];
+ continue;
+ }
+ modifyProtoFields(protoObj[fieldName], displayDefaults);
}
- modifyProtoFields(protoObj[fieldName], displayDefaults);
}
}
-function protoDecoder(buffer, fileType, fileName, store) {
- var decoded = fileType.decoderParams.protoType.decode(buffer);
- modifyProtoFields(decoded, store.displayDefaults);
- var transformed = fileType.decoderParams.transform(decoded);
- var data
- if (fileType.decoderParams.timeline) {
- data = transformed.children;
+function decodeAndTransformProto(buffer, params, displayDefaults) {
+ const decoded = params.protoType.decode(buffer);
+ modifyProtoFields(decoded, displayDefaults);
+ const transformed = params.transform(decoded);
+
+ return transformed;
+}
+
+function protoDecoder(buffer, params, fileName, store) {
+ const transformed = decodeAndTransformProto(buffer, params, store.displayDefaults);
+ let data;
+ if (params.timeline) {
+ data = transformed.entries ?? transformed.children;
} else {
data = [transformed];
}
- let blobUrl = URL.createObjectURL(new Blob([buffer], { type: fileType.dataType.mime }));
- return dataFile(fileName, data.map(x => x.timestamp), data, blobUrl, fileType.dataType);
+ const blobUrl = URL.createObjectURL(new Blob([buffer], {type: params.mime}));
+ return dataFile(fileName, data.map((x) => x.timestamp), data, blobUrl, params.type);
}
-function videoDecoder(buffer, fileType, fileName, store) {
- let [data, timeline] = fileType.decoderParams.videoDecoder(buffer);
- let blobUrl = URL.createObjectURL(new Blob([data], { type: fileType.dataType.mime }));
- return dataFile(fileName, timeline, blobUrl, blobUrl, fileType.dataType);
+function videoDecoder(buffer, params, fileName, store) {
+ const [data, timeline] = params.videoDecoder(buffer);
+ const blobUrl = URL.createObjectURL(new Blob([data], {type: params.mime}));
+ return dataFile(fileName, timeline, blobUrl, blobUrl, params.type);
}
function dataFile(filename, timeline, data, blobUrl, type) {
return {
filename: filename,
- timeline: timeline,
+ // Object is frozen for performance reasons
+ // It will prevent Vue from making it a reactive object which will be very slow as the timeline gets larger.
+ timeline: Object.freeze(timeline),
data: data,
blobUrl: blobUrl,
type: type,
@@ -277,14 +496,14 @@ function dataFile(filename, timeline, data, blobUrl, type) {
destroy() {
URL.revokeObjectURL(this.blobUrl);
},
- }
+ };
}
function arrayEquals(a, b) {
if (a.length !== b.length) {
return false;
}
- for (var i = 0; i < a.length; i++) {
+ for (let i = 0; i < a.length; i++) {
if (a[i] != b[i]) {
return false;
}
@@ -297,39 +516,70 @@ function arrayStartsWith(array, prefix) {
}
function decodedFile(fileType, buffer, fileName, store) {
- return [fileType, fileType.decoder(buffer, fileType, fileName, store)];
+ const fileDecoder = FILE_DECODERS[fileType];
+ return [fileType, fileDecoder.decoder(buffer, fileDecoder.decoderParams, fileName, store)];
}
function detectAndDecode(buffer, fileName, store) {
if (arrayStartsWith(buffer, LAYER_TRACE_MAGIC_NUMBER)) {
- return decodedFile(FILE_TYPES['layers_trace'], buffer, fileName, store);
+ return decodedFile(FILE_TYPES.SURFACE_FLINGER_TRACE, buffer, fileName, store);
}
if (arrayStartsWith(buffer, WINDOW_TRACE_MAGIC_NUMBER)) {
- return decodedFile(FILE_TYPES['window_trace'], buffer, fileName, store);
+ return decodedFile(FILE_TYPES.WINDOW_MANAGER_TRACE, buffer, fileName, store);
}
if (arrayStartsWith(buffer, MPEG4_MAGIC_NMBER)) {
- return decodedFile(FILE_TYPES['screen_recording'], buffer, fileName, store);
+ return decodedFile(FILE_TYPES.SCREEN_RECORDING, buffer, fileName, store);
}
if (arrayStartsWith(buffer, WAYLAND_TRACE_MAGIC_NUMBER)) {
- return decodedFile(FILE_TYPES['wl_trace'], buffer, fileName, store);
+ return decodedFile(FILE_TYPES.WAYLAND_TRACE, buffer, fileName, store);
}
if (arrayStartsWith(buffer, PROTO_LOG_MAGIC_NUMBER)) {
- return decodedFile(FILE_TYPES['proto_log'], buffer, fileName, store);
+ return decodedFile(FILE_TYPES.PROTO_LOG, buffer, fileName, store);
}
if (arrayStartsWith(buffer, SYSTEM_UI_MAGIC_NUMBER)) {
- return decodedFile(FILE_TYPES['system_ui_trace'], buffer, fileName, store);
+ return decodedFile(FILE_TYPES.SYSTEM_UI, buffer, fileName, store);
}
if (arrayStartsWith(buffer, LAUNCHER_MAGIC_NUMBER)) {
- return decodedFile(FILE_TYPES['launcher_trace'], buffer, fileName, store);
+ return decodedFile(FILE_TYPES.LAUNCHER, buffer, fileName, store);
}
- for (var name of ['transaction', 'layers_dump', 'window_dump', 'wl_dump']) {
+ if (arrayStartsWith(buffer, IMC_TRACE_MAGIC_NUMBER)) {
+ return decodedFile(FILE_TYPES.IME_TRACE_CLIENTS, buffer, fileName, store);
+ }
+ if (arrayStartsWith(buffer, IMS_TRACE_MAGIC_NUMBER)) {
+ return decodedFile(FILE_TYPES.IME_TRACE_SERVICE, buffer, fileName, store);
+ }
+ if (arrayStartsWith(buffer, IMM_TRACE_MAGIC_NUMBER)) {
+ return decodedFile(FILE_TYPES.IME_TRACE_MANAGERSERVICE, buffer, fileName, store);
+ }
+
+ // TODO(b/169305853): Add magic number at beginning of file for better auto detection
+ for (const [filetype, condition] of [
+ [FILE_TYPES.TRANSACTIONS_TRACE, (file) => file.data.length > 0],
+ [FILE_TYPES.WAYLAND_DUMP, (file) => (file.data.length > 0 && file.data.children[0] > 0) || file.data.length > 1],
+ [FILE_TYPES.WINDOW_MANAGER_DUMP],
+ [FILE_TYPES.SURFACE_FLINGER_DUMP],
+ ]) {
try {
- return decodedFile(FILE_TYPES[name], buffer, fileName, store);
+ const [, fileData] = decodedFile(filetype, buffer, fileName, store);
+
+ // A generic file will often wrongly be decoded as an empty wayland dump file
+ if (condition && !condition(fileData)) {
+ // Fall through to next filetype
+ continue;
+ }
+
+ return [filetype, fileData];
} catch (ex) {
- // ignore exception and try next filetype
+ // ignore exception and fall through to next filetype
}
}
- throw new Error('Unable to detect file');
+ throw new UndetectableFileType('Unable to detect file');
}
-export { detectAndDecode, DATA_TYPES, FILE_TYPES };
+/**
+ * Error is raised when detectAndDecode is called but the file can't be
+ * automatically detected as being of a compatible file type.
+ */
+class UndetectableFileType extends Error { }
+
+export {detectAndDecode, decodeAndTransformProto, FILE_TYPES, TRACE_INFO, TRACE_TYPES, DUMP_TYPES, DUMP_INFO, FILE_DECODERS, FILE_ICONS, UndetectableFileType};
diff --git a/tools/winscope/src/dumps/DumpBase.ts b/tools/winscope/src/dumps/DumpBase.ts
new file mode 100644
index 000000000..9e2bd141e
--- /dev/null
+++ b/tools/winscope/src/dumps/DumpBase.ts
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export default abstract class DumpBase implements IDump {
+ data: any;
+ _files: any[];
+
+ constructor(data, files) {
+ this.data = data;
+ this._files = files;
+ }
+
+ get files(): any[] {
+ return Object.values(this._files).flat();
+ }
+
+ abstract get type(): String;
+}
+
+interface IDump {
+ files: Array<Object>;
+ type: String,
+} \ No newline at end of file
diff --git a/tools/winscope/src/dumps/SurfaceFlinger.ts b/tools/winscope/src/dumps/SurfaceFlinger.ts
new file mode 100644
index 000000000..f35481739
--- /dev/null
+++ b/tools/winscope/src/dumps/SurfaceFlinger.ts
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { FILE_TYPES, DUMP_TYPES } from "@/decode.js";
+import DumpBase from "./DumpBase";
+
+export default class SurfaceFlinger extends DumpBase {
+ sfDumpFile: any;
+ data: any;
+
+ constructor(files) {
+ const sfDumpFile = files[FILE_TYPES.SURFACE_FLINGER_DUMP];
+ super(sfDumpFile.data, files);
+ this.sfDumpFile = sfDumpFile;
+ }
+
+ get type() {
+ return DUMP_TYPES.SURFACE_FLINGER;
+ }
+} \ No newline at end of file
diff --git a/tools/winscope/src/dumps/Wayland.ts b/tools/winscope/src/dumps/Wayland.ts
new file mode 100644
index 000000000..b038d9759
--- /dev/null
+++ b/tools/winscope/src/dumps/Wayland.ts
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { FILE_TYPES, DUMP_TYPES } from "@/decode.js";
+import DumpBase from "./DumpBase";
+
+export default class WayLand extends DumpBase {
+ waylandFile: any;
+
+ constructor(files) {
+ const waylandFile = files[FILE_TYPES.WAYLAND_DUMP];
+ super(waylandFile.data, files);
+ this.waylandFile = waylandFile;
+ }
+
+ get type() {
+ return DUMP_TYPES.WAYLAND;
+ }
+} \ No newline at end of file
diff --git a/tools/winscope/src/dumps/WindowManager.ts b/tools/winscope/src/dumps/WindowManager.ts
new file mode 100644
index 000000000..d2836ad4e
--- /dev/null
+++ b/tools/winscope/src/dumps/WindowManager.ts
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { FILE_TYPES, DUMP_TYPES } from "@/decode.js";
+import DumpBase from "./DumpBase";
+
+import { WindowManagerTrace } from '@/flickerlib';
+
+export default class WindowManager extends DumpBase {
+ wmDumpFile: any;
+
+ constructor(files) {
+ const wmDumpFile = files[FILE_TYPES.WINDOW_MANAGER_DUMP];
+ super(wmDumpFile.data, files);
+ this.wmDumpFile = wmDumpFile
+ }
+
+ get type() {
+ return DUMP_TYPES.WINDOW_MANAGER;
+ }
+
+ static fromProto(proto): WindowManagerTrace {
+ return WindowManagerTrace.fromDump(proto);
+ }
+} \ No newline at end of file
diff --git a/tools/winscope/src/flickerlib/ObjectFormatter.ts b/tools/winscope/src/flickerlib/ObjectFormatter.ts
new file mode 100644
index 000000000..98f078d06
--- /dev/null
+++ b/tools/winscope/src/flickerlib/ObjectFormatter.ts
@@ -0,0 +1,209 @@
+/*
+ * Copyright 2021, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import {toBounds, toBuffer, toColor, toPoint, toRect,
+ toRectF, toRegion, toTransform} from './common';
+import intDefMapping from
+ '../../../../../prebuilts/misc/common/winscope/intDefMapping.json';
+
+export default class ObjectFormatter {
+ private static INVALID_ELEMENT_PROPERTIES = ['length', 'name', 'prototype', 'children',
+ 'childrenWindows', 'ref', 'root', 'layers', 'resolvedChildren']
+
+ private static FLICKER_INTDEF_MAP = new Map([
+ [`WindowLayoutParams.type`, `android.view.WindowManager.LayoutParams.WindowType`],
+ [`WindowLayoutParams.flags`, `android.view.WindowManager.LayoutParams.Flags`],
+ [`WindowLayoutParams.privateFlags`, `android.view.WindowManager.LayoutParams.PrivateFlags`],
+ [`WindowLayoutParams.gravity`, `android.view.Gravity.GravityFlags`],
+ [`WindowLayoutParams.softInputMode`, `android.view.WindowManager.LayoutParams.WindowType`],
+ [`WindowLayoutParams.systemUiVisibilityFlags`, `android.view.WindowManager.LayoutParams.SystemUiVisibilityFlags`],
+ [`WindowLayoutParams.subtreeSystemUiVisibilityFlags`, `android.view.WindowManager.LayoutParams.SystemUiVisibilityFlags`],
+ [`WindowLayoutParams.behavior`, `android.view.WindowInsetsController.Behavior`],
+ [`WindowLayoutParams.fitInsetsSides`, `android.view.WindowInsets.Side.InsetsSide`],
+
+ [`Configuration.windowingMode`, `android.app.WindowConfiguration.WindowingMode`],
+ [`WindowConfiguration.windowingMode`, `android.app.WindowConfiguration.WindowingMode`],
+ [`Configuration.orientation`, `android.content.pm.ActivityInfo.ScreenOrientation`],
+ [`WindowConfiguration.orientation`, `android.content.pm.ActivityInfo.ScreenOrientation`],
+ [`WindowState.orientation`, `android.content.pm.ActivityInfo.ScreenOrientation`],
+ ])
+
+ static format(obj: any): {} {
+ const entries = Object.entries(obj)
+ .filter(it => !it[0].includes(`$`))
+ .filter(it => !this.INVALID_ELEMENT_PROPERTIES.includes(it[0]))
+ const sortedEntries = entries.sort()
+
+ const result: any = {}
+ sortedEntries.forEach(entry => {
+ const key = entry[0]
+ const value: any = entry[1]
+
+ if (value) {
+ // flicker obj
+ if (value.prettyPrint) {
+ result[key] = value.prettyPrint()
+ } else {
+ // converted proto to flicker
+ const translatedObject = this.translateObject(value)
+ if (translatedObject) {
+ result[key] = translatedObject.prettyPrint()
+ // objects - recursive call
+ } else if (value && typeof(value) == `object`) {
+ result[key] = this.format(value)
+ } else {
+ // values
+ result[key] = this.translateIntDef(obj, key, value)
+ }
+ }
+
+ }
+ })
+
+ return Object.freeze(result)
+ }
+
+ /**
+ * Translate some predetermined proto objects into their flicker equivalent
+ *
+ * Returns null if the object cannot be translated
+ *
+ * @param obj Object to translate
+ */
+ private static translateObject(obj) {
+ const type = obj?.$type?.name
+ switch(type) {
+ case `SizeProto`: return toBounds(obj)
+ case `ActiveBufferProto`: return toBuffer(obj)
+ case `ColorProto`: return toColor(obj)
+ case `PointProto`: return toPoint(obj)
+ case `RectProto`: return toRect(obj)
+ case `FloatRectProto`: return toRectF(obj)
+ case `RegionProto`: return toRegion(obj)
+ case `TransformProto`: return toTransform(obj)
+ case 'ColorTransformProto': {
+ const formatted = this.formatColorTransform(obj.val);
+ return `${formatted}`;
+ }
+ }
+
+ return null
+ }
+
+ private static formatColorTransform(vals) {
+ const fixedVals = vals.map((v) => v.toFixed(1));
+ let formatted = ``;
+ for (let i = 0; i < fixedVals.length; i += 4) {
+ formatted += `[`;
+ formatted += fixedVals.slice(i, i + 4).join(', ');
+ formatted += `] `;
+ }
+ return formatted;
+ }
+
+ /**
+ * Obtains from the proto field, the metadata related to the typedef type (if any)
+ *
+ * @param obj Proto object
+ * @param propertyName Property to search
+ */
+ private static getTypeDefSpec(obj: any, propertyName: string): string {
+ const fields = obj?.$type?.fields
+ if (!fields) {
+ return null
+ }
+
+ const options = fields[propertyName]?.options
+ if (!options) {
+ return null
+ }
+
+ return options["(.android.typedef)"]
+ }
+
+ /**
+ * Translate intdef properties into their string representation
+ *
+ * For proto objects check the
+ *
+ * @param parentObj Object containing the value to parse
+ * @param propertyName Property to search
+ * @param value Property value
+ */
+ private static translateIntDef(parentObj: any, propertyName: string, value: any): string {
+ const parentClassName = parentObj.constructor.name
+ const propertyPath = `${parentClassName}.${propertyName}`
+
+ let translatedValue = value
+ // Parse Flicker objects (no intdef annotation supported)
+ if (this.FLICKER_INTDEF_MAP.has(propertyPath)) {
+ translatedValue = this.getIntFlagsAsStrings(value,
+ this.FLICKER_INTDEF_MAP.get(propertyPath))
+ } else {
+ // If it's a proto, search on the proto definition for the intdef type
+ const typeDefSpec = this.getTypeDefSpec(parentObj, propertyName)
+ if (typeDefSpec) {
+ translatedValue = this.getIntFlagsAsStrings(value, typeDefSpec)
+ }
+ }
+
+ return translatedValue
+ }
+
+ /**
+ * Translate a property from its numerical value into its string representation
+ *
+ * @param intFlags Property value
+ * @param annotationType IntDef type to use
+ */
+ private static getIntFlagsAsStrings(intFlags: any, annotationType: string) {
+ const flags = [];
+
+ const mapping = intDefMapping[annotationType].values;
+ const knownFlagValues = Object.keys(mapping).reverse().map(x => parseInt(x));
+
+ if (mapping.length == 0) {
+ console.warn("No mapping for type", annotationType)
+ return intFlags + ""
+ }
+
+ // Will only contain bits that have not been associated with a flag.
+ const parsedIntFlags = parseInt(intFlags);
+ let leftOver = parsedIntFlags;
+
+ for (const flagValue of knownFlagValues) {
+ if (((leftOver & flagValue) && ((intFlags & flagValue) === flagValue))
+ || (parsedIntFlags === 0 && flagValue === 0)) {
+ flags.push(mapping[flagValue]);
+
+ leftOver = leftOver & ~flagValue;
+ }
+ }
+
+ if (flags.length === 0) {
+ console.error('No valid flag mappings found for ',
+ intFlags, 'of type', annotationType);
+ }
+
+ if (leftOver) {
+ // If 0 is a valid flag value that isn't in the intDefMapping
+ // it will be ignored
+ flags.push(leftOver);
+ }
+
+ return flags.join(' | ');
+ }
+} \ No newline at end of file
diff --git a/tools/winscope/src/flickerlib/README.md b/tools/winscope/src/flickerlib/README.md
new file mode 100644
index 000000000..79cbbe6c4
--- /dev/null
+++ b/tools/winscope/src/flickerlib/README.md
@@ -0,0 +1,12 @@
+This directory contains all the code extending the common Flicker library
+to make it fully compatible with Winscope. The common Flicker library is
+written is Kotlin and compiled to JavaScript and then extended by the code in
+this directory.
+
+To use flickerlib in the rest of the Winscope source code use
+`import { ... } from '@/flickerlib'` rather than importing the compiled
+common Flicker library directly.
+
+The flickerlib classes are extended through mixins (functions, getter, and
+setters) that are injected into the original compiled common Flicker library
+classes. \ No newline at end of file
diff --git a/tools/winscope/src/flickerlib/WindowManagerState.ts b/tools/winscope/src/flickerlib/WindowManagerState.ts
new file mode 100644
index 000000000..0537e71ee
--- /dev/null
+++ b/tools/winscope/src/flickerlib/WindowManagerState.ts
@@ -0,0 +1,114 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { asRawTreeViewObject } from '../utils/diff.js'
+import { getPropertiesForDisplay } from './mixin'
+
+import {
+ KeyguardControllerState,
+ RootWindowContainer,
+ WindowManagerPolicy,
+ WindowManagerState
+} from "./common"
+
+import WindowContainer from "./windows/WindowContainer"
+
+WindowManagerState.fromProto = function ({proto, timestamp = 0, where = ""}): WindowManagerState {
+ var inputMethodWIndowAppToken = ""
+ if (proto.inputMethodWindow != null) {
+ proto.inputMethodWindow.hashCode.toString(16)
+ }
+ const rootWindowContainer = newRootWindowContainer(proto.rootWindowContainer)
+ const keyguardControllerState = newKeyguardControllerState(
+ proto.rootWindowContainer.keyguardController)
+ const entry = new WindowManagerState(
+ where,
+ newWindowManagerPolicy(proto.policy),
+ proto.focusedApp,
+ proto.focusedDisplayId,
+ proto.focusedWindow?.title ?? "",
+ inputMethodWIndowAppToken,
+ proto.rootWindowContainer.isHomeRecentsComponent,
+ proto.displayFrozen,
+ proto.rootWindowContainer.pendingActivities.map(it => it.title),
+ rootWindowContainer,
+ keyguardControllerState,
+ timestamp = timestamp
+ )
+
+ entry.kind = entry.constructor.name
+ entry.rects = entry.windowStates.reverse().map(it => it.rect)
+ if (!entry.isComplete()) {
+ entry.isIncompleteReason = entry.getIsIncompleteReason()
+ }
+ entry.obj = getPropertiesForDisplay(proto, entry)
+ entry.shortName = entry.name
+ entry.chips = []
+ entry.visible = true
+ entry.rawTreeViewObject = asRawTreeViewObject(entry)
+
+ console.warn("Created ", entry.kind, " stableId=", entry.stableId)
+ return entry
+}
+
+function newWindowManagerPolicy(proto): WindowManagerPolicy {
+ return new WindowManagerPolicy(
+ proto.focusedAppToken || "",
+ proto.forceStatusBar,
+ proto.forceStatusBarFromKeyguard,
+ proto.keyguardDrawComplete,
+ proto.keyguardOccluded,
+ proto.keyguardOccludedChanged,
+ proto.keyguardOccludedPending,
+ proto.lastSystemUiFlags,
+ proto.orientation,
+ proto.rotation,
+ proto.rotationMode,
+ proto.screenOnFully,
+ proto.windowManagerDrawComplete
+ )
+}
+
+function newRootWindowContainer(proto): RootWindowContainer {
+ const children = proto.windowContainer.children.reverse()
+ .filter(it => it != null)
+ .map(it => WindowContainer.childrenFromProto(it, /* isActivityInTree */ false))
+ const windowContainer = WindowContainer.fromProto(
+ {proto: proto.windowContainer, children: children})
+ if (windowContainer == null) {
+ throw "Window container should not be null: " + JSON.stringify(proto)
+ }
+ const entry = new RootWindowContainer(windowContainer)
+
+ return entry
+}
+
+function newKeyguardControllerState(proto): KeyguardControllerState {
+ const keyguardOccludedStates = {}
+
+ if (proto) {
+ proto.keyguardOccludedStates.forEach(it =>
+ keyguardOccludedStates[it.displayId] = it.keyguardOccluded)
+ }
+
+ return new KeyguardControllerState(
+ proto?.isAodShowing ?? false,
+ proto?.isKeyguardShowing ?? false,
+ keyguardOccludedStates
+ )
+}
+
+export default WindowManagerState; \ No newline at end of file
diff --git a/tools/winscope/src/flickerlib/WindowManagerTrace.ts b/tools/winscope/src/flickerlib/WindowManagerTrace.ts
new file mode 100644
index 000000000..e8616d9fe
--- /dev/null
+++ b/tools/winscope/src/flickerlib/WindowManagerTrace.ts
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { WindowManagerTrace } from "./common"
+import WindowManagerState from "./WindowManagerState"
+
+WindowManagerTrace.fromProto = function (proto) {
+ const entries = []
+ for (const entryProto of proto.entry) {
+ const transformedEntry = WindowManagerState.fromProto({
+ proto: entryProto.windowManagerService,
+ timestamp: entryProto.elapsedRealtimeNanos,
+ where: entryProto.where})
+
+ entries.push(transformedEntry)
+ }
+ const source = null
+ const sourceChecksum = null
+ return new WindowManagerTrace(entries, source, sourceChecksum)
+}
+
+WindowManagerTrace.fromDump = function(proto): WindowManagerTrace {
+ return WindowManagerState.fromProto({proto: proto})
+}
+
+export default WindowManagerTrace;
diff --git a/tools/winscope/src/flickerlib/common.js b/tools/winscope/src/flickerlib/common.js
new file mode 100644
index 000000000..7e329f18e
--- /dev/null
+++ b/tools/winscope/src/flickerlib/common.js
@@ -0,0 +1,163 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Imports all the compiled common Flicker library classes and exports them
+// as clean es6 modules rather than having them be commonjs modules
+
+const WindowManagerTrace = require('flicker').com.android.server.wm.traces.common.
+ windowmanager.WindowManagerTrace;
+const WindowManagerState = require('flicker').com.android.server.wm.traces.common.
+ windowmanager.WindowManagerState;
+
+const Activity = require('flicker').com.android.server.wm.traces.common.
+ windowmanager.windows.Activity;
+const ActivityTask = require('flicker').com.android.server.wm.traces.common.
+ windowmanager.windows.ActivityTask;
+const Configuration = require('flicker').com.android.server.wm.traces.common.
+ windowmanager.windows.Configuration;
+const ConfigurationContainer = require('flicker').com.android.server.wm.traces.common.
+ windowmanager.windows.ConfigurationContainer;
+const DisplayArea = require('flicker').com.android.server.wm.traces.common.
+ windowmanager.windows.DisplayArea;
+const DisplayContent = require('flicker').com.android.server.wm.traces.common.
+ windowmanager.windows.DisplayContent;
+const KeyguardControllerState = require('flicker').com.android.server.wm.traces.common.
+ windowmanager.windows.KeyguardControllerState;
+const RootWindowContainer = require('flicker').com.android.server.wm.traces.common.
+ windowmanager.windows.RootWindowContainer;
+const WindowConfiguration = require('flicker').com.android.server.wm.traces.common.
+ windowmanager.windows.WindowConfiguration;
+const WindowContainer = require('flicker').com.android.server.wm.traces.common.
+ windowmanager.windows.WindowContainer;
+const WindowLayoutParams= require('flicker').com.android.server.wm.traces.common.
+ windowmanager.windows.WindowLayoutParams;
+const WindowManagerPolicy = require('flicker').com.android.server.wm.traces.common.
+ windowmanager.windows.WindowManagerPolicy;
+const WindowState = require('flicker').com.android.server.wm.traces.common.
+ windowmanager.windows.WindowState;
+const WindowToken = require('flicker').com.android.server.wm.traces.common.
+ windowmanager.windows.WindowToken;
+
+const Matrix = require('flicker').com.android.server.wm.traces.common.layers.Transform.Matrix;
+const Transform = require('flicker').com.android.server.wm.traces.common.layers.Transform;
+
+const Bounds = require('flicker').com.android.server.wm.traces.common.Bounds;
+const Buffer = require('flicker').com.android.server.wm.traces.common.Buffer;
+const Color = require('flicker').com.android.server.wm.traces.common.Color;
+const Point = require('flicker').com.android.server.wm.traces.common.Point;
+const Rect = require('flicker').com.android.server.wm.traces.common.Rect;
+const RectF = require('flicker').com.android.server.wm.traces.common.RectF;
+const Region = require('flicker').com.android.server.wm.traces.common.Region;
+
+function toBounds(proto) {
+ if (proto == null) {
+ return null
+ }
+ return new Bounds(proto.width ?? proto.w ?? 0, proto.height ?? proto.h ?? 0)
+}
+
+function toBuffer(proto) {
+ if (proto == null) {
+ return null
+ }
+ return new Buffer(proto.width ?? 0, proto.height ?? 0, proto.stride ?? 0, proto.format ?? 0)
+}
+
+function toColor(proto) {
+ if (proto == null) {
+ return null
+ }
+ return new Color(proto.r ?? 0, proto.g ?? 0, proto.b ?? 0, proto.a ?? 0)
+}
+
+function toPoint(proto) {
+ if (proto == null) {
+ return null
+ }
+ return new Point(proto.x ?? 0, proto.y ?? 0)
+}
+
+function toRect(proto) {
+ if (proto == null) {
+ return null
+ }
+ return new Rect(proto.left ?? 0, proto.top ?? 0, proto.right ?? 0, proto.bottom ?? 0)
+}
+
+function toRectF(proto) {
+ if (proto == null) {
+ return null
+ }
+ return new RectF(proto.left ?? 0, proto.top ?? 0, proto.right ?? 0, proto.bottom ?? 0)
+}
+
+function toRegion(proto) {
+ if (proto == null) {
+ return null
+ }
+
+ let rects = []
+ for (let rectNr in proto.rect) {
+ const rect = proto.rect[rectNr]
+ const parsedRect = toRect(rect)
+ rects.push(parsedRect)
+ }
+
+ return new Region(rects)
+}
+
+function toTransform(proto) {
+ if (proto == null) {
+ return null
+ }
+ const matrix = new Matrix(proto.dsdx ?? 0, proto.dtdx ?? 0,
+ proto.tx ?? 0, proto.dsdy ?? 0, proto.dtdy ?? 0, proto.ty ?? 0)
+ return new Transform(proto.type ?? 0, matrix)
+}
+
+export {
+ Activity,
+ ActivityTask,
+ Configuration,
+ ConfigurationContainer,
+ DisplayArea,
+ DisplayContent,
+ KeyguardControllerState,
+ RootWindowContainer,
+ WindowConfiguration,
+ WindowContainer,
+ WindowState,
+ WindowToken,
+ WindowLayoutParams,
+ WindowManagerPolicy,
+ WindowManagerTrace,
+ WindowManagerState,
+ Bounds,
+ Buffer,
+ Color,
+ Point,
+ Rect,
+ RectF,
+ Region,
+ toBounds,
+ toBuffer,
+ toColor,
+ toPoint,
+ toRect,
+ toRectF,
+ toRegion,
+ toTransform
+};
diff --git a/tools/winscope/src/flickerlib/index.js b/tools/winscope/src/flickerlib/index.js
new file mode 100644
index 000000000..f72635dd1
--- /dev/null
+++ b/tools/winscope/src/flickerlib/index.js
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import WindowManagerState from './WindowManagerState';
+import WindowManagerTrace from './WindowManagerTrace';
+
+/**
+ * Entry point into the flickerlib for Winscope.
+ * Expose everything we want Winscope to have access to here.
+ */
+export {WindowManagerState, WindowManagerTrace};
+
diff --git a/tools/winscope/src/flickerlib/mixin.ts b/tools/winscope/src/flickerlib/mixin.ts
new file mode 100644
index 000000000..3672e1e41
--- /dev/null
+++ b/tools/winscope/src/flickerlib/mixin.ts
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import ObjectFormatter from "./ObjectFormatter"
+
+/**
+ * Get the properties of a WM object for display.
+ *
+ * @param entry WM hierarchy element
+ * @param proto Associated proto object
+ */
+export function getPropertiesForDisplay(proto: any, entry: any): any {
+ let obj = Object.assign({}, entry)
+ if (obj.children) delete obj.children
+ // obj = ObjectFormatter.format(obj)
+
+ obj.proto = Object.assign({}, proto)
+ if (obj.proto.children) delete obj.proto.children
+ if (obj.proto.childWindows) delete obj.proto.childWindows
+ if (obj.proto.childrenWindows) delete obj.proto.childrenWindows
+ if (obj.proto.childContainers) delete obj.proto.childContainers
+ if (obj.proto.windowToken) delete obj.proto.windowToken
+ if (obj.proto.rootDisplayArea) delete obj.proto.rootDisplayArea
+ if (obj.proto.rootWindowContainer) delete obj.proto.rootWindowContainer
+ if (obj.proto.windowContainer?.children) delete obj.proto.windowContainer.children
+ obj = ObjectFormatter.format(obj)
+
+ return obj
+}
+
+export function shortenName(name: any): string {
+ const classParts = (name + "").split(".")
+ if (classParts.length <= 3) {
+ return name
+ }
+ const className = classParts.slice(-1)[0] // last element
+ return `${classParts[0]}.${classParts[1]}.(...).${className}`
+}
diff --git a/tools/winscope/src/flickerlib/treeview/Chip.ts b/tools/winscope/src/flickerlib/treeview/Chip.ts
new file mode 100644
index 000000000..30f1c839b
--- /dev/null
+++ b/tools/winscope/src/flickerlib/treeview/Chip.ts
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import ChipType from "./ChipType"
+
+export default class Chip {
+ short: String
+ long: String
+ type: ChipType
+
+ constructor(short: String, long: String, type: ChipType) {
+ this.short = short
+ this.long = long
+ this.type = type
+ }
+} \ No newline at end of file
diff --git a/tools/winscope/src/flickerlib/treeview/ChipType.ts b/tools/winscope/src/flickerlib/treeview/ChipType.ts
new file mode 100644
index 000000000..70c25d7f3
--- /dev/null
+++ b/tools/winscope/src/flickerlib/treeview/ChipType.ts
@@ -0,0 +1,21 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+enum ChipType {
+ DEFAULT = 'default'
+}
+
+export default ChipType \ No newline at end of file
diff --git a/tools/winscope/src/flickerlib/treeview/Chips.ts b/tools/winscope/src/flickerlib/treeview/Chips.ts
new file mode 100644
index 000000000..8e1ebd1d1
--- /dev/null
+++ b/tools/winscope/src/flickerlib/treeview/Chips.ts
@@ -0,0 +1,20 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import Chip from "./Chip"
+import ChipType from "./ChipType"
+
+export const VISIBLE_CHIP = new Chip("V", "visible", ChipType.DEFAULT) \ No newline at end of file
diff --git a/tools/winscope/src/flickerlib/treeview/IClickableTreeViewElement.ts b/tools/winscope/src/flickerlib/treeview/IClickableTreeViewElement.ts
new file mode 100644
index 000000000..7b869cd1b
--- /dev/null
+++ b/tools/winscope/src/flickerlib/treeview/IClickableTreeViewElement.ts
@@ -0,0 +1,21 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import ITreeViewElement from "./ITreeViewElement"
+
+export default interface IClickableTreeViewElement extends ITreeViewElement {
+ obj: any
+} \ No newline at end of file
diff --git a/tools/winscope/src/flickerlib/treeview/ITreeViewElement.ts b/tools/winscope/src/flickerlib/treeview/ITreeViewElement.ts
new file mode 100644
index 000000000..8e5ab7406
--- /dev/null
+++ b/tools/winscope/src/flickerlib/treeview/ITreeViewElement.ts
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import Chip from "./Chip"
+import { TreeViewObject } from "./types"
+
+export default interface ITreeViewElement {
+ kind: String
+ name: String
+ shortName: String
+ stableId: Number | String
+ chips: Chip[]
+ children: ITreeViewElement[]
+
+ // This is used for compatibility with the "legacy" Winscope infrastructure
+ // where a class object would cause things to not work properly so this should
+ // return a raw javascript object with the relevant information.
+ // IMPORTANT: The implementation of this function should always return the
+ // same object every time it is called and not generate a new object.
+ asRawTreeViewObject(): TreeViewObject
+} \ No newline at end of file
diff --git a/tools/winscope/src/flickerlib/treeview/types.ts b/tools/winscope/src/flickerlib/treeview/types.ts
new file mode 100644
index 000000000..1c5c942bf
--- /dev/null
+++ b/tools/winscope/src/flickerlib/treeview/types.ts
@@ -0,0 +1,12 @@
+import Chip from './Chip'
+
+export type TreeViewObject = {
+ kind: String
+ name: String
+ shortName: String
+ stableId: String | Number
+ chips: Chip[]
+ obj: any
+ children: TreeViewObject[]
+ ref: any
+} \ No newline at end of file
diff --git a/tools/winscope/src/flickerlib/windows/Activity.ts b/tools/winscope/src/flickerlib/windows/Activity.ts
new file mode 100644
index 000000000..6192c67c1
--- /dev/null
+++ b/tools/winscope/src/flickerlib/windows/Activity.ts
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { getPropertiesForDisplay, shortenName } from '../mixin'
+import { asRawTreeViewObject } from '../../utils/diff.js'
+import { Activity } from "../common"
+import WindowContainer from "./WindowContainer"
+
+Activity.fromProto = function (proto): Activity {
+ if (proto == null) {
+ return null
+ } else {
+ const children = proto.windowToken.windowContainer.children.reverse()
+ .filter(it => it != null)
+ .map(it => WindowContainer.childrenFromProto(it, /* isActivityInTree */ true))
+ const windowContainer = WindowContainer.fromProto({proto: proto.windowToken.windowContainer,
+ children: children, identifierOverride: proto.identifier})
+ if (windowContainer == null) {
+ throw "Window container should not be null: " + JSON.stringify(proto)
+ }
+ const entry = new Activity(
+ proto.name,
+ proto.state,
+ proto.visible,
+ proto.frontOfTask,
+ proto.procId,
+ proto.translucent,
+ windowContainer
+ )
+
+ entry.obj = getPropertiesForDisplay(proto, entry)
+ entry.kind = entry.constructor.name
+ entry.shortName = shortenName(entry.name)
+ entry.rawTreeViewObject = asRawTreeViewObject(entry)
+
+ console.warn("Created ", entry.kind, " stableId=", entry.stableId)
+ return entry
+ }
+}
+
+export default Activity
diff --git a/tools/winscope/src/flickerlib/windows/ActivityTask.ts b/tools/winscope/src/flickerlib/windows/ActivityTask.ts
new file mode 100644
index 000000000..b29aa793a
--- /dev/null
+++ b/tools/winscope/src/flickerlib/windows/ActivityTask.ts
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { getPropertiesForDisplay, shortenName } from '../mixin'
+import { asRawTreeViewObject } from '../../utils/diff.js'
+import { ActivityTask, toRect } from "../common"
+import WindowContainer from "./WindowContainer"
+
+ActivityTask.fromProto = function (proto, isActivityInTree: Boolean): ActivityTask {
+ if (proto == null) {
+ return null
+ } else {
+ const children = proto.windowContainer.children.reverse()
+ .filter(it => it != null)
+ .map(it => WindowContainer.childrenFromProto(it, isActivityInTree))
+ const windowContainer = WindowContainer.fromProto({proto: proto.windowContainer,
+ children: children})
+ if (windowContainer == null) {
+ throw "Window container should not be null: " + JSON.stringify(proto)
+ }
+ const entry = new ActivityTask(
+ proto.activityType,
+ proto.fillsParent,
+ toRect(proto.bounds),
+ proto.id,
+ proto.rootTaskId,
+ proto.displayId,
+ toRect(proto.lastNonFullscreenBounds),
+ proto.realActivity,
+ proto.origActivity,
+ proto.resizeMode,
+ proto.resumedActivity?.title ?? "",
+ proto.animatingBounds,
+ proto.surfaceWidth,
+ proto.surfaceHeight,
+ proto.createdByOrganizer,
+ proto.minWidth,
+ proto.minHeight,
+ windowContainer
+ )
+
+ entry.obj = getPropertiesForDisplay(proto, entry)
+ entry.kind = entry.constructor.name
+ entry.shortName = shortenName(entry.name)
+ entry.rawTreeViewObject = asRawTreeViewObject(entry)
+
+ console.warn("Created ", entry.kind, " stableId=", entry.stableId)
+ return entry
+ }
+}
+
+export default ActivityTask
diff --git a/tools/winscope/src/flickerlib/windows/DisplayArea.ts b/tools/winscope/src/flickerlib/windows/DisplayArea.ts
new file mode 100644
index 000000000..e992f426d
--- /dev/null
+++ b/tools/winscope/src/flickerlib/windows/DisplayArea.ts
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { getPropertiesForDisplay, shortenName } from '../mixin'
+import { asRawTreeViewObject } from '../../utils/diff.js'
+import { DisplayArea } from "../common"
+import WindowContainer from "./WindowContainer"
+
+DisplayArea.fromProto = function (proto, isActivityInTree: Boolean): DisplayArea {
+ if (proto == null) {
+ return null
+ } else {
+ const children = proto.windowContainer.children.reverse()
+ .filter(it => it != null)
+ .map(it => WindowContainer.childrenFromProto(it, isActivityInTree))
+ const windowContainer = WindowContainer.fromProto({proto: proto.windowContainer,
+ children: children, nameOverride: proto.name})
+ if (windowContainer == null) {
+ throw "Window container should not be null: " + JSON.stringify(proto)
+ }
+ const entry = new DisplayArea(proto.isTaskDisplayArea, windowContainer)
+
+ entry.obj = getPropertiesForDisplay(proto, entry)
+ entry.kind = entry.constructor.name
+ entry.shortName = shortenName(entry.name)
+ entry.rawTreeViewObject = asRawTreeViewObject(entry)
+
+ console.warn("Created ", entry.kind, " stableId=", entry.stableId)
+ return entry
+ }
+}
+
+export default DisplayArea
diff --git a/tools/winscope/src/flickerlib/windows/DisplayContent.ts b/tools/winscope/src/flickerlib/windows/DisplayContent.ts
new file mode 100644
index 000000000..41efb1ee5
--- /dev/null
+++ b/tools/winscope/src/flickerlib/windows/DisplayContent.ts
@@ -0,0 +1,74 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { getPropertiesForDisplay, shortenName } from '../mixin'
+import { asRawTreeViewObject } from '../../utils/diff.js'
+import { toRect, DisplayContent, Rect } from "../common"
+import WindowContainer from "./WindowContainer"
+
+DisplayContent.fromProto = function (proto, isActivityInTree: Boolean): DisplayContent {
+ if (proto == null) {
+ return null
+ } else {
+ const children = proto.rootDisplayArea.windowContainer.children.reverse()
+ .filter(it => it != null)
+ .map(it => WindowContainer.childrenFromProto(it, isActivityInTree))
+ const windowContainer = WindowContainer.fromProto({proto: proto.rootDisplayArea.windowContainer,
+ children: children, nameOverride: proto.displayInfo?.name ?? null})
+ if (windowContainer == null) {
+ throw "Window container should not be null: " + JSON.stringify(proto)
+ }
+
+ const displayRectWidth = proto.displayInfo?.logicalWidth ?? 0
+ const displayRectHeight = proto.displayInfo?.logicalHeight ?? 0
+ const appRectWidth = proto.displayInfo?.appWidth ?? 0
+ const appRectHeight = proto.displayInfo?.appHeight ?? 0
+
+ const defaultBounds = proto.pinnedStackController?.defaultBounds ?? null
+ const movementBounds = proto.pinnedStackController?.movementBounds ?? null
+
+ const entry = new DisplayContent(
+ proto.id,
+ proto.focusedRootTaskId,
+ proto.resumedActivity?.title ?? "",
+ proto.singleTaskInstance,
+ toRect(defaultBounds),
+ toRect(movementBounds),
+ new Rect(0, 0, displayRectWidth, displayRectHeight),
+ new Rect(0, 0, appRectWidth, appRectHeight),
+ proto.dpi,
+ proto.displayInfo?.flags ?? 0,
+ toRect(proto.displayFrames?.stableBounds),
+ proto.surfaceSize,
+ proto.focusedApp,
+ proto.appTransition?.lastUsedAppTransition ?? "",
+ proto.appTransition?.appTransitionState ?? "",
+ proto.displayRotation?.rotation ?? 0,
+ proto.displayRotation?.lastOrientation ?? 0,
+ windowContainer
+ )
+
+ entry.obj = getPropertiesForDisplay(proto, entry)
+ entry.kind = entry.constructor.name
+ entry.shortName = shortenName(entry.name)
+ entry.rawTreeViewObject = asRawTreeViewObject(entry)
+
+ console.warn("Created ", entry.kind, " stableId=", entry.stableId)
+ return entry
+ }
+}
+
+export default DisplayContent
diff --git a/tools/winscope/src/flickerlib/windows/WindowContainer.ts b/tools/winscope/src/flickerlib/windows/WindowContainer.ts
new file mode 100644
index 000000000..756494573
--- /dev/null
+++ b/tools/winscope/src/flickerlib/windows/WindowContainer.ts
@@ -0,0 +1,123 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { getPropertiesForDisplay, shortenName } from '../mixin'
+import { asRawTreeViewObject } from '../../utils/diff.js'
+
+import {
+ Configuration,
+ ConfigurationContainer,
+ toRect,
+ WindowConfiguration,
+ WindowContainer,
+ WindowContainerChild,
+ } from "../common"
+
+import Activity from "./Activity"
+import DisplayArea from "./DisplayArea"
+import DisplayContent from "./DisplayContent"
+import ActivityTask from "./ActivityTask"
+import WindowState from "./WindowState"
+import WindowToken from "./WindowToken"
+
+WindowContainer.fromProto = function ({
+ proto,
+ children,
+ nameOverride = null,
+ identifierOverride = null,
+ tokenOverride = null
+}): WindowContainer {
+ if (proto == null) {
+ return null
+ }
+ const identifier = identifierOverride ?? proto.identifier
+ var name = nameOverride ?? identifier?.title ?? ""
+ var token = tokenOverride?.toString(16) ?? identifier?.hashCode?.toString(16) ?? ""
+
+ const config = newConfigurationContainer(proto.configurationContainer)
+ const entry = new WindowContainer(
+ name,
+ token,
+ proto.orientation,
+ proto.visible,
+ config,
+ children
+ )
+
+ // we remove the children property from the object to avoid it showing the
+ // the properties view of the element as we can always see those elements'
+ // properties by changing the target element in the hierarchy tree view.
+ entry.obj = getPropertiesForDisplay(proto, entry)
+ entry.kind = entry.constructor.name
+ entry.shortName = shortenName(entry.name)
+ entry.rawTreeViewObject = asRawTreeViewObject(entry)
+ return entry
+}
+
+WindowContainer.childrenFromProto = function(proto, isActivityInTree: Boolean): WindowContainerChild {
+ return DisplayContent.fromProto(proto.displayContent, isActivityInTree) ??
+ DisplayArea.fromProto(proto.displayArea, isActivityInTree) ??
+ ActivityTask.fromProto(proto.task, isActivityInTree) ??
+ Activity.fromProto(proto.activity) ??
+ WindowToken.fromProto(proto.windowToken, isActivityInTree) ??
+ WindowState.fromProto(proto.window, isActivityInTree) ??
+ WindowContainer.fromProto({proto: proto.windowContainer})
+}
+
+function newConfigurationContainer(proto): ConfigurationContainer {
+ const entry = new ConfigurationContainer(
+ newConfiguration(proto?.overrideConfiguration ?? null),
+ newConfiguration(proto?.fullConfiguration ?? null),
+ newConfiguration(proto?.mergedOverrideConfiguration ?? null)
+ )
+
+ entry.obj = entry
+ return entry
+}
+
+function newConfiguration(proto): Configuration {
+ if (proto == null) {
+ return null
+ }
+ var windowConfiguration = null
+
+ if (proto != null && proto.windowConfiguration != null) {
+ windowConfiguration = newWindowConfiguration(proto.windowConfiguration)
+ }
+
+ return new Configuration(
+ windowConfiguration,
+ proto?.densityDpi ?? 0,
+ proto?.orientation ?? 0,
+ proto?.screenHeightDp ?? 0,
+ proto?.screenHeightDp ?? 0,
+ proto?.smallestScreenWidthDp ?? 0,
+ proto?.screenLayout ?? 0,
+ proto?.uiMode ?? 0
+ )
+}
+
+function newWindowConfiguration(proto): WindowConfiguration {
+ return new WindowConfiguration(
+ toRect(proto.appBounds),
+ toRect(proto.bounds),
+ toRect(proto.maxBounds),
+ proto.windowingMode,
+ proto.activityType
+ )
+}
+
+export default WindowContainer
diff --git a/tools/winscope/src/flickerlib/windows/WindowState.ts b/tools/winscope/src/flickerlib/windows/WindowState.ts
new file mode 100644
index 000000000..d2eb5655e
--- /dev/null
+++ b/tools/winscope/src/flickerlib/windows/WindowState.ts
@@ -0,0 +1,127 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { getPropertiesForDisplay, shortenName } from '../mixin'
+import { asRawTreeViewObject } from '../../utils/diff.js'
+import { toRect, Bounds, WindowState, WindowLayoutParams } from "../common"
+import { VISIBLE_CHIP } from '../treeview/Chips'
+import WindowContainer from "./WindowContainer"
+
+ WindowState.fromProto = function (proto, isActivityInTree: Boolean): WindowState {
+ if (proto == null) {
+ return null
+ } else {
+ const identifierName = proto.windowContainer.identifier?.title ?? proto.identifier?.title ?? ""
+ var windowType = 0
+ if (identifierName.startsWith(WindowState.STARTING_WINDOW_PREFIX)) {
+ windowType = WindowState.WINDOW_TYPE_STARTING
+ } else if (proto.animatingExit) {
+ windowType = WindowState.WINDOW_TYPE_EXITING
+ } else if (identifierName.startsWith(WindowState.DEBUGGER_WINDOW_PREFIX)) {
+ windowType = WindowState.WINDOW_TYPE_STARTING
+ }
+
+ var nameOverride = identifierName
+
+ if (identifierName.startsWith(WindowState.STARTING_WINDOW_PREFIX)) {
+ nameOverride = identifierName.substring(WindowState.STARTING_WINDOW_PREFIX.length)
+ } else if (identifierName.startsWith(WindowState.DEBUGGER_WINDOW_PREFIX)) {
+ nameOverride = identifierName.substring(WindowState.DEBUGGER_WINDOW_PREFIX.length)
+ }
+
+ const children = proto.windowContainer.children.reverse()
+ .filter(it => it != null)
+ .map(it => WindowContainer.childrenFromProto(it, isActivityInTree))
+
+ const windowContainer = WindowContainer.fromProto({
+ proto: proto.windowContainer,
+ children: children,
+ nameOverride: nameOverride,
+ identifierOverride: proto.identifier})
+ if (windowContainer == null) {
+ throw "Window container should not be null: " + JSON.stringify(proto)
+ }
+
+ const entry = new WindowState(
+ newWindowLayoutParams(proto.attributes),
+ proto.displayId,
+ proto.stackId,
+ proto.animator?.surface?.layer ?? 0,
+ proto.animator?.surface?.shown ?? false,
+ windowType,
+ new Bounds(proto.requestedWidth, proto.requestedHeight),
+ toRect(proto.surfacePosition),
+ toRect(proto.windowFrames?.frame ?? null),
+ toRect(proto.windowFrames?.containingFrame ?? null),
+ toRect(proto.windowFrames?.parentFrame ?? null),
+ toRect(proto.windowFrames?.contentFrame ?? null),
+ toRect(proto.windowFrames?.contentInsets ?? null),
+ toRect(proto.surfaceInsets),
+ toRect(proto.givenContentInsets),
+ toRect(proto.animator?.lastClipRect ?? null),
+ windowContainer,
+ /* isAppWindow */ isActivityInTree
+ )
+
+ entry.kind = entry.constructor.name
+ entry.rect = entry.frame
+ entry.rect.ref = entry
+ entry.rect.label = entry.name
+ entry.obj = getPropertiesForDisplay(proto, entry)
+ entry.shortName = shortenName(entry.name)
+ entry.visible = entry.isVisible ?? false
+ entry.chips = entry.isVisible ? [VISIBLE_CHIP] : []
+ entry.rawTreeViewObject = asRawTreeViewObject(entry)
+ return entry
+ }
+}
+
+function newWindowLayoutParams(proto): WindowLayoutParams {
+ return new WindowLayoutParams(
+ /* type */ proto?.type ?? 0,
+ /* x */ proto?.x ?? 0,
+ /* y */ proto?.y ?? 0,
+ /* width */ proto?.width ?? 0,
+ /* height */ proto?.height ?? 0,
+ /* horizontalMargin */ proto?.horizontalMargin ?? 0,
+ /* verticalMargin */ proto?.verticalMargin ?? 0,
+ /* gravity */ proto?.gravity ?? 0,
+ /* softInputMode */ proto?.softInputMode ?? 0,
+ /* format */ proto?.format ?? 0,
+ /* windowAnimations */ proto?.windowAnimations ?? 0,
+ /* alpha */ proto?.alpha ?? 0,
+ /* screenBrightness */ proto?.screenBrightness ?? 0,
+ /* buttonBrightness */ proto?.buttonBrightness ?? 0,
+ /* rotationAnimation */ proto?.rotationAnimation ?? 0,
+ /* preferredRefreshRate */ proto?.preferredRefreshRate ?? 0,
+ /* preferredDisplayModeId */ proto?.preferredDisplayModeId ?? 0,
+ /* hasSystemUiListeners */ proto?.hasSystemUiListeners ?? false,
+ /* inputFeatureFlags */ proto?.inputFeatureFlags ?? 0,
+ /* userActivityTimeout */ proto?.userActivityTimeout ?? 0,
+ /* colorMode */ proto?.colorMode ?? 0,
+ /* flags */ proto?.flags ?? 0,
+ /* privateFlags */ proto?.privateFlags ?? 0,
+ /* systemUiVisibilityFlags */ proto?.systemUiVisibilityFlags ?? 0,
+ /* subtreeSystemUiVisibilityFlags */ proto?.subtreeSystemUiVisibilityFlags ?? 0,
+ /* appearance */ proto?.appearance ?? 0,
+ /* behavior */ proto?.behavior ?? 0,
+ /* fitInsetsTypes */ proto?.fitInsetsTypes ?? 0,
+ /* fitInsetsSides */ proto?.fitInsetsSides ?? 0,
+ /* fitIgnoreVisibility */ proto?.fitIgnoreVisibility ?? false
+ )
+}
+
+export default WindowState
diff --git a/tools/winscope/src/flickerlib/windows/WindowToken.ts b/tools/winscope/src/flickerlib/windows/WindowToken.ts
new file mode 100644
index 000000000..edc57dd05
--- /dev/null
+++ b/tools/winscope/src/flickerlib/windows/WindowToken.ts
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { getPropertiesForDisplay, shortenName } from '../mixin'
+import { asRawTreeViewObject } from '../../utils/diff.js'
+import { WindowToken } from "../common"
+import WindowContainer from "./WindowContainer"
+
+WindowToken.fromProto = function (proto, isActivityInTree: Boolean): WindowToken {
+ if (proto == null) {
+ return null
+ }
+
+ const children = proto.windowContainer.children.reverse()
+ .filter(it => it != null)
+ .map(it => WindowContainer.childrenFromProto(it, isActivityInTree))
+ const windowContainer = WindowContainer.fromProto({proto: proto.windowContainer,
+ children: children, tokenOverride: proto.hashCode})
+ if (windowContainer == null) {
+ throw "Window container should not be null: " + JSON.stringify(proto)
+ }
+ const entry = new WindowToken(windowContainer)
+ entry.kind = entry.constructor.name
+ entry.obj = getPropertiesForDisplay(proto, entry)
+ entry.shortName = shortenName(entry.name)
+ entry.rawTreeViewObject = asRawTreeViewObject(entry)
+
+ console.warn("Created ", entry.kind, " stableId=", entry.stableId)
+ return entry
+}
+
+export default WindowToken
diff --git a/tools/winscope/src/index_template.html b/tools/winscope/src/index_template.html
index 582fa1071..a7168a1e9 100644
--- a/tools/winscope/src/index_template.html
+++ b/tools/winscope/src/index_template.html
@@ -13,10 +13,11 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<html lang="en">
+<html lang="en" class="md-scrollbar">
<head>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700,400italic">
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
+ <link rel="icon" type="image/svg" href="static/favicon.svg"/>
<meta charset="utf-8">
<title>winscope</title>
diff --git a/tools/winscope/src/main.js b/tools/winscope/src/main.js
index 981a9fee9..9c1816505 100644
--- a/tools/winscope/src/main.js
+++ b/tools/winscope/src/main.js
@@ -15,13 +15,332 @@
*/
import Vue from 'vue'
+import Vuex from 'vuex'
+import VueMaterial from 'vue-material'
+
import App from './App.vue'
+import { TRACE_TYPES, DUMP_TYPES, TRACE_INFO, DUMP_INFO } from './decode.js'
+import { DIRECTION, findLastMatchingSorted, stableIdCompatibilityFixup } from './utils/utils.js'
import 'style-loader!css-loader!vue-material/dist/vue-material.css'
-import VueMaterial from 'vue-material'
-Vue.use(VueMaterial);
+import 'style-loader!css-loader!vue-material/dist/theme/default.css'
+
+Vue.use(Vuex)
+Vue.use(VueMaterial)
+
+// Used to determine the order in which files or displayed
+const fileOrder = {
+ [TRACE_TYPES.WINDOW_MANAGER]: 1,
+ [TRACE_TYPES.SURFACE_FLINGER]: 2,
+ [TRACE_TYPES.TRANSACTION]: 3,
+ [TRACE_TYPES.PROTO_LOG]: 4,
+ [TRACE_TYPES.IME_CLIENTS]: 5,
+ [TRACE_TYPES.IME_SERVICE]: 6,
+ [TRACE_TYPES.IME_MANAGERSERVICE]: 7,
+};
+
+function sortFiles(files) {
+ return files.sort(
+ (a, b) => (fileOrder[a.type] ?? Infinity) - (fileOrder[b.type] ?? Infinity));
+};
+
+/**
+ * Find the smallest timeline timestamp in a list of files
+ * @return undefined if not timestamp exists in the timelines of the files
+ */
+function findSmallestTimestamp(files) {
+ let timestamp = Infinity;
+ for (const file of files) {
+ if (file.timeline[0] && file.timeline[0] < timestamp) {
+ timestamp = file.timeline[0];
+ }
+ }
+
+ return timestamp === Infinity ? undefined : timestamp;
+}
+
+const store = new Vuex.Store({
+ state: {
+ currentTimestamp: 0,
+ traces: {},
+ dumps: {},
+ excludeFromTimeline: [
+ TRACE_TYPES.PROTO_LOG,
+ ],
+ activeFile: null,
+ focusedFile: null,
+ mergedTimeline: null,
+ navigationFilesFilter: f => true,
+ // obj -> bool, identifies whether or not an item is collapsed in a treeView
+ collapsedStateStore: {},
+ },
+ getters: {
+ collapsedStateStoreFor: (state) => (item) => {
+ if (item.stableId === undefined || item.stableId === null) {
+ console.error("Missing stable ID for item", item);
+ throw new Error("Failed to get collapse state of item — missing a stableId");
+ }
+
+ return state.collapsedStateStore[stableIdCompatibilityFixup(item)];
+ },
+ files(state) {
+ return Object.values(state.traces).concat(Object.values(state.dumps));
+ },
+ sortedFiles(state, getters) {
+ return sortFiles(getters.files);
+ },
+ timelineFiles(state, getters) {
+ return Object.values(state.traces)
+ .filter(file => !state.excludeFromTimeline.includes(file.type));
+ },
+ sortedTimelineFiles(state, getters) {
+ return sortFiles(getters.timelineFiles);
+ },
+ video(state) {
+ return state.traces[TRACE_TYPES.SCREEN_RECORDING];
+ },
+ },
+ mutations: {
+ setCurrentTimestamp(state, timestamp) {
+ state.currentTimestamp = timestamp;
+ },
+ setFileEntryIndex(state, { type, entryIndex }) {
+ if (state.traces[type]) {
+ state.traces[type].selectedIndex = entryIndex;
+ } else {
+ throw new Error("Unexpected type — not a trace...");
+ }
+ },
+ setFiles(state, files) {
+ const filesByType = {};
+ for (const file of files) {
+ if (!filesByType[file.type]) {
+ filesByType[file.type] = [];
+ }
+ filesByType[file.type].push(file);
+ }
+
+ // TODO: Extract into smaller functions
+ const traces = {};
+ for (const traceType of Object.values(TRACE_TYPES)) {
+ const traceFiles = {};
+ const typeInfo = TRACE_INFO[traceType];
+
+ for (const traceDataFile of typeInfo.files) {
+
+ const files = filesByType[traceDataFile.type];
+
+ if (!files) {
+ continue;
+ }
+
+ if (traceDataFile.oneOf) {
+ if (files.length > 1) {
+ throw new Error(`More than one file of type ${traceDataFile.type} has been provided`);
+ }
+
+ traceFiles[traceDataFile.type] = files[0];
+ } else if (traceDataFile.manyOf) {
+ traceFiles[traceDataFile.type] = files;
+ } else {
+ throw new Error("Missing oneOf or manyOf property...");
+ }
+ }
+
+ if (Object.keys(traceFiles).length > 0 && typeInfo.constructor) {
+ traces[traceType] = new typeInfo.constructor(traceFiles);
+ }
+ }
+
+ state.traces = traces;
+
+ // TODO: Refactor common code out
+ const dumps = {};
+ for (const dumpType of Object.values(DUMP_TYPES)) {
+ const dumpFiles = {};
+ const typeInfo = DUMP_INFO[dumpType];
+
+ for (const dumpDataFile of typeInfo.files) {
+ const files = filesByType[dumpDataFile.type];
+
+ if (!files) {
+ continue;
+ }
+
+ if (dumpDataFile.oneOf) {
+ if (files.length > 1) {
+ throw new Error(`More than one file of type ${dumpDataFile.type} has been provided`);
+ }
+
+ dumpFiles[dumpDataFile.type] = files[0];
+ } else if (dumpDataFile.manyOf) {
+
+ } else {
+ throw new Error("Missing oneOf or manyOf property...");
+ }
+ }
+
+ if (Object.keys(dumpFiles).length > 0 && typeInfo.constructor) {
+ dumps[dumpType] = new typeInfo.constructor(dumpFiles);
+ }
+
+ }
+
+ state.dumps = dumps;
+
+ if (!state.activeFile && Object.keys(traces).length > 0) {
+ state.activeFile = sortFiles(Object.values(traces))[0];
+ }
+
+ // TODO: Add same for dumps
+ },
+ clearFiles(state) {
+ for (const traceType in state.traces) {
+ if (state.traces.hasOwnProperty(traceType)) {
+ Vue.delete(state.traces, traceType);
+ }
+ }
+
+ for (const dumpType in state.dumps) {
+ if (state.dumps.hasOwnProperty(dumpType)) {
+ Vue.delete(state.dumps, dumpType);
+ }
+ }
+
+ state.activeFile = null;
+ state.mergedTimeline = null;
+ },
+ setActiveFile(state, file) {
+ state.activeFile = file;
+ },
+ setMergedTimeline(state, timeline) {
+ state.mergedTimeline = timeline;
+ },
+ removeMergedTimeline(state, timeline) {
+ state.mergedTimeline = null;
+ },
+ setMergedTimelineIndex(state, newIndex) {
+ state.mergedTimeline.selectedIndex = newIndex;
+ },
+ setCollapsedState(state, { item, isCollapsed }) {
+ if (item.stableId === undefined || item.stableId === null) {
+ return;
+ }
+
+ Vue.set(
+ state.collapsedStateStore,
+ stableIdCompatibilityFixup(item),
+ isCollapsed
+ );
+ },
+ setFocusedFile(state, file) {
+ state.focusedFile = file;
+ },
+ setNavigationFilesFilter(state, filter) {
+ state.navigationFilesFilter = filter;
+ },
+ },
+ actions: {
+ setFiles(context, files) {
+ context.commit('clearFiles');
+ context.commit('setFiles', files);
+
+ const timestamp = findSmallestTimestamp(files);
+ if (timestamp !== undefined) {
+ context.commit('setCurrentTimestamp', timestamp);
+ }
+ },
+ updateTimelineTime(context, timestamp) {
+ for (const file of context.getters.files) {
+ const type = file.type;
+ const entryIndex = findLastMatchingSorted(
+ file.timeline,
+ (array, idx) => parseInt(array[idx]) <= timestamp,
+ );
+
+ context.commit('setFileEntryIndex', { type, entryIndex });
+ }
+
+ if (context.state.mergedTimeline) {
+ const newIndex = findLastMatchingSorted(
+ context.state.mergedTimeline.timeline,
+ (array, idx) => parseInt(array[idx]) <= timestamp,
+ );
+
+ context.commit('setMergedTimelineIndex', newIndex);
+ }
+
+ context.commit('setCurrentTimestamp', timestamp);
+ },
+ advanceTimeline(context, direction) {
+ // NOTE: MergedTimeline is never considered to find the next closest index
+ // MergedTimeline only represented the timelines overlapped together and
+ // isn't considered an actual timeline.
+
+ if (direction !== DIRECTION.FORWARD && direction !== DIRECTION.BACKWARD) {
+ throw new Error("Unsupported direction provided.");
+ }
+
+ const consideredFiles = context.getters.timelineFiles
+ .filter(context.state.navigationFilesFilter);
+
+ let fileIndex = -1;
+ let timelineIndex;
+ let minTimeDiff = Infinity;
+
+ for (let idx = 0; idx < consideredFiles.length; idx++) {
+ const file = consideredFiles[idx];
+
+ let candidateTimestampIndex = file.selectedIndex;
+ let candidateTimestamp = file.timeline[candidateTimestampIndex];
+
+ let candidateCondition;
+ switch (direction) {
+ case DIRECTION.BACKWARD:
+ candidateCondition = () => candidateTimestamp < context.state.currentTimestamp;
+ break;
+ case DIRECTION.FORWARD:
+ candidateCondition = () => candidateTimestamp > context.state.currentTimestamp;
+ break;
+ }
+
+ if (!candidateCondition()) {
+ // Not a candidate — find a valid candidate
+ let noCandidate = false;
+ while (!candidateCondition()) {
+ candidateTimestampIndex += direction;
+ if (candidateTimestampIndex < 0 || candidateTimestampIndex >= file.timeline.length) {
+ noCandidate = true;
+ break;
+ }
+ candidateTimestamp = file.timeline[candidateTimestampIndex];
+ }
+
+ if (noCandidate) {
+ continue;
+ }
+ }
+
+ const timeDiff = Math.abs(candidateTimestamp - context.state.currentTimestamp);
+ if (minTimeDiff > timeDiff) {
+ minTimeDiff = timeDiff;
+ fileIndex = idx;
+ timelineIndex = candidateTimestampIndex;
+ }
+ }
+
+ if (fileIndex >= 0) {
+ const closestFile = consideredFiles[fileIndex];
+ const timestamp = parseInt(closestFile.timeline[timelineIndex]);
+
+ context.dispatch('updateTimelineTime', timestamp);
+ }
+ }
+ }
+})
new Vue({
el: '#app',
+ store, // inject the Vuex store into all components
render: h => h(App)
})
diff --git a/tools/winscope/src/mixins/FileType.js b/tools/winscope/src/mixins/FileType.js
new file mode 100644
index 000000000..b2541b948
--- /dev/null
+++ b/tools/winscope/src/mixins/FileType.js
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import {TRACE_TYPES, DUMP_TYPES} from '@/decode.js';
+
+const mixin = {
+ showInTraceView(file) {
+ return file.type == TRACE_TYPES.WINDOW_MANAGER ||
+ file.type == TRACE_TYPES.SURFACE_FLINGER ||
+ file.type == TRACE_TYPES.WAYLAND ||
+ file.type == TRACE_TYPES.SYSTEM_UI ||
+ file.type == TRACE_TYPES.LAUNCHER ||
+ file.type == TRACE_TYPES.IME_CLIENTS ||
+ file.type == TRACE_TYPES.IME_SERVICE ||
+ file.type == TRACE_TYPES.IME_MANAGERSERVICE ||
+ file.type == DUMP_TYPES.WINDOW_MANAGER ||
+ file.type == DUMP_TYPES.SURFACE_FLINGER ||
+ file.type == DUMP_TYPES.WAYLAND;
+ },
+ showInWindowManagerTraceView(file) {
+ return file.type == TRACE_TYPES.WINDOW_MANAGER ||
+ file.type == DUMP_TYPES.WINDOW_MANAGER;
+ },
+ showInSurfaceFlingerTraceView(file) {
+ return file.type == TRACE_TYPES.SURFACE_FLINGER ||
+ file.type == DUMP_TYPES.SURFACE_FLINGER;
+ },
+ isVideo(file) {
+ return file.type == TRACE_TYPES.SCREEN_RECORDING;
+ },
+ isTransactions(file) {
+ return file.type == TRACE_TYPES.TRANSACTION;
+ },
+ isLog(file) {
+ return file.type == TRACE_TYPES.PROTO_LOG;
+ },
+ hasDataView(file) {
+ return this.isLog(file) || this.showInTraceView(file) ||
+ this.isTransactions(file);
+ },
+};
+
+export {mixin};
+
+export default {
+ name: 'FileType',
+ methods: mixin,
+};
diff --git a/tools/winscope/src/mixins/FocusedDataViewFinder.js b/tools/winscope/src/mixins/FocusedDataViewFinder.js
new file mode 100644
index 000000000..27f341f6d
--- /dev/null
+++ b/tools/winscope/src/mixins/FocusedDataViewFinder.js
@@ -0,0 +1,90 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export default {
+ name: 'FocusedDataViewFinder',
+ created() {
+ document.addEventListener('scroll', this.updateFocusedView);
+ },
+ deleted() {
+ document.removeEventListener('scroll', this.updateFocusedView);
+ },
+ computed: {
+ timelineFiles() {
+ return this.$store.getters.timelineFiles;
+ },
+ },
+ methods: {
+ updateFocusedView() {
+ const positions = this.getDataViewPositions();
+ const focusedFile = this.findFocusedDataView(positions);
+
+ this.$store.commit('setFocusedFile', focusedFile);
+ },
+ getDataViewPositions() {
+ const positions = {};
+
+ for (const file of this.files) {
+ const dataView = this.$refs[file.type];
+ if (!dataView || dataView.length === 0) {
+ continue;
+ }
+
+ const dataViewEl = dataView[0].$el;
+ positions[file.type] = dataViewEl.getBoundingClientRect();
+ }
+
+ return positions;
+ },
+ /**
+ * Returns the file of the DataView that takes up the most of the visible
+ * screen space.
+ * @param {Object} positions A map from filenames to their respective
+ * boundingClientRect.
+ * @return {String} The dataView that is in focus.
+ */
+ findFocusedDataView(positions) {
+ const visibleHeight =
+ Math.max(document.documentElement.clientHeight || 0,
+ window.innerHeight || 0);
+
+ let maxScreenSpace = 0;
+ let focusedDataView = this.files[0];
+ for (const file of this.files) {
+ const pos = positions[file.type];
+ if (!pos) {
+ continue;
+ }
+
+ let screenSpace = 0;
+ if (0 <= pos.top && pos.top <= visibleHeight) {
+ screenSpace = Math.min(visibleHeight, pos.bottom) - pos.top;
+ } else if (0 <= pos.bottom && pos.bottom <= visibleHeight) {
+ screenSpace = pos.bottom - Math.max(0, pos.top);
+ } else if (pos.top <= 0 && pos.bottom >= visibleHeight) {
+ screenSpace = visibleHeight;
+ }
+
+ if (screenSpace >= maxScreenSpace) {
+ maxScreenSpace = screenSpace;
+ focusedDataView = file;
+ }
+ }
+
+ return focusedDataView;
+ },
+ },
+};
diff --git a/tools/winscope/src/mixins/SaveAsZip.js b/tools/winscope/src/mixins/SaveAsZip.js
new file mode 100644
index 000000000..8b8b6e14c
--- /dev/null
+++ b/tools/winscope/src/mixins/SaveAsZip.js
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import JSZip from 'jszip';
+
+export default {
+ name: 'SaveAsZip',
+ methods: {
+ saveAs(blob, filename) {
+ const a = document.createElement('a');
+ a.style = 'display: none';
+ document.body.appendChild(a);
+
+ const url = window.URL.createObjectURL(blob);
+
+ a.href = url;
+ a.download = filename;
+ a.click();
+ window.URL.revokeObjectURL(url);
+
+ document.body.removeChild(a);
+ },
+ async downloadAsZip(traces) {
+ const zip = new JSZip();
+
+ for (const trace of traces) {
+ const traceFolder = zip.folder(trace.type);
+ for (const file of trace.files) {
+ const blob = await fetch(file.blobUrl).then((r) => r.blob());
+ traceFolder.file(file.filename, blob);
+ }
+ }
+
+ const zipFile = await zip.generateAsync({type: 'blob'});
+
+ this.saveAs(zipFile, 'winscope.zip');
+ },
+ },
+};
diff --git a/tools/winscope/src/mixins/Timeline.js b/tools/winscope/src/mixins/Timeline.js
new file mode 100644
index 000000000..1f94e3a1b
--- /dev/null
+++ b/tools/winscope/src/mixins/Timeline.js
@@ -0,0 +1,250 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+/**
+ * Represents a continuous section of the timeline that is rendered into the
+ * timeline svg.
+ */
+class Block {
+ /**
+ * Create a block.
+ * @param {number} startPos - The start position of the block as a percentage
+ * of the timeline width.
+ * @param {number} width - The width of the block as a percentage of the
+ * timeline width.
+ */
+ constructor(startPos, width) {
+ this.startPos = startPos;
+ this.width = width;
+ }
+}
+
+/**
+ * This Mixin should only be injected into components which have the following:
+ * - An element in the template referenced as 'timeline' (this.$refs.timeline).
+ */
+export default {
+ name: 'timeline',
+ props: {
+ /**
+ * A 'timeline' as an array of timestamps
+ */
+ 'timeline': {
+ type: Array,
+ },
+ /**
+ * A scale factor is an array of two elements, the min and max timestamps of
+ * the timeline
+ */
+ 'scale': {
+ type: Array,
+ },
+ },
+ data() {
+ return {
+ /**
+ * Is a number representing the percentage of the timeline a block should
+ * be at a minimum or what percentage of the timeline a single entry takes
+ * up when rendered.
+ */
+ pointWidth: 1,
+ };
+ },
+ computed: {
+ /**
+ * Converts the timeline (list of timestamps) to an array of blocks to be
+ * displayed. This is to have fewer elements in the rendered timeline.
+ * Instead of having one rect for each timestamp in the timeline we only
+ * have one for each continuous segment of the timeline. This is to improve
+ * both the Vue patching step's performance and the DOM rendering
+ * performance.
+ */
+ timelineBlocks() {
+ const blocks = [];
+
+ // The difference in time between two timestamps after which they are no
+ // longer rendered as a continuous segment/block.
+ const overlapDistanceInTs = (this.scale[1] - this.scale[0]) *
+ ((this.crop?.right ?? 1) - (this.crop?.left ?? 0)) *
+ 1 / (100 - this.pointWidth);
+
+ let blockStartTs = this.timeline[0];
+ for (let i = 1; i < this.timeline.length; i++) {
+ const lastTs = this.timeline[i - 1];
+ const ts = this.timeline[i];
+ if (ts - lastTs > overlapDistanceInTs) {
+ const block = this.generateTimelineBlock(blockStartTs, lastTs);
+ blocks.push(block);
+ blockStartTs = ts;
+ }
+ }
+
+ const blockEndTs = this.timeline[this.timeline.length - 1];
+ const block = this.generateTimelineBlock(blockStartTs, blockEndTs);
+ blocks.push(block);
+
+ return Object.freeze(blocks);
+ },
+ },
+ methods: {
+ position(item) {
+ let pos;
+ pos = this.translate(item);
+ pos = this.applyCrop(pos);
+
+ return pos * (100 - this.pointWidth);
+ },
+
+ translate(cx) {
+ const scale = [...this.scale];
+ if (scale[0] >= scale[1]) {
+ return cx;
+ }
+
+ return (cx - scale[0]) / (scale[1] - scale[0]);
+ },
+
+ untranslate(pos) {
+ const scale = [...this.scale];
+ if (scale[0] >= scale[1]) {
+ return pos;
+ }
+
+ return pos * (scale[1] - scale[0]) + scale[0];
+ },
+
+ applyCrop(cx) {
+ if (!this.crop) {
+ return cx;
+ }
+
+ return (cx - this.crop.left) / (this.crop.right - this.crop.left);
+ },
+
+ unapplyCrop(pos) {
+ if (!this.crop) {
+ return pos;
+ }
+
+ return pos * (this.crop.right - this.crop.left) + this.crop.left;
+ },
+
+ /**
+ * Converts a position as a percentage of the timeline width to a timestamp.
+ * @param {number} position - target position as a percentage of the
+ * timeline's width.
+ * @return {number} The index of the closest timestamp in the timeline to
+ * the target position.
+ */
+ positionToTsIndex(position) {
+ let targetTimestamp = position / (100 - this.pointWidth);
+ targetTimestamp = this.unapplyCrop(targetTimestamp);
+ targetTimestamp = this.untranslate(targetTimestamp);
+
+ // The index of the timestamp in the timeline that is closest to the
+ // targetTimestamp.
+ const closestTsIndex = this.findClosestTimestampIndexTo(targetTimestamp);
+
+ return closestTsIndex;
+ },
+
+ indexOfClosestElementTo(target, array) {
+ let smallestDiff = Math.abs(target - array[0]);
+ let closestIndex = 0;
+ for (let i = 1; i < array.length; i++) {
+ const elem = array[i];
+ if (Math.abs(target - elem) < smallestDiff) {
+ closestIndex = i;
+ smallestDiff = Math.abs(target - elem);
+ }
+ }
+
+ return closestIndex;
+ },
+
+ findClosestTimestampIndexTo(ts) {
+ let left = 0;
+ let right = this.timeline.length - 1;
+ let mid = Math.floor((left + right) / 2);
+
+ while (left < right) {
+ if (ts < this.timeline[mid]) {
+ right = mid - 1;
+ } else if (ts > this.timeline[mid]) {
+ left = mid + 1;
+ } else {
+ return mid;
+ }
+ mid = Math.floor((left + right) / 2);
+ }
+
+ const candidateElements = this.timeline.slice(left - 1, right + 2);
+ const closestIndex =
+ this.indexOfClosestElementTo(ts, candidateElements) + (left - 1);
+ return closestIndex;
+ },
+
+ /**
+ * Transforms an absolute position in the timeline to a timestamp present in
+ * the timeline.
+ * @param {number} absolutePosition - Pixels from the left of the timeline.
+ * @return {number} The timestamp in the timeline that is closest to the
+ * target position.
+ */
+ absolutePositionAsTimestamp(absolutePosition) {
+ const timelineWidth = this.$refs.timeline.clientWidth;
+ const position = (absolutePosition / timelineWidth) * 100;
+
+ return this.timeline[this.positionToTsIndex(position)];
+ },
+
+ /**
+ * Handles the block click event.
+ * When a block in the timeline is clicked this function will determine
+ * the target timeline index and update the timeline to match this index.
+ * @param {MouseEvent} e - The mouse event of the click on a timeline block.
+ */
+ onBlockClick(e) {
+ const clickOffset = e.offsetX;
+ const timelineWidth = this.$refs.timeline.clientWidth;
+ const clickOffsetAsPercentage = (clickOffset / timelineWidth) * 100;
+
+ const clickedOnTsIndex =
+ this.positionToTsIndex(clickOffsetAsPercentage - this.pointWidth / 2);
+
+ if (this.disabled) {
+ return;
+ }
+ const timestamp = parseInt(this.timeline[clickedOnTsIndex]);
+ this.$store.dispatch('updateTimelineTime', timestamp);
+ },
+
+ /**
+ * Generate a block object that can be used by the timeline SVG to render
+ * a transformed block that starts at `startTs` and ends at `endTs`.
+ * @param {number} startTs - The timestamp at which the block starts.
+ * @param {number} endTs - The timestamp at which the block ends.
+ * @return {Block} A block object transformed to the timeline's crop and
+ * scale parameter.
+ */
+ generateTimelineBlock(startTs, endTs) {
+ const blockWidth = this.position(endTs) - this.position(startTs) +
+ this.pointWidth;
+ return Object.freeze(new Block(this.position(startTs), blockWidth));
+ },
+ },
+};
diff --git a/tools/winscope/src/sf_visibility.js b/tools/winscope/src/sf_visibility.js
index 3c70e95ee..7ef8837f9 100644
--- a/tools/winscope/src/sf_visibility.js
+++ b/tools/winscope/src/sf_visibility.js
@@ -20,7 +20,7 @@
* composition state (visibleRegion), it will be used otherwise it will be
* derived.
*/
-import { multiply_rect, is_simple_rotation } from './matrix_utils.js'
+import {multiply_rect, is_simple_rotation} from './matrix_utils.js';
// Layer flags
const FLAG_HIDDEN = 0x01;
@@ -29,25 +29,27 @@ const FLAG_SECURE = 0x80;
function flags_to_string(flags) {
if (!flags) return '';
- var verboseFlags = [];
- if (flags & FLAG_HIDDEN) verboseFlags.push("HIDDEN");
- if (flags & FLAG_OPAQUE) verboseFlags.push("OPAQUE");
- if (flags & FLAG_SECURE) verboseFlags.push("SECURE");
- return verboseFlags.join('|') + " (" + flags + ")";
+ const verboseFlags = [];
+ if (flags & FLAG_HIDDEN) verboseFlags.push('HIDDEN');
+ if (flags & FLAG_OPAQUE) verboseFlags.push('OPAQUE');
+ if (flags & FLAG_SECURE) verboseFlags.push('SECURE');
+ return verboseFlags.join('|') + ' (' + flags + ')';
}
function is_empty(region) {
return region == undefined ||
region.rect == undefined ||
region.rect.length == 0 ||
- region.rect.every(function(r) { return is_empty_rect(r) } );
+ region.rect.every(function(r) {
+ return is_empty_rect(r);
+ } );
}
function is_empty_rect(rect) {
- var right = rect.right || 0;
- var left = rect.left || 0;
- var top = rect.top || 0;
- var bottom = rect.bottom || 0;
+ const right = rect.right || 0;
+ const left = rect.left || 0;
+ const top = rect.top || 0;
+ const bottom = rect.bottom || 0;
return (right - left) <= 0 || (bottom - top) <= 0;
}
@@ -73,7 +75,7 @@ function is_rect_empty_and_valid(rect) {
*/
function is_transform_invalid(transform) {
return !transform || (transform.dsdx * transform.dtdy ===
- transform.dtdx * transform.dsdy); //determinant of transform
+ transform.dtdx * transform.dsdy); // determinant of transform
}
function is_opaque(layer) {
@@ -101,21 +103,20 @@ function has_effects(layer) {
// Support newer effect layer
return layer.type === 'EffectLayer' &&
- (fills_color(layer) || draws_shadows(layer) || has_blur(layer))
+ (fills_color(layer) || draws_shadows(layer) || has_blur(layer));
}
function is_hidden_by_policy(layer) {
- return layer.flags & FLAG_HIDDEN == FLAG_HIDDEN ||
+ return layer.flags & FLAG_HIDDEN == FLAG_HIDDEN ||
// offscreen layer root has a unique layer id
layer.id == 0x7FFFFFFD;
}
/**
* Checks if the layer is visible based on its visibleRegion if available
- * or its type, active buffer content, alpha and properties.
+ * or its type, active buffer content, alpha and properties.
*/
function is_visible(layer, hiddenByPolicy, includesCompositionState) {
-
if (includesCompositionState) {
return !is_empty(layer.visibleRegion);
}
@@ -131,7 +132,7 @@ function is_visible(layer, hiddenByPolicy, includesCompositionState) {
if (!layer.color || !layer.color.a || layer.color.a == 0) {
return false;
}
-
+
if (layer.occludedBy && layer.occludedBy.length > 0) {
return false;
}
@@ -143,7 +144,7 @@ function is_visible(layer, hiddenByPolicy, includesCompositionState) {
return true;
}
-function get_visibility_reason(layer) {
+function get_visibility_reason(layer, includesCompositionState) {
if (layer.type === 'ContainerLayer') {
return 'ContainerLayer';
}
@@ -156,7 +157,8 @@ function get_visibility_reason(layer) {
return 'Hidden by parent';
}
- let isBufferLayer = (layer.type === 'BufferStateLayer' || layer.type === 'BufferQueueLayer');
+ const isBufferLayer = (layer.type === 'BufferStateLayer' ||
+ layer.type === 'BufferQueueLayer');
if (isBufferLayer && (!layer.activeBuffer ||
layer.activeBuffer.height === 0 || layer.activeBuffer.width === 0)) {
return 'Buffer is empty';
@@ -170,7 +172,7 @@ function get_visibility_reason(layer) {
return 'Crop is 0x0';
}
- if (!layer.bounds || is_empty_rect(layer.bounds)) {
+ if (!layer.bounds || is_empty_rect(layer.bounds)) {
return 'Bounds is 0x0';
}
@@ -181,17 +183,22 @@ function get_visibility_reason(layer) {
return 'RelativeOf layer has been removed';
}
- let isEffectLayer = (layer.type === 'EffectLayer');
- if (isEffectLayer && !fills_color(layer) && !draws_shadows(layer) && !has_blur(layer)) {
+ const isEffectLayer = (layer.type === 'EffectLayer');
+ if (isEffectLayer && !fills_color(layer) &&
+ !draws_shadows(layer) && !has_blur(layer)) {
return 'Effect layer does not have color fill, shadow or blur';
}
-
+
if (layer.occludedBy && layer.occludedBy.length > 0) {
return 'Layer is occluded by:' + layer.occludedBy.join();
- }
+ }
+
+ if (includesCompositionState && is_empty(layer.visibleRegion)) {
+ return 'Visible region calculated by Composition Engine is empty';
+ }
if (layer.visible) {
- return "Unknown";
+ return 'Unknown';
};
}
@@ -203,7 +210,8 @@ function overlaps(rectA, rectB) {
// Returns true if outer rect contains inner rect
function contains(outerLayer, innerLayer) {
- if (!is_simple_rotation(outerLayer.transform) || !is_simple_rotation(innerLayer.transform)) {
+ if (!is_simple_rotation(outerLayer.transform) ||
+ !is_simple_rotation(innerLayer.transform)) {
return false;
}
const outer = screen_bounds(outerLayer);
@@ -214,67 +222,90 @@ function contains(outerLayer, innerLayer) {
function screen_bounds(layer) {
if (layer.screenBounds) return layer.screenBounds;
- let transformMatrix = layer.transform;
- var tx = layer.position ? layer.position.x || 0 : 0;
- var ty = layer.position ? layer.position.y || 0 : 0;
+ const transformMatrix = layer.transform;
+ const tx = layer.position ? layer.position.x || 0 : 0;
+ const ty = layer.position ? layer.position.y || 0 : 0;
- transformMatrix.tx = tx
- transformMatrix.ty = ty
+ transformMatrix.tx = tx;
+ transformMatrix.ty = ty;
return multiply_rect(transformMatrix, layer.bounds);
}
// Traverse in z-order from top to bottom and fill in occlusion data
function fill_occlusion_state(layerMap, rootLayers, includesCompositionState) {
- const layers = rootLayers.filter(layer => !layer.isRelativeOf);
- traverse_top_to_bottom(layerMap, layers, {opaqueRects:[], transparentRects:[], screenBounds:null}, (layer, globalState) => {
-
- if (layer.name.startsWith("Root#0") && layer.sourceBounds) {
- globalState.screenBounds = {left:0, top:0, bottom:layer.sourceBounds.bottom, right:layer.sourceBounds.right};
+ const layers = rootLayers.filter((layer) => !layer.isRelativeOf);
+ traverse_top_to_bottom(layerMap, layers, {opaqueRects: [], transparentRects: [], screenBounds: null}, (layer, globalState) => {
+ if (layer.name.startsWith('Root#0') && layer.sourceBounds) {
+ globalState.screenBounds = {left: 0, top: 0, bottom: layer.sourceBounds.bottom, right: layer.sourceBounds.right};
}
-
+
const visible = is_visible(layer, layer.hidden, includesCompositionState);
if (visible) {
- let fullyOccludes = (testLayer) => contains(testLayer, layer);
- let partiallyOccludes = (testLayer) => overlaps(screen_bounds(testLayer), screen_bounds(layer));
- let covers = (testLayer) => overlaps(screen_bounds(testLayer), screen_bounds(layer));
-
- layer.occludedBy = globalState.opaqueRects.filter(fullyOccludes).map(layer => layer.id);
- layer.partiallyOccludedBy = globalState.opaqueRects.filter(partiallyOccludes).map(layer => layer.id);
- layer.coveredBy = globalState.transparentRects.filter(covers).map(layer => layer.id);
+ const fullyOccludes = (testLayer) => contains(testLayer, layer) && !layer.cornerRadius;
+ const partiallyOccludes = (testLayer) => overlaps(screen_bounds(testLayer), screen_bounds(layer));
+ const covers = (testLayer) => overlaps(screen_bounds(testLayer), screen_bounds(layer));
+
+ layer.occludedBy = globalState.opaqueRects.filter(fullyOccludes).map((layer) => layer.id);
+ layer.partiallyOccludedBy = globalState.opaqueRects.filter(partiallyOccludes)
+ .filter((p) => layer.occludedBy.indexOf(p.id) == -1)
+ .map((layer) => layer.id);
+ layer.coveredBy = globalState.transparentRects.filter(covers).map((layer) => layer.id);
if (is_opaque(layer)) {
globalState.opaqueRects.push(layer);
} else {
- globalState.transparentRects.push(layer);
+ globalState.transparentRects.push(layer);
}
}
layer.visible = is_visible(layer, layer.hidden, includesCompositionState);
if (!layer.visible) {
- layer.invisibleDueTo = get_visibility_reason(layer);
- }
+ layer.invisibleDueTo = get_visibility_reason(layer, includesCompositionState);
+ }
});
}
function traverse_top_to_bottom(layerMap, rootLayers, globalState, fn) {
- for (var i = rootLayers.length-1; i >=0; i--) {
- const relatives = rootLayers[i].relatives.map(id => layerMap[id]);
- const children = rootLayers[i].children.map(id => layerMap[id])
+ for (let i = rootLayers.length-1; i >=0; i--) {
+ const relatives = [];
+ for (const id of rootLayers[i].relatives) {
+ if (!layerMap.hasOwnProperty(id)) {
+ // TODO (b/162500053): so that this doesn't need to be checked here
+ console.warn(
+ `Relative layer with id ${id} not found in dumped layers... ` +
+ `Skipping layer in traversal...`);
+ } else {
+ relatives.push(layerMap[id]);
+ }
+ }
+
+ const children = [];
+ for (const id of rootLayers[i].children) {
+ if (!layerMap.hasOwnProperty(id)) {
+ // TODO (b/162500053): so that this doesn't need to be checked here
+ console.warn(
+ `Child layer with id ${id} not found in dumped layers... ` +
+ `Skipping layer in traversal...`);
+ } else {
+ children.push(layerMap[id]);
+ }
+ }
// traverse through relatives and children that are not relatives
- const traverseList = relatives.concat(children.filter(layer => !layer.isRelativeOf));
+ const traverseList = relatives
+ .concat(children.filter((layer) => !layer.isRelativeOf));
+
traverseList.sort((lhs, rhs) => rhs.z - lhs.z);
-
- traverseList.filter((layer) => layer.z >=0).forEach(layer => {
+
+ traverseList.filter((layer) => layer.z >=0).forEach((layer) => {
traverse_top_to_bottom(layerMap, [layer], globalState, fn);
});
fn(rootLayers[i], globalState);
-
- traverseList.filter((layer) => layer.z < 0).forEach(layer => {
+
+ traverseList.filter((layer) => layer.z < 0).forEach((layer) => {
traverse_top_to_bottom(layerMap, [layer], globalState, fn);
});
-
}
}
@@ -291,20 +322,29 @@ function fill_inherited_state(layerMap, rootLayers) {
} else if (parent) {
layer.bounds = parent.bounds;
} else {
- layer.bounds = {left:0, top:0, right:0, bottom:0};
+ layer.bounds = {left: 0, top: 0, right: 0, bottom: 0};
}
}
});
-}
+}
function traverse(layerMap, rootLayers, fn) {
- for (var i = rootLayers.length-1; i >=0; i--) {
+ for (let i = rootLayers.length-1; i >=0; i--) {
const parentId = rootLayers[i].parent;
const parent = parentId == -1 ? null : layerMap[parentId];
fn(rootLayers[i], parent);
- const children = rootLayers[i].children.map(id => layerMap[id]);
+ const children = rootLayers[i].children.map(
+ (id) => {
+ const child = layerMap[id];
+ if (child == null) {
+ console.warn(
+ `Child layer with id ${id} in parent layer id ${rootLayers[i].id} not found... ` +
+ `Skipping layer in traversal...`);
+ }
+ return child;
+ }).filter(item => item !== undefined);
traverse(layerMap, children, fn);
}
}
-export {fill_occlusion_state, fill_inherited_state}; \ No newline at end of file
+export {fill_occlusion_state, fill_inherited_state};
diff --git a/tools/winscope/src/traces/InputMethodClients.ts b/tools/winscope/src/traces/InputMethodClients.ts
new file mode 100644
index 000000000..95e1d8e44
--- /dev/null
+++ b/tools/winscope/src/traces/InputMethodClients.ts
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { FILE_TYPES, TRACE_TYPES } from '@/decode.js';
+import TraceBase from './TraceBase';
+
+export default class InputMethodClients extends TraceBase {
+ imeTraceFileClients: any;
+
+ constructor(files) {
+ const imeTraceFileClients = files[FILE_TYPES.IME_TRACE_CLIENTS];
+ super(imeTraceFileClients.data, imeTraceFileClients.timeline, files);
+
+ this.imeTraceFileClients = imeTraceFileClients;
+ }
+
+ get type() {
+ return TRACE_TYPES.IME_CLIENTS;
+ }
+}
diff --git a/tools/winscope/src/traces/InputMethodManagerService.ts b/tools/winscope/src/traces/InputMethodManagerService.ts
new file mode 100644
index 000000000..7ae0434b6
--- /dev/null
+++ b/tools/winscope/src/traces/InputMethodManagerService.ts
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { FILE_TYPES, TRACE_TYPES } from '@/decode.js';
+import TraceBase from './TraceBase';
+
+export default class InputMethodManagerService extends TraceBase {
+ imeTraceFileManagerService: any;
+
+ constructor(files) {
+ const imeTraceFileManagerService = files[FILE_TYPES.IME_TRACE_MANAGERSERVICE];
+ super(imeTraceFileManagerService.data, imeTraceFileManagerService.timeline, files);
+
+ this.imeTraceFileManagerService = imeTraceFileManagerService;
+ }
+
+ get type() {
+ return TRACE_TYPES.IME_MANAGERSERVICE;
+ }
+}
diff --git a/tools/winscope/src/traces/InputMethodService.ts b/tools/winscope/src/traces/InputMethodService.ts
new file mode 100644
index 000000000..64b7841a6
--- /dev/null
+++ b/tools/winscope/src/traces/InputMethodService.ts
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { FILE_TYPES, TRACE_TYPES } from '@/decode.js';
+import TraceBase from './TraceBase';
+
+export default class InputMethodService extends TraceBase {
+ imeTraceFileService: any;
+
+ constructor(files) {
+ const imeTraceFileService = files[FILE_TYPES.IME_TRACE_SERVICE];
+ super(imeTraceFileService.data, imeTraceFileService.timeline, files);
+
+ this.imeTraceFileService = imeTraceFileService;
+ }
+
+ get type() {
+ return TRACE_TYPES.IME_SERVICE;
+ }
+}
diff --git a/tools/winscope/src/traces/Launcher.ts b/tools/winscope/src/traces/Launcher.ts
new file mode 100644
index 000000000..9649296cd
--- /dev/null
+++ b/tools/winscope/src/traces/Launcher.ts
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { FILE_TYPES, TRACE_TYPES } from '@/decode.js';
+import TraceBase from './TraceBase';
+
+export default class Launcher extends TraceBase {
+ launcherFile: any;
+
+ constructor(files) {
+ const launcherFile = files[FILE_TYPES.LAUNCHER];
+ super(launcherFile.data, launcherFile.timeline, files);
+
+ this.launcherFile = launcherFile;
+ }
+
+ get type() {
+ return TRACE_TYPES.LAUNCHER;
+ }
+}
diff --git a/tools/winscope/src/traces/ProtoLog.ts b/tools/winscope/src/traces/ProtoLog.ts
new file mode 100644
index 000000000..f251114c5
--- /dev/null
+++ b/tools/winscope/src/traces/ProtoLog.ts
@@ -0,0 +1,150 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { FILE_TYPES, TRACE_TYPES } from '@/decode.js';
+import TraceBase from './TraceBase';
+
+import { nanos_to_string } from '@/transform.js';
+import viewerConfig from
+ '@/../../../../frameworks/base/data/etc/services.core.protolog.json';
+
+export default class ProtoLog extends TraceBase {
+ protoLogFile: any;
+
+ constructor(files) {
+ const protoLogFile = files[FILE_TYPES.PROTO_LOG];
+ super(protoLogFile.data, protoLogFile.timeline, files);
+
+ this.protoLogFile = protoLogFile;
+ }
+
+ get type() {
+ return TRACE_TYPES.PROTO_LOG;
+ }
+}
+
+export class LogMessage {
+ text: String;
+ time: String;
+ tag: String;
+ level: String;
+ at: String;
+ timestamp: Number;
+
+ constructor({ text, time, tag, level, at, timestamp }) {
+ this.text = text;
+ this.time = time;
+ this.tag = tag;
+ this.level = level;
+ this.at = at;
+ this.timestamp = timestamp;
+ }
+}
+
+export class FormattedLogMessage extends LogMessage {
+ constructor(entry) {
+ super({
+ text: (entry.messageHash.toString() +
+ ' - [' + entry.strParams.toString() +
+ '] [' + entry.sint64Params.toString() +
+ '] [' + entry.doubleParams.toString() +
+ '] [' + entry.booleanParams.toString() + ']'),
+ time: nanos_to_string(entry.elapsedRealtimeNanos),
+ tag: 'INVALID',
+ level: 'invalid',
+ at: '',
+ timestamp: entry.elapsedRealtimeNanos,
+ });
+ }
+}
+
+export class UnformattedLogMessage extends LogMessage {
+ constructor(entry, message) {
+ super({
+ text: formatText(message.message, entry),
+ time: nanos_to_string(entry.elapsedRealtimeNanos),
+ tag: viewerConfig.groups[message.group].tag,
+ level: message.level,
+ at: message.at,
+ timestamp: entry.elapsedRealtimeNanos,
+ });
+ }
+}
+
+function formatText(messageFormat, data) {
+ let out = '';
+ const strParams = data.strParams;
+ let strParamsIdx = 0;
+ const sint64Params = data.sint64Params;
+ let sint64ParamsIdx = 0;
+ const doubleParams = data.doubleParams;
+ let doubleParamsIdx = 0;
+ const booleanParams = data.booleanParams;
+ let booleanParamsIdx = 0;
+ for (let i = 0; i < messageFormat.length;) {
+ if (messageFormat[i] == '%') {
+ if (i + 1 >= messageFormat.length) {
+ // Should never happen - protologtool checks for that
+ throw new Error('Invalid format string');
+ }
+ switch (messageFormat[i + 1]) {
+ case '%':
+ out += '%';
+ break;
+ case 'd':
+ out += getParam(sint64Params, sint64ParamsIdx++).toString(10);
+ break;
+ case 'o':
+ out += getParam(sint64Params, sint64ParamsIdx++).toString(8);
+ break;
+ case 'x':
+ out += getParam(sint64Params, sint64ParamsIdx++).toString(16);
+ break;
+ case 'f':
+ out += getParam(doubleParams, doubleParamsIdx++).toFixed(6);
+ break;
+ case 'e':
+ out += getParam(doubleParams, doubleParamsIdx++).toExponential();
+ break;
+ case 'g':
+ out += getParam(doubleParams, doubleParamsIdx++).toString();
+ break;
+ case 's':
+ out += getParam(strParams, strParamsIdx++);
+ break;
+ case 'b':
+ out += getParam(booleanParams, booleanParamsIdx++).toString();
+ break;
+ default:
+ // Should never happen - protologtool checks for that
+ throw new Error('Invalid format string conversion: ' +
+ messageFormat[i + 1]);
+ }
+ i += 2;
+ } else {
+ out += messageFormat[i];
+ i += 1;
+ }
+ }
+ return out;
+}
+
+function getParam(arr, idx) {
+ if (arr.length <= idx) {
+ throw new Error('No param for format string conversion');
+ }
+ return arr[idx];
+} \ No newline at end of file
diff --git a/tools/winscope/src/traces/ScreenRecording.ts b/tools/winscope/src/traces/ScreenRecording.ts
new file mode 100644
index 000000000..c781d7dff
--- /dev/null
+++ b/tools/winscope/src/traces/ScreenRecording.ts
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { FILE_TYPES, TRACE_TYPES } from '@/decode.js';
+import TraceBase from './TraceBase';
+
+export default class ScreenRecording extends TraceBase {
+ screenRecordingFile: any;
+
+ constructor(files) {
+ const screenRecordingFile = files[FILE_TYPES.SCREEN_RECORDING];
+ super(screenRecordingFile.data, screenRecordingFile.timeline, files);
+
+ this.screenRecordingFile = screenRecordingFile;
+ }
+
+ get type() {
+ return TRACE_TYPES.SCREEN_RECORDING;
+ }
+}
diff --git a/tools/winscope/src/traces/SurfaceFlinger.ts b/tools/winscope/src/traces/SurfaceFlinger.ts
new file mode 100644
index 000000000..41fae1456
--- /dev/null
+++ b/tools/winscope/src/traces/SurfaceFlinger.ts
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { FILE_TYPES, TRACE_TYPES } from '@/decode.js';
+import TraceBase from './TraceBase';
+
+export default class SurfaceFlinger extends TraceBase {
+ sfTraceFile: any;
+
+ constructor(files) {
+ const sfTraceFile = files[FILE_TYPES.SURFACE_FLINGER_TRACE];
+ super(sfTraceFile.data, sfTraceFile.timeline, files);
+
+ this.sfTraceFile = sfTraceFile;
+ }
+
+ get type() {
+ return TRACE_TYPES.SURFACE_FLINGER;
+ }
+}
diff --git a/tools/winscope/src/traces/SystemUI.ts b/tools/winscope/src/traces/SystemUI.ts
new file mode 100644
index 000000000..4bc28d410
--- /dev/null
+++ b/tools/winscope/src/traces/SystemUI.ts
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { FILE_TYPES, TRACE_TYPES } from '@/decode.js';
+import TraceBase from './TraceBase';
+
+export default class SystemUI extends TraceBase {
+ systemUIFile: any;
+
+ constructor(files) {
+ const systemUIFile = files[FILE_TYPES.SYSTEM_UI];
+ super(systemUIFile.data, systemUIFile.timeline, files);
+
+ this.systemUIFile = systemUIFile;
+ }
+
+ get type() {
+ return TRACE_TYPES.SYSTEM_UI;
+ }
+}
diff --git a/tools/winscope/src/traces/TraceBase.ts b/tools/winscope/src/traces/TraceBase.ts
new file mode 100644
index 000000000..652dc7ee0
--- /dev/null
+++ b/tools/winscope/src/traces/TraceBase.ts
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+type File = {
+ blobUrl: string,
+ filename: string,
+}
+
+import JSZip from 'jszip';
+
+export default abstract class Trace implements ITrace {
+ selectedIndex: Number;
+ data: Object;
+ timeline: Array<Number>;
+ _files: File[];
+
+ constructor(data: any, timeline: Number[], files: any[]) {
+ this.selectedIndex = 0;
+ this.data = data;
+ this.timeline = timeline;
+ this._files = files;
+ }
+
+ get files(): File[] {
+ return Object.values(this._files).flat();
+ }
+
+ abstract get type(): String;
+
+ get blobUrl() {
+ if (this.files.length == 0) {
+ return null;
+ }
+
+ if (this.files.length == 1) {
+ return this.files[0].blobUrl;
+ }
+
+ const zip = new JSZip();
+
+ return (async () => {
+ for (const file of this.files) {
+ const blob = await fetch(file.blobUrl).then((r) => r.blob());
+ zip.file(file.filename, blob);
+ }
+
+ return await zip.generateAsync({ type: 'blob' });
+ })();
+
+ }
+}
+
+interface ITrace {
+ files: Array<Object>;
+ type: String,
+} \ No newline at end of file
diff --git a/tools/winscope/src/traces/Transactions.ts b/tools/winscope/src/traces/Transactions.ts
new file mode 100644
index 000000000..c4e0085ad
--- /dev/null
+++ b/tools/winscope/src/traces/Transactions.ts
@@ -0,0 +1,220 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { FILE_TYPES, TRACE_TYPES } from '@/decode.js';
+import TraceBase from './TraceBase';
+
+export default class Transactions extends TraceBase {
+ transactionsFile: Object;
+ transactionHistory: TransactionHistory;
+
+ constructor(files: any[]) {
+ const transactionsFile = files[FILE_TYPES.TRANSACTIONS_TRACE];
+
+ super(transactionsFile.data, transactionsFile.timeline, files);
+
+ this.transactionsFile = transactionsFile;
+ }
+
+ get type() {
+ return TRACE_TYPES.TRANSACTION;
+ }
+}
+
+class TransactionHistory {
+ history: Object;
+ applied: Object;
+ mergeTrees: any;
+
+ constructor(transactionsEventsFiles) {
+ this.history = {};
+ this.applied = {};
+
+ if (!transactionsEventsFiles) {
+ return;
+ }
+
+ for (const eventsFile of transactionsEventsFiles) {
+ for (const event of eventsFile.data) {
+ if (event.merge) {
+ const merge = event.merge;
+ const originalId = merge.originalTransaction.id;
+ const mergedId = merge.mergedTransaction.id;
+
+ this.addMerge(originalId, mergedId);
+ } else if (event.apply) {
+ this.addApply(event.apply.tx_id);
+ }
+ }
+ }
+ }
+
+ addMerge(originalId, mergedId) {
+ const merge = new Merge(originalId, mergedId, this.history);
+ this.addToHistoryOf(originalId, merge);
+ }
+
+ addApply(transactionId) {
+ this.applied[transactionId] = true;
+ this.addToHistoryOf(transactionId, new Apply(transactionId));
+ }
+
+ addToHistoryOf(transactionId, event) {
+ if (!this.history[transactionId]) {
+ this.history[transactionId] = [];
+ }
+ this.history[transactionId].push(event);
+ }
+
+ generateHistoryTreesOf(transactionId) {
+ return this._generateHistoryTree(transactionId);
+ }
+
+ _generateHistoryTree(transactionId, upTo = null) {
+ if (!this.history[transactionId]) {
+ return [];
+ }
+
+ const children = [];
+ const events = this.history[transactionId];
+ for (let i = 0; i < (upTo ?? events.length); i++) {
+ const event = events[i];
+
+ if (event instanceof Merge) {
+ const historyTree = this.
+ _generateHistoryTree(event.mergedId, event.mergedAt);
+ const mergeTreeNode = new MergeTreeNode(event.mergedId, historyTree);
+ children.push(mergeTreeNode);
+ } else if (event instanceof Apply) {
+ children.push(new ApplyTreeNode());
+ } else {
+ throw new Error('Unhandled event type');
+ }
+ }
+
+ return children;
+ }
+
+ /**
+ * Generates the list of all the transactions that have ever been merged into
+ * the target transaction directly or indirectly through the merges of
+ * transactions that ended up being merged into the transaction.
+ * This includes both merges that occur before and after the transaction is
+ * applied.
+ * @param {Number} transactionId - The id of the transaction we want the list
+ * of transactions merged in for
+ * @return {Set<Number>} a set of all the transaction ids that are in the
+ * history of merges of the transaction
+ */
+ allTransactionsMergedInto(transactionId) {
+ const allTransactionsMergedIn = new Set();
+
+ let event;
+ const toVisit = this.generateHistoryTreesOf(transactionId);
+ while (event = toVisit.pop()) {
+ if (event instanceof MergeTreeNode) {
+ allTransactionsMergedIn.add(event.mergedId);
+ for (const child of event.children) {
+ toVisit.push(child);
+ }
+ }
+ }
+
+ return allTransactionsMergedIn;
+ }
+
+ /**
+ * Generated the list of transactions that have been directly merged into the
+ * target transaction those are transactions that have explicitly been merged
+ * in the code with a call to merge.
+ * @param {Number} transactionId - The id of the target transaction.
+ * @return {Array<Number>} an array of the transaction ids of the transactions
+ * directly merged into the target transaction
+ */
+ allDirectMergesInto(transactionId) {
+ return (this.history[transactionId] ?? [])
+ .filter((event) => event instanceof Merge)
+ .map((merge) => merge.mergedId);
+ }
+}
+
+class MergeTreeNode {
+ mergedId: Number;
+ mergedTransactionHistory: TransactionHistory;
+ children: TransactionHistory[];
+
+ constructor(mergedId, mergedTransactionHistory) {
+ this.mergedId = mergedId;
+ this.mergedTransactionHistory = mergedTransactionHistory;
+ this.children = mergedTransactionHistory;
+ }
+
+ get type() {
+ return 'merge';
+ }
+}
+
+class ApplyTreeNode {
+ children: any[];
+
+ constructor() {
+ this.children = [];
+ }
+
+ get type() {
+ return 'apply';
+ }
+}
+
+class Merge {
+ originalId: Number;
+ mergedId: Number;
+ mergedAt: Number;
+
+ constructor(originalId, mergedId, history) {
+ this.originalId = originalId;
+ this.mergedId = mergedId;
+ // Specifies how long the merge chain of the merged transaction was at the
+ // time is was merged.
+ this.mergedAt = history[mergedId]?.length ?? 0;
+ }
+}
+
+class Apply {
+ transactionId: Number;
+
+ constructor(transactionId) {
+ this.transactionId = transactionId;
+ }
+}
+
+/**
+ * Converts the transactionId to the values that compose the identifier.
+ * The top 32 bits is the PID of the process that created the transaction
+ * and the bottom 32 bits is the ID of the transaction unique within that
+ * process.
+ * @param {Number} transactionId
+ * @return {Object} An object containing the id and pid of the transaction.
+ */
+export function expandTransactionId(transactionId) {
+ // Can't use bit shift operation because it isn't a 32 bit integer...
+ // Because js uses floating point numbers for everything, maths isn't 100%
+ // accurate so we need to round...
+ return Object.freeze({
+ id: Math.round(transactionId % Math.pow(2, 32)),
+ pid: Math.round(transactionId / Math.pow(2, 32)),
+ });
+}
diff --git a/tools/winscope/src/traces/Wayland.ts b/tools/winscope/src/traces/Wayland.ts
new file mode 100644
index 000000000..b5924d869
--- /dev/null
+++ b/tools/winscope/src/traces/Wayland.ts
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { FILE_TYPES, TRACE_TYPES } from "@/decode.js";
+import TraceBase from './TraceBase';
+
+export default class WayLand extends TraceBase {
+ waylandFile: Object;
+
+ constructor(files) {
+ const waylandFile = files[FILE_TYPES.WAYLAND_TRACE];
+ super(waylandFile.data, waylandFile.timeline, files);
+
+ this.waylandFile = waylandFile;
+ }
+
+ get type() {
+ return TRACE_TYPES.WAYLAND;
+ }
+} \ No newline at end of file
diff --git a/tools/winscope/src/traces/WindowManager.ts b/tools/winscope/src/traces/WindowManager.ts
new file mode 100644
index 000000000..bcf50264d
--- /dev/null
+++ b/tools/winscope/src/traces/WindowManager.ts
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { FILE_TYPES, TRACE_TYPES } from '@/decode.js';
+import TraceBase from './TraceBase';
+
+import { WindowManagerTrace } from '@/flickerlib';
+
+export default class WindowManager extends TraceBase {
+ wmTraceFile: Object;
+
+ constructor(files) {
+ const wmTraceFile = files[FILE_TYPES.WINDOW_MANAGER_TRACE];
+ super(wmTraceFile.data, wmTraceFile.timeline, files);
+
+ this.wmTraceFile = wmTraceFile;
+ }
+
+ get type() {
+ return TRACE_TYPES.WINDOW_MANAGER;
+ }
+
+ static fromProto(proto): WindowManagerTrace {
+ return WindowManagerTrace.fromProto(proto);
+ }
+}
diff --git a/tools/winscope/src/transform.js b/tools/winscope/src/transform.js
index 8a0af18a2..f944ecbc8 100644
--- a/tools/winscope/src/transform.js
+++ b/tools/winscope/src/transform.js
@@ -14,150 +14,373 @@
* limitations under the License.
*/
+import {DiffType} from './utils/diff.js';
+
// kind - a type used for categorization of different levels
// name - name of the node
-// children - list of child entries. Each child entry is pair list [raw object, nested transform function].
+// children - list of child entries. Each child entry is pair list
+// [raw object, nested transform function].
// bounds - used to calculate the full bounds of parents
// stableId - unique id for an entry. Used to maintain selection across frames.
-function transform({obj, kind, name, children, timestamp, rect, bounds, highlight, rects_transform, chips, visible, flattened, stableId}) {
- function call(fn, arg) {
- return (typeof fn == 'function') ? fn(arg) : fn;
- }
- function handle_children(arg, transform) {
- return [].concat(...arg.map((item) => {
- var childrenFunc = item[0];
- var transformFunc = item[1];
- var childs = call(childrenFunc, obj);
- if (childs) {
- if (typeof childs.map != 'function'){
- throw 'Childs should be an array, but is: ' + (typeof childs) + '.'
- }
- return transform ? childs.map(transformFunc) : childs;
- } else {
- return [];
- }
- }));
- }
- function concat(arg, args, argsmap) {
- var validArg = arg !== undefined && arg !== null;
-
- if (Array.isArray(args)) {
- if (validArg) {
- return [arg].concat(...args.map(argsmap));
- } else {
- return [].concat(...args.map(argsmap));
- }
- } else if (validArg) {
- return [arg];
- } else {
- return undefined;
- }
- }
-
- var transformed_children = handle_children(children, true /* transform */);
- rects_transform = (rects_transform === undefined) ? (e) => e : rects_transform;
-
- var kindResolved = call(kind, obj);
- var nameResolved = call(name, obj);
- var rectResolved = call(rect, obj);
- var stableIdResolved = (stableId === undefined) ?
- kindResolved + '|-|' + nameResolved :
- call(stableId, obj);
-
- var result = {
- kind: kindResolved,
- name: nameResolved,
- children: transformed_children,
- obj: obj,
- timestamp: call(timestamp, obj),
- skip: handle_children(children, false /* transform */),
- bounds: call(bounds, obj) || transformed_children.map((e) => e.bounds).find((e) => true) || undefined,
- rect: rectResolved,
- rects: rects_transform(concat(rectResolved, transformed_children, (e) => e.rects)),
- highlight: call(highlight, obj),
- chips: call(chips, obj),
- stableId: stableIdResolved,
- visible: call(visible, obj),
- childrenVisible: transformed_children.some((c) => {
- return c.childrenVisible || c.visible
- }),
- flattened: call(flattened, obj),
- };
-
- if (rectResolved) {
- rectResolved.ref = result;
- }
-
- return Object.freeze(result);
+function transform({
+ obj,
+ kind,
+ name,
+ shortName,
+ children,
+ timestamp,
+ rect,
+ bounds,
+ highlight,
+ rectsTransform,
+ chips,
+ visible,
+ flattened,
+ stableId,
+ freeze = true,
+}) {
+ function call(fn, arg) {
+ return (typeof fn == 'function') ? fn(arg) : fn;
+ }
+ function handleChildren(arg, transform) {
+ return [].concat(...arg.map((item) => {
+ const childrenFunc = item[0];
+ const transformFunc = item[1];
+ const childs = call(childrenFunc, obj);
+ if (childs) {
+ if (typeof childs.map != 'function') {
+ throw new Error(
+ 'Childs should be an array, but is: ' + (typeof childs) + '.');
+ }
+ return transform ? childs.map(transformFunc) : childs;
+ } else {
+ return [];
+ }
+ }));
+ }
+ function concat(arg, args, argsmap) {
+ const validArg = arg !== undefined && arg !== null;
+
+ if (Array.isArray(args)) {
+ if (validArg) {
+ return [arg].concat(...args.map(argsmap));
+ } else {
+ return [].concat(...args.map(argsmap));
+ }
+ } else if (validArg) {
+ return [arg];
+ } else {
+ return undefined;
+ }
+ }
+
+ const transformedChildren = handleChildren(children, true /* transform */);
+ rectsTransform = (rectsTransform === undefined) ? (e) => e : rectsTransform;
+
+ const kindResolved = call(kind, obj);
+ const nameResolved = call(name, obj);
+ const shortNameResolved = call(shortName, obj);
+ const rectResolved = call(rect, obj);
+ // eslint-disable-next-line max-len
+ const stableIdResolved = (stableId === undefined) ? kindResolved + '|-|' + nameResolved : call(stableId, obj);
+
+ const result = {
+ kind: kindResolved,
+ name: nameResolved,
+ shortName: shortNameResolved,
+ collapsed: false,
+ children: transformedChildren,
+ obj: obj,
+ timestamp: call(timestamp, obj),
+ skip: handleChildren(children, false /* transform */),
+ bounds: call(bounds, obj) || transformedChildren.map(
+ (e) => e.bounds).find((e) => true) || undefined,
+ rect: rectResolved,
+ rects: rectsTransform(
+ concat(rectResolved, transformedChildren, (e) => e.rects)),
+ highlight: call(highlight, obj),
+ chips: call(chips, obj),
+ stableId: stableIdResolved,
+ visible: call(visible, obj),
+ childrenVisible: transformedChildren.some((c) => {
+ return c.childrenVisible || c.visible;
+ }),
+ flattened: call(flattened, obj),
+ };
+
+ if (rectResolved) {
+ rectResolved.ref = result;
+ }
+
+ return freeze ? Object.freeze(result) : result;
+}
+
+function getDiff(val, compareVal) {
+ if (val && isTerminal(compareVal)) {
+ return {type: DiffType.ADDED};
+ } else if (isTerminal(val) && compareVal) {
+ return {type: DiffType.DELETED};
+ } else if (compareVal != val) {
+ return {type: DiffType.MODIFIED};
+ } else {
+ return {type: DiffType.NONE};
+ }
}
+// Represents termination of the object traversal,
+// differentiated with a null value in the object.
+class Terminal { }
+
+function isTerminal(obj) {
+ return obj instanceof Terminal;
+}
+
+class ObjectTransformer {
+ constructor(obj, rootName, stableId) {
+ this.obj = obj;
+ this.rootName = rootName;
+ this.stableId = stableId;
+ this.diff = false;
+ }
+
+ setOptions(options) {
+ this.options = options;
+ return this;
+ }
+
+ withDiff(obj, fieldOptions) {
+ this.diff = true;
+ this.compareWithObj = obj ?? new Terminal();
+ this.compareWithFieldOptions = fieldOptions;
+ return this;
+ }
+
+ /**
+ * Transform the raw JS Object into a TreeView compatible object
+ * @param {Object} transformOptions detailed below
+ * @param {bool} keepOriginal whether or not to store the original object in
+ * the obj property of a tree node for future
+ * reference
+ * @param {bool} freeze whether or not the returned objected should be frozen
+ * to prevent changing any of its properties
+ * @param {string} metadataKey the key that contains a node's metadata to be
+ * accessible after the transformation
+ * @return {Object} the transformed JS object compatible with treeviews.
+ */
+ transform(transformOptions = {
+ keepOriginal: false, freeze: true, metadataKey: null,
+ }) {
+ const {formatter} = this.options;
+ if (!formatter) {
+ throw new Error('Missing formatter, please set with setOptions()');
+ }
+
+ return this._transform(this.obj, this.rootName, null,
+ this.compareWithObj, this.rootName, null,
+ this.stableId, transformOptions);
+ }
+
+ /**
+ * @param {Object} obj the object to transform to a treeview compatible object
+ * @param {Object} fieldOptions options on how to transform fields
+ * @param {*} metadataKey if 'obj' contains this key, it is excluded from the
+ * transformation
+ * @return {Object} the transformed JS object compatible with treeviews.
+ */
+ _transformObject(obj, fieldOptions, metadataKey) {
+ const {skip, formatter} = this.options;
+ const transformedObj = {
+ obj: {},
+ fieldOptions: {},
+ };
+ let formatted = undefined;
+
+ if (skip && skip.includes(obj)) {
+ // skip
+ } else if ((formatted = formatter(obj))) {
+ // Obj has been formatted into a terminal node — has no children.
+ transformedObj.obj[formatted] = new Terminal();
+ transformedObj.fieldOptions[formatted] = fieldOptions;
+ } else if (Array.isArray(obj)) {
+ obj.forEach((e, i) => {
+ transformedObj.obj['' + i] = e;
+ transformedObj.fieldOptions['' + i] = fieldOptions;
+ });
+ } else if (typeof obj == 'string') {
+ // Object is a primitive type — has no children. Set to terminal
+ // to differentiate between null object and Terminal element.
+ transformedObj.obj[obj] = new Terminal();
+ transformedObj.fieldOptions[obj] = fieldOptions;
+ } else if (typeof obj == 'number' || typeof obj == 'boolean') {
+ // Similar to above — primitive type node has no children.
+ transformedObj.obj['' + obj] = new Terminal();
+ transformedObj.fieldOptions['' + obj] = fieldOptions;
+ } else if (obj && typeof obj == 'object') {
+ Object.keys(obj).forEach((key) => {
+ if (key === metadataKey) {
+ return;
+ }
+ transformedObj.obj[key] = obj[key];
+ transformedObj.fieldOptions[key] = obj.$type?.fields[key]?.options;
+ });
+ } else if (obj === null) {
+ // Null object is a has no children — set to be terminal node.
+ transformedObj.obj.null = new Terminal();
+ transformedObj.fieldOptions.null = undefined;
+ }
-function transform_json(obj, name, options) {
- let {skip, formatter} = options;
-
- var children = [];
- var formatted = undefined;
-
- if (skip && skip.includes(obj)) {
- // skip
- } else if ((formatted = formatter(obj))) {
- children.push(transform_json(null, formatted, options));
- } else if (Array.isArray(obj)) {
- obj.forEach((e, i) => {
- children.push(transform_json(e, ""+i, options));
- })
- } else if (typeof obj == 'string') {
- children.push(transform_json(null, obj, options));
- } else if (typeof obj == 'number' || typeof obj == 'boolean') {
- children.push(transform_json(null, ""+obj, options));
- } else if (obj && typeof obj == 'object') {
- Object.keys(obj).forEach((key) => {
- children.push(transform_json(obj[key], key, options));
- });
- }
-
- if (children.length == 1 && !children[0].combined) {
- return Object.freeze({
- kind: "",
- name: name + ": " + children[0].name,
- children: children[0].children,
- combined: true
- });
- }
-
- return Object.freeze({
- kind: "",
- name: name,
- children: children,
- });
+ return transformedObj;
+ }
+
+ /**
+ * Extract the value of obj's property with key 'metadataKey'
+ * @param {Object} obj the obj we want to extract the metadata from
+ * @param {string} metadataKey the key that stores the metadata in the object
+ * @return {Object} the metadata value or null in no metadata is present
+ */
+ _getMetadata(obj, metadataKey) {
+ if (metadataKey && obj[metadataKey]) {
+ const metadata = obj[metadataKey];
+ obj[metadataKey] = undefined;
+ return metadata;
+ } else {
+ return null;
+ }
+ }
+
+ _transform(obj, name, fieldOptions,
+ compareWithObj, compareWithName, compareWithFieldOptions,
+ stableId, transformOptions) {
+ const originalObj = obj;
+ const metadata = this._getMetadata(obj, transformOptions.metadataKey);
+
+ const children = [];
+
+ if (!isTerminal(obj)) {
+ const transformedObj =
+ this._transformObject(
+ obj, fieldOptions, transformOptions.metadataKey);
+ obj = transformedObj.obj;
+ fieldOptions = transformedObj.fieldOptions;
+ }
+ if (!isTerminal(compareWithObj)) {
+ const transformedObj =
+ this._transformObject(
+ compareWithObj, compareWithFieldOptions,
+ transformOptions.metadataKey);
+ compareWithObj = transformedObj.obj;
+ compareWithFieldOptions = transformedObj.fieldOptions;
+ }
+
+ for (const key in obj) {
+ if (obj.hasOwnProperty(key)) {
+ let compareWithChild = new Terminal();
+ let compareWithChildName = new Terminal();
+ let compareWithChildFieldOptions = undefined;
+ if (compareWithObj.hasOwnProperty(key)) {
+ compareWithChild = compareWithObj[key];
+ compareWithChildName = key;
+ compareWithChildFieldOptions = compareWithFieldOptions[key];
+ }
+ children.push(this._transform(obj[key], key, fieldOptions[key],
+ compareWithChild, compareWithChildName,
+ compareWithChildFieldOptions,
+ `${stableId}.${key}`, transformOptions));
+ }
+ }
+
+ // Takes care of adding deleted items to final tree
+ for (const key in compareWithObj) {
+ if (!obj.hasOwnProperty(key) && compareWithObj.hasOwnProperty(key)) {
+ children.push(this._transform(new Terminal(), new Terminal(), undefined,
+ compareWithObj[key], key, compareWithFieldOptions[key],
+ `${stableId}.${key}`, transformOptions));
+ }
+ }
+
+ let transformedObj;
+ if (
+ children.length == 1 &&
+ children[0].children.length == 0 &&
+ !children[0].combined
+ ) {
+ // Merge leaf key value pairs.
+ const child = children[0];
+
+ transformedObj = {
+ kind: '',
+ name: name + ': ' + child.name,
+ stableId,
+ children: child.children,
+ combined: true,
+ };
+
+ if (this.diff) {
+ transformedObj.diff = child.diff;
+ }
+ } else {
+ transformedObj = {
+ kind: '',
+ name,
+ stableId,
+ children,
+ };
+
+ let fieldOptionsToUse = fieldOptions;
+
+ if (this.diff) {
+ const diff = getDiff(name, compareWithName);
+ transformedObj.diff = diff;
+
+ if (diff.type == DiffType.DELETED) {
+ transformedObj.name = compareWithName;
+ fieldOptionsToUse = compareWithFieldOptions;
+ }
+ }
+ }
+
+ if (transformOptions.keepOriginal) {
+ transformedObj.obj = originalObj;
+ }
+
+ if (metadata) {
+ transformedObj[transformOptions.metadataKey] = metadata;
+ }
+
+ return transformOptions.freeze ?
+ Object.freeze(transformedObj) : transformedObj;
+ }
}
+// eslint-disable-next-line camelcase
function nanos_to_string(elapsedRealtimeNanos) {
- var units = [
- [1000000, '(ns)'],
- [1000, 'ms'],
- [60, 's'],
- [60, 'm'],
- [24, 'h'],
- [Infinity, 'd'],
- ];
-
- var parts = []
- units.some(([div, str], i) => {
- var part = (elapsedRealtimeNanos % div).toFixed()
- if (!str.startsWith('(')) {
- parts.push(part + str);
- }
- elapsedRealtimeNanos = Math.floor(elapsedRealtimeNanos / div);
- return elapsedRealtimeNanos == 0;
- });
-
- return parts.reverse().join('');
+ const units = [
+ [1000000, '(ns)'],
+ [1000, 'ms'],
+ [60, 's'],
+ [60, 'm'],
+ [24, 'h'],
+ [Infinity, 'd'],
+ ];
+
+ const parts = [];
+ units.some(([div, str], i) => {
+ const part = (elapsedRealtimeNanos % div).toFixed();
+ if (!str.startsWith('(')) {
+ parts.push(part + str);
+ }
+ elapsedRealtimeNanos = Math.floor(elapsedRealtimeNanos / div);
+ return elapsedRealtimeNanos == 0;
+ });
+
+ return parts.reverse().join('');
}
- // Returns a UI element used highlight a visible entry.
- function get_visible_chip() {
- return {short: 'V', long: "visible", class: 'default'};
- }
+// Returns a UI element used highlight a visible entry.
+// eslint-disable-next-line camelcase
+function get_visible_chip() {
+ return {short: 'V', long: 'visible', class: 'default'};
+}
-export {transform, transform_json, nanos_to_string, get_visible_chip};
+// eslint-disable-next-line camelcase
+export {transform, ObjectTransformer, nanos_to_string, get_visible_chip};
diff --git a/tools/winscope/src/transform_ime.js b/tools/winscope/src/transform_ime.js
new file mode 100644
index 000000000..cd317c8c0
--- /dev/null
+++ b/tools/winscope/src/transform_ime.js
@@ -0,0 +1,123 @@
+import {nanos_to_string, transform} from './transform.js'
+
+function transform_ime_trace_clients(entries) {
+ return transform({
+ obj: entries,
+ kind: 'entries',
+ name: 'entries',
+ children: [
+ [entries.entry, transform_entry_clients]
+ ]
+ });
+}
+
+function transform_entry_clients(entry) {
+ return transform({
+ obj: entry,
+ kind: 'entry',
+ name: nanos_to_string(entry.elapsedRealtimeNanos) + " - " + entry.where,
+ children: [
+ [[entry.client], transform_client_dump]
+ ],
+ timestamp: entry.elapsedRealtimeNanos,
+ stableId: 'entry'
+ });
+}
+
+function transform_client_dump(entry) {
+ return transform({
+ obj: transform_input_connection_call(entry),
+ kind: 'Client',
+ name: '\n- methodId ' + entry?.inputMethodManager?.curId
+ + '\n- view ' + entry?.viewRootImpl?.view
+ + '\n- packageName ' + entry?.editorInfo?.packageName,
+ children: [],
+ stableId: 'client'
+ });
+}
+
+function transform_ime_trace_service(entries) {
+ return transform({
+ obj: entries,
+ kind: 'entries',
+ name: 'entries',
+ children: [
+ [entries.entry, transform_entry_service]
+ ]
+ });
+}
+
+function transform_entry_service(entry) {
+ return transform({
+ obj: entry,
+ kind: 'entry',
+ name: nanos_to_string(entry.elapsedRealtimeNanos) + " - " + entry.where,
+ children: [
+ [[entry.inputMethodService], transform_service_dump]
+ ],
+ timestamp: entry.elapsedRealtimeNanos,
+ stableId: 'entry'
+ });
+}
+
+function transform_service_dump(entry) {
+ return transform({
+ obj: transform_input_connection_call(entry),
+ kind: 'InputMethodService',
+ name: '\n- windowVisible ' + entry?.windowVisible
+ + '\n- decorViewVisible ' + entry?.decorViewVisible
+ + '\n- packageName ' + entry?.inputEditorInfo?.packageName,
+ children: [],
+ stableId: 'service'
+ });
+}
+
+function transform_ime_trace_managerservice(entries) {
+ return transform({
+ obj: entries,
+ kind: 'entries',
+ name: 'entries',
+ children: [
+ [entries.entry, transform_entry_managerservice]
+ ]
+ });
+}
+
+function transform_entry_managerservice(entry) {
+ return transform({
+ obj: entry,
+ kind: 'entry',
+ name: nanos_to_string(entry.elapsedRealtimeNanos) + " - " + entry.where,
+ children: [
+ [[entry.inputMethodManagerService], transform_managerservice_dump]
+ ],
+ timestamp: entry.elapsedRealtimeNanos,
+ stableId: 'entry'
+ });
+}
+
+function transform_managerservice_dump(entry) {
+ return transform({
+ obj: entry,
+ kind: 'InputMethodManagerService',
+ name: '\n- methodId ' + entry?.curMethodId
+ + '\n- curFocusedWindow ' + entry?.curFocusedWindowName
+ + '\n- lastImeTargetWindow ' + entry?.lastImeTargetWindowName
+ + '\n- inputShown ' + entry?.inputShown,
+ children: [],
+ stableId: 'managerservice'
+ });
+}
+
+function transform_input_connection_call(entry) {
+ const obj = Object.assign({}, entry)
+ if (obj.inputConnectionCall) {
+ Object.getOwnPropertyNames(obj.inputConnectionCall).forEach(name => {
+ const value = Object.getOwnPropertyDescriptor(obj.inputConnectionCall, name)
+ if (!value.value) delete obj.inputConnectionCall[name]
+ })
+ }
+ return obj
+}
+
+export {transform_ime_trace_clients, transform_ime_trace_service, transform_ime_trace_managerservice};
diff --git a/tools/winscope/src/transform_launcher.js b/tools/winscope/src/transform_launcher.js
index 98b49a825..24a137658 100644
--- a/tools/winscope/src/transform_launcher.js
+++ b/tools/winscope/src/transform_launcher.js
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-import {transform, nanos_to_string, get_visible_chip} from './transform.js'
+import { transform, nanos_to_string, get_visible_chip } from './transform.js'
function transform_launcher(launcher) {
return transform({
@@ -49,4 +49,4 @@ function transform_launcher_trace(entries) {
});
}
-export {transform_launcher_trace};
+export { transform_launcher_trace };
diff --git a/tools/winscope/src/transform_protolog.js b/tools/winscope/src/transform_protolog.js
index 89e87d557..c3f91228d 100644
--- a/tools/winscope/src/transform_protolog.js
+++ b/tools/winscope/src/transform_protolog.js
@@ -14,11 +14,12 @@
* limitations under the License.
*/
-import viewerConfig from "../../../../frameworks/base/data/etc/services.core.protolog.json"
+import viewerConfig
+ from '../../../../frameworks/base/data/etc/services.core.protolog.json';
-import { nanos_to_string } from './transform.js'
+import {FormattedLogMessage, UnformattedLogMessage} from '@/traces/ProtoLog.ts';
-const PROTOLOG_VERSION = "1.0.0"
+const PROTOLOG_VERSION = '1.0.0';
class FormatStringMismatchError extends Error {
constructor(message) {
@@ -26,109 +27,23 @@ class FormatStringMismatchError extends Error {
}
}
-function get_param(arr, idx) {
- if (arr.length <= idx) {
- throw new FormatStringMismatchError('No param for format string conversion');
- }
- return arr[idx];
-}
-
-function format_text(messageFormat, data) {
- let out = ""
- const strParams = data.strParams;
- let strParamsIdx = 0;
- const sint64Params = data.sint64Params;
- let sint64ParamsIdx = 0;
- const doubleParams = data.doubleParams;
- let doubleParamsIdx = 0;
- const booleanParams = data.booleanParams;
- let booleanParamsIdx = 0;
- for (let i = 0; i < messageFormat.length;) {
- if (messageFormat[i] == '%') {
- if (i + 1 >= messageFormat.length) {
- // Should never happen - protologtool checks for that
- throw new Error("Invalid format string")
- }
- switch (messageFormat[i + 1]) {
- case '%':
- out += '%';
- break;
- case 'd':
- out += get_param(sint64Params, sint64ParamsIdx++).toString(10);
- break;
- case 'o':
- out += get_param(sint64Params, sint64ParamsIdx++).toString(8);
- break;
- case 'x':
- out += get_param(sint64Params, sint64ParamsIdx++).toString(16);
- break;
- case 'f':
- out += get_param(doubleParams, doubleParamsIdx++).toFixed(6);
- break;
- case 'e':
- out += get_param(doubleParams, doubleParamsIdx++).toExponential();
- break;
- case 'g':
- out += get_param(doubleParams, doubleParamsIdx++).toString();
- break;
- case 's':
- out += get_param(strParams, strParamsIdx++);
- break;
- case 'b':
- out += get_param(booleanParams, booleanParamsIdx++).toString();
- break;
- default:
- // Should never happen - protologtool checks for that
- throw new Error("Invalid format string conversion: " + messageFormat[i + 1]);
- }
- i += 2;
- } else {
- out += messageFormat[i];
- i += 1;
- }
- }
- return out;
-}
-
-function transform_unformatted(entry) {
- return {
- text: (entry.messageHash.toString() + ' - [' + entry.strParams.toString() +
- '] [' + entry.sint64Params.toString() + '] [' + entry.doubleParams.toString() +
- '] [' + entry.booleanParams.toString() + ']'),
- time: nanos_to_string(entry.elapsedRealtimeNanos),
- tag: "INVALID",
- at: "",
- timestamp: entry.elapsedRealtimeNanos,
- };
-}
-
-function transform_formatted(entry, message) {
- return {
- text: format_text(message.message, entry),
- time: nanos_to_string(entry.elapsedRealtimeNanos),
- tag: viewerConfig.groups[message.group].tag,
- at: message.at,
- timestamp: entry.elapsedRealtimeNanos,
- };
-}
-
-function transform_message(entry) {
- let message = viewerConfig.messages[entry.messageHash]
+function transformMessage(entry) {
+ const message = viewerConfig.messages[entry.messageHash];
if (message === undefined) {
- return transform_unformatted(entry);
+ return new FormattedLogMessage(entry);
} else {
try {
- return transform_formatted(entry, message);
+ return new UnformattedLogMessage(entry, message);
} catch (err) {
if (err instanceof FormatStringMismatchError) {
- return transform_unformatted(entry);
+ return new FormattedLogMessage(entry);
}
throw err;
}
}
}
-function transform_protolog(log) {
+function transformProtolog(log) {
if (log.version !== PROTOLOG_VERSION) {
throw new Error('Unsupported log version');
}
@@ -136,12 +51,14 @@ function transform_protolog(log) {
throw new Error('Unsupported viewer config version');
}
- let data = log.log.map(entry => (transform_message(entry)))
- data.sort(function(a, b) { return a.timestamp - b.timestamp })
- let transformed = {
- children: data
- }
- return transformed
+ const data = log.log.map((entry) => (transformMessage(entry)));
+ data.sort(function(a, b) {
+ return a.timestamp - b.timestamp;
+ });
+ const transformed = {
+ children: data,
+ };
+ return transformed;
}
-export { transform_protolog };
+export {transformProtolog};
diff --git a/tools/winscope/src/transform_sf.js b/tools/winscope/src/transform_sf.js
index 7b631c68f..6a48cd46a 100644
--- a/tools/winscope/src/transform_sf.js
+++ b/tools/winscope/src/transform_sf.js
@@ -14,27 +14,42 @@
* limitations under the License.
*/
-import {transform, nanos_to_string, get_visible_chip} from './transform.js'
-import { fill_occlusion_state, fill_inherited_state } from './sf_visibility.js';
-
-var RELATIVE_Z_CHIP = {short: 'RelZ',
- long: "Is relative Z-ordered to another surface",
- class: 'warn'};
-var RELATIVE_Z_PARENT_CHIP = {short: 'RelZParent',
- long: "Something is relative Z-ordered to this surface",
- class: 'warn'};
-var MISSING_LAYER = {short: 'MissingLayer',
- long: "This layer was referenced from the parent, but not present in the trace",
- class: 'error'};
-var GPU_CHIP = {short: 'GPU',
- long: "This layer was composed on the GPU",
- class: 'gpu'};
-var HWC_CHIP = {short: 'HWC',
- long: "This layer was composed by Hardware Composer",
- class: 'hwc'};
-
-function transform_layer(layer) {
- function offset_to(bounds, x, y) {
+// eslint-disable-next-line camelcase
+import {transform, nanos_to_string, get_visible_chip} from './transform.js';
+// eslint-disable-next-line camelcase
+import {fill_occlusion_state, fill_inherited_state} from './sf_visibility.js';
+import {getSimplifiedLayerName} from './utils/names';
+import ObjectFormatter from './flickerlib/ObjectFormatter'
+
+const RELATIVE_Z_CHIP = {
+ short: 'RelZ',
+ long: 'Is relative Z-ordered to another surface',
+ class: 'warn',
+};
+const RELATIVE_Z_PARENT_CHIP = {
+ short: 'RelZParent',
+ long: 'Something is relative Z-ordered to this surface',
+ class: 'warn',
+};
+const MISSING_LAYER = {
+ short: 'MissingLayer',
+ long:
+ 'This layer was referenced from the parent, but not present in the trace',
+ class: 'error',
+};
+const GPU_CHIP = {
+ short: 'GPU',
+ long: 'This layer was composed on the GPU',
+ class: 'gpu',
+};
+const HWC_CHIP = {
+ short: 'HWC',
+ long: 'This layer was composed by Hardware Composer',
+ class: 'hwc',
+};
+
+function transformLayer(layer) {
+ function offsetTo(bounds, x, y) {
return {
right: bounds.right - (bounds.left - x),
bottom: bounds.bottom - (bounds.top - y),
@@ -43,11 +58,10 @@ function transform_layer(layer) {
};
}
- function get_rect(layer) {
- var result = layer.bounds;
- var tx = layer.position ? layer.position.x || 0 : 0;
- var ty = layer.position ? layer.position.y || 0 : 0;
- result = offset_to(result, 0, 0);
+ function getRect(layer) {
+ let result = layer.bounds;
+ const tx = layer.position ? layer.position.x || 0 : 0;
+ const ty = layer.position ? layer.position.y || 0 : 0;
result.label = layer.name;
result.transform = layer.transform;
result.transform.tx = tx;
@@ -55,15 +69,16 @@ function transform_layer(layer) {
return result;
}
- function add_hwc_composition_type_chip(layer) {
- if (layer.hwcCompositionType === "CLIENT") {
- chips.push(GPU_CHIP);
- } else if (layer.hwcCompositionType === "DEVICE" || layer.hwcCompositionType === "SOLID_COLOR") {
- chips.push(HWC_CHIP);
- }
+ function addHwcCompositionTypeChip(layer) {
+ if (layer.hwcCompositionType === 'CLIENT') {
+ chips.push(GPU_CHIP);
+ } else if (layer.hwcCompositionType === 'DEVICE' ||
+ layer.hwcCompositionType === 'SOLID_COLOR') {
+ chips.push(HWC_CHIP);
+ }
}
- var chips = [];
+ const chips = [];
if (layer.visible) {
chips.push(get_visible_chip());
}
@@ -76,36 +91,52 @@ function transform_layer(layer) {
if (layer.missing) {
chips.push(MISSING_LAYER);
}
- add_hwc_composition_type_chip(layer);
- const rect = layer.visible ? get_rect(layer) : undefined;
+ addHwcCompositionTypeChip(layer);
- return transform({
- obj: layer,
+ const rect = layer.visible && layer.bounds !== null ?
+ getRect(layer) : undefined;
+
+ const simplifiedLayerName = getSimplifiedLayerName(layer.name);
+ const shortName = simplifiedLayerName ?
+ layer.id + ': ' + simplifiedLayerName : undefined;
+
+ const transformedLayer = transform({
+ obj: ObjectFormatter.format(layer),
kind: '',
- name: layer.id + ": " + layer.name,
- children: [[layer.resolvedChildren, transform_layer]],
+ name: layer.id + ': ' + layer.name,
+ shortName,
+ children: [[layer.resolvedChildren, transformLayer]],
rect,
undefined /* bounds */,
highlight: rect,
chips,
visible: layer.visible,
+ freeze: false,
});
+
+ // NOTE: Temporary until refactored to use flickerlib
+ transformedLayer.invisibleDueTo = layer.invisibleDueTo;
+ transformedLayer.occludedBy = layer.occludedBy;
+ transformedLayer.partiallyOccludedBy = layer.partiallyOccludedBy;
+ transformedLayer.coveredBy = layer.coveredBy;
+
+ return Object.freeze(transformedLayer);
}
-
+
function missingLayer(childId) {
return {
- name: "layer #" + childId,
+ name: 'layer #' + childId,
missing: true,
zOrderRelativeOf: -1,
- transform: {dsdx:1, dtdx:0, dsdy:0, dtdy:1},
- }
+ transform: {dsdx: 1, dtdx: 0, dsdy: 0, dtdy: 1},
+ };
}
-function transform_layers(includesCompositionState, layers) {
- var idToItem = {};
- var isChild = {}
+function transformLayers(includesCompositionState, layers) {
+ const idToItem = {};
+ const isChild = {};
- var layersList = layers.layers || [];
+ const layersList = layers.layers || [];
layersList.forEach((e) => {
idToItem[e.id] = e;
@@ -119,14 +150,21 @@ function transform_layers(includesCompositionState, layers) {
isChild[childId] = true;
});
}
- if ((e.zOrderRelativeOf || -1) !== -1) {
+ // We don't clean up relatives when the relative parent is removed, so it
+ // may be inconsistent
+ if ((e.zOrderRelativeOf || -1) !== -1 && (idToItem[e.zOrderRelativeOf])) {
idToItem[e.zOrderRelativeOf].zOrderRelativeParentOf = e.id;
}
});
- var roots = layersList.filter((e) => !isChild[e.id]);
+ const roots = layersList.filter((e) => !isChild[e.id]);
fill_inherited_state(idToItem, roots);
- fill_occlusion_state(idToItem, roots, includesCompositionState);
+
+ // Backwards compatibility check
+ const occlusionDetectionCompatible = roots[0].bounds !== null;
+ if (occlusionDetectionCompatible) {
+ fill_occlusion_state(idToItem, roots, includesCompositionState);
+ }
function foreachTree(nodes, fun) {
nodes.forEach((n) => {
fun(n);
@@ -134,15 +172,17 @@ function transform_layers(includesCompositionState, layers) {
});
}
- var idToTransformed = {};
- var transformed_roots = roots.map((r) =>
- transform_layer(r, {parentBounds: {left: 0, right: 0, top: 0, bottom: 0},
- parentHidden: null}));
+ const idToTransformed = {};
+ const transformedRoots = roots.map((r) =>
+ transformLayer(r, {
+ parentBounds: {left: 0, right: 0, top: 0, bottom: 0},
+ parentHidden: null,
+ }));
- foreachTree(transformed_roots, (n) => {
+ foreachTree(transformedRoots, (n) => {
idToTransformed[n.obj.id] = n;
});
- var flattened = [];
+ const flattened = [];
layersList.forEach((e) => {
flattened.push(idToTransformed[e.id]);
});
@@ -152,10 +192,10 @@ function transform_layers(includesCompositionState, layers) {
kind: 'layers',
name: 'layers',
children: [
- [transformed_roots, (c) => c],
+ [transformedRoots, (c) => c],
],
- rects_transform (r) {
- var res = [];
+ rectsTransform(r) {
+ const res = [];
flattened.forEach((l) => {
if (l.rect) {
res.push(l.rect);
@@ -167,31 +207,34 @@ function transform_layers(includesCompositionState, layers) {
});
}
-function transform_layers_entry(entry) {
+function transformLayersEntry(entry) {
const includesCompositionState = !entry.excludesCompositionState;
return transform({
obj: entry,
kind: 'entry',
- name: nanos_to_string(entry.elapsedRealtimeNanos) + " - " + entry.where,
+ name: nanos_to_string(entry.elapsedRealtimeNanos) + ' - ' + entry.where,
children: [
- [[entry.layers], (layer) => transform_layers(includesCompositionState, layer)],
+ [
+ [entry.layers],
+ (layer) => transformLayers(includesCompositionState, layer),
+ ],
],
timestamp: entry.elapsedRealtimeNanos,
stableId: 'entry',
});
}
-function transform_layers_trace(entries) {
- var r = transform({
+function transformLayersTrace(entries) {
+ const r = transform({
obj: entries,
kind: 'layerstrace',
name: 'layerstrace',
children: [
- [entries.entry, transform_layers_entry],
+ [entries.entry, transformLayersEntry],
],
});
return r;
}
-export {transform_layers, transform_layers_trace};
+export {transformLayers, transformLayersTrace};
diff --git a/tools/winscope/src/transform_sys_ui.js b/tools/winscope/src/transform_sys_ui.js
index f636b092c..3b14546b4 100644
--- a/tools/winscope/src/transform_sys_ui.js
+++ b/tools/winscope/src/transform_sys_ui.js
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-import {transform, nanos_to_string, get_visible_chip} from './transform.js'
+import { transform, nanos_to_string, get_visible_chip } from './transform.js'
function transform_edgeBack(edgeBack) {
return transform({
@@ -31,7 +31,7 @@ function transform_systemUi(sysui) {
kind: 'systemUi',
name: 'systemUi',
children: [
- [[sysui.edgeBackGestureHandler], transform_edgeBack]
+ [[sysui.edgeBackGestureHandler], transform_edgeBack]
]
});
}
@@ -60,4 +60,4 @@ function transform_sysui_trace(entries) {
});
}
-export {transform_sysui_trace};
+export { transform_sysui_trace };
diff --git a/tools/winscope/src/transform_transaction.js b/tools/winscope/src/transform_transaction.js
index da40bd11e..ef958f83f 100644
--- a/tools/winscope/src/transform_transaction.js
+++ b/tools/winscope/src/transform_transaction.js
@@ -14,53 +14,70 @@
* limitations under the License.
*/
-import {transform, nanos_to_string} from './transform.js'
+import {nanos_to_string} from './transform.js';
-function transform_transaction(transaction) {
- return transform({
- obj: transaction,
- kind: 'transaction',
- children:[[transaction.surfaceChange, transform_entry_type('surfaceChange')],
- [transaction.displayChange, transform_entry_type('displayChange')]],
- rects: [],
- visible: false,
- })
-}
+function transform_transaction(transaction, layerIdToName) {
+ const transactions = [];
+
+ for (const surfaceChange of transaction.surfaceChange) {
+ transactions.push(Object.freeze({
+ type: 'surfaceChange',
+ obj: surfaceChange,
+ layerName: layerIdToName[surfaceChange.id],
+ }));
+ }
-function transform_entry_type(transactionType) {
- function return_transform(item) {
- return Object.freeze({
- obj: item,
- kind: transactionType,
- rects: [],
- visible: false,
- name: item.name || item.id || nanos_to_string(item.when),
- });
+ for (const displayChange of transaction.displayChange) {
+ transactions.push(Object.freeze({
+ type: 'displayChange',
+ obj: displayChange,
+ layerName: layerIdToName[displayChange.id],
+ }));
}
- return transactionType === 'transaction' ? transform_transaction : return_transform;
+
+ return transactions;
}
-function transform_entry(entry) {
- var transactionType = entry.increment;
- return transform({
- obj: entry,
- kind: 'entry',
- name: nanos_to_string(entry.timeStamp),
- children: [[[entry[transactionType]], transform_entry_type(transactionType)]],
- timestamp: entry.timeStamp,
- });
+function transform_entry(entry, layerIdToName) {
+ const type = entry.increment;
+ const timestamp = entry.timeStamp;
+ const time = nanos_to_string(timestamp);
+
+ switch (type) {
+ case 'transaction':
+
+ return Object.freeze({
+ type,
+ // TODO: Rename to changes
+ transactions: transform_transaction(entry.transaction, layerIdToName),
+ synchronous: entry.transaction.synchronous,
+ animation: entry.transaction.animation,
+ identifier: entry.transaction.id,
+ time,
+ origin: entry.transaction.origin,
+ timestamp,
+ });
+
+ case 'surfaceCreation':
+ // NOTE: There is no break on purpose — we want to fall through to default
+ layerIdToName[entry[type].id] = entry[type].name;
+
+ default:
+ return Object.freeze({
+ type,
+ obj: entry[type],
+ layerName: entry[type].name ?? layerIdToName[entry[type].id],
+ time,
+ timestamp,
+ });
+ }
}
function transform_transaction_trace(entries) {
- var r = transform({
- obj: entries,
- kind: 'entries',
- name: 'transactionstrace',
- children: [
- [entries.increment, transform_entry],
- ],
- })
- return r;
+ const layerIdToName = {};
+ const data = entries.increment.map((entry) => transform_entry(entry, layerIdToName));
+
+ return {children: data};
}
export {transform_transaction_trace};
diff --git a/tools/winscope/src/transform_wm.js b/tools/winscope/src/transform_wm.js
deleted file mode 100644
index 8a947b61b..000000000
--- a/tools/winscope/src/transform_wm.js
+++ /dev/null
@@ -1,254 +0,0 @@
-/*
- * Copyright 2017, The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import {transform, nanos_to_string, get_visible_chip} from './transform.js'
-
-function transform_window(entry) {
- var chips = [];
- var renderIdentifier = (id) => shortenComponentName(id.title) + "@" + id.hashCode;
- var visible = entry.windowContainer.visible;
- function transform_rect(rect, label) {
- var r = rect || {};
- return {
- left: r.left || 0,
- right: r.right || 0,
- top: r.top || 0,
- bottom: r.bottom || 0,
- label,
- }
- }
- var name = renderIdentifier(entry.identifier)
- var rect = transform_rect((entry.windowFrames || entry).frame, name);
-
- if (visible) {
- chips.push(get_visible_chip());
- } else {
- rect = undefined;
- }
-
- return transform({
- obj: entry,
- kind: 'window',
- name,
- children: [
- [entry.childWindows, transform_window],
- [entry.windowContainer.children.reverse(), transform_window_container_child],
- ],
- rect,
- highlight: rect,
- chips: chips,
- visible: visible,
- });
-}
-
-function transform_activity_record(entry) {
- return transform({
- obj: entry,
- kind: 'activityRecord',
- name: entry.name,
- children: [
- [entry.windowToken.windows, transform_window],
- [entry.windowToken.windowContainer.children.reverse(), transform_window_container_child],
- ],
- });
-}
-
-function transform_task(entry) {
- return transform({
- obj: entry,
- kind: 'task',
- name: entry.id || 0,
- children: [
- [entry.tasks, transform_task],
- [entry.activities, transform_activity_record],
- [entry.windowContainer.children.reverse(), transform_window_container_child],
- ],
- });
-}
-
-function transform_stack(entry) {
- return transform({
- obj: entry,
- kind: 'stack',
- name: entry.id || 0,
- children: [
- [entry.tasks, transform_task],
- ],
- });
-}
-
-function transform_window_token(entry) {
- return transform({
- obj: entry,
- kind: 'winToken',
- name: '',
- children: [
- [entry.windows, transform_window],
- [entry.windowContainer.children.reverse(), transform_window_container_child],
- ],
- });
-}
-
-function transform_below(entry) {
- return transform({
- obj: entry,
- kind: 'belowAppWindow',
- name: '',
- children: [
- [entry.windows, transform_window],
- ],
- });
-}
-
-function transform_above(entry) {
- return transform({
- obj: entry,
- kind: 'aboveAppWindow',
- name: '',
- children: [
- [entry.windows, transform_window],
- ],
- });
-}
-
-function transform_ime(entry) {
- return transform({
- obj: entry,
- kind: 'imeWindow',
- name: '',
- children: [
- [entry.windows, transform_window],
- ],
- });
-}
-
-function transform_window_container_child(entry) {
- if (entry.displayArea != null) {return transform_display_area(entry.displayArea)}
- if (entry.displayContent != null) {return transform_display_content(entry.displayContent)}
- if (entry.task != null) {return transform_task(entry.task)}
- if (entry.activity != null) {return transform_activity_record(entry.activity)}
- if (entry.windowToken != null) {return transform_window_token(entry.windowToken)}
- if (entry.window != null) {return transform_window(entry.window)}
-
- // The WindowContainerChild may be unknown
- return transform({
- obj: entry,
- kind: 'WindowContainerChild',
- name: '',
- children: [[entry.windowContainer.children.reverse(), transform_window_container_child],]
- });
-}
-
-
-function transform_display_area(entry) {
- return transform({
- obj: entry,
- kind: 'DisplayArea',
- name: entry.name,
- children: [
- [entry.windowContainer.children.reverse(), transform_window_container_child],
- ],
- });
-}
-
-function transform_display_content(entry) {
- var bounds = {
- width: entry.displayInfo.logicalWidth || 0,
- height: entry.displayInfo.logicalHeight || 0,
- };
-
- return transform({
- obj: entry,
- kind: 'display',
- name: entry.id || 0,
- children: [
- [entry.aboveAppWindows, transform_above],
- [entry.imeWindows, transform_ime],
- [entry.stacks, transform_stack],
- [entry.tasks, transform_task],
- [entry.belowAppWindows, transform_below],
- [entry.windowContainer.children.reverse(), transform_window_container_child],
- ],
- bounds,
- });
-}
-
-function transform_policy(entry) {
- return transform({
- obj: entry,
- kind: 'policy',
- name: 'policy',
- children: [],
- });
-}
-
-function transform_window_service(entry) {
- return transform({
- obj: entry,
- kind: 'service',
- name: '',
- children: [
- [entry.rootWindowContainer.displays, transform_display_content],
- [entry.rootWindowContainer.windowContainer.children.reverse(),
- transform_window_container_child],
- [[entry.policy], transform_policy],
- ],
- timestamp: entry.elapsedRealtimeNanos,
- });
-}
-
-function transform_entry(entry) {
- return transform({
- obj: entry,
- kind: 'entry',
- name: nanos_to_string(entry.elapsedRealtimeNanos),
- children: [
- [entry.windowManagerService.rootWindowContainer.displays, transform_display_content],
- [entry.windowManagerService.rootWindowContainer.windowContainer.children.reverse(),
- transform_window_container_child],
- [[entry.windowManagerService.policy], transform_policy],
- ],
- timestamp: entry.elapsedRealtimeNanos,
- stableId: 'entry',
- });
-}
-
-function transform_window_trace(entries) {
- return transform({
- obj: entries,
- kind: 'entries',
- name: 'entries',
- children: [
- [entries.entry, transform_entry],
- ],
- });
-}
-
-function shortenComponentName(name) {
- if (!name.includes('/')) {
- return name
- }
- var split = name.split('/');
- var pkg = split[0];
- var clazz = split.slice(1).join('/');
- if (clazz.startsWith(pkg + '.')) {
- clazz = clazz.slice(pkg.length + 1);
- return [pkg, clazz].join('/');
- }
- return name;
-}
-
-export {transform_window_service, transform_window_trace};
diff --git a/tools/winscope/src/utils/compatibility.js b/tools/winscope/src/utils/compatibility.js
new file mode 100644
index 000000000..5685f3787
--- /dev/null
+++ b/tools/winscope/src/utils/compatibility.js
@@ -0,0 +1,21 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+const CompatibleFeatures = {
+ DiffVisualization: true,
+}
+
+export { CompatibleFeatures } \ No newline at end of file
diff --git a/tools/winscope/src/utils/consts.js b/tools/winscope/src/utils/consts.js
new file mode 100644
index 000000000..86799d926
--- /dev/null
+++ b/tools/winscope/src/utils/consts.js
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Should be kept in sync with ENUM is in Google3 under:
+ * google3/wireless/android/tools/android_bug_tool/extension/common/actions
+ */
+const WebContentScriptMessageType = {
+ UNKNOWN: 0,
+ CONVERT_OBJECT_URL: 1,
+ CONVERT_OBJECT_URL_RESPONSE: 2,
+};
+
+const NAVIGATION_STYLE = {
+ GLOBAL: 'Global',
+ FOCUSED: 'Focused',
+ CUSTOM: 'Custom',
+ TARGETED: 'Targeted',
+};
+
+const logLevel = {
+ INFO: 'info',
+ DEBUG: 'debug',
+ VERBOSE: 'verbose',
+ WARN: 'warn',
+ ERROR: 'error',
+ WTF: 'wtf',
+}
+
+export { WebContentScriptMessageType, NAVIGATION_STYLE, logLevel };
diff --git a/tools/winscope/src/utils/diff.js b/tools/winscope/src/utils/diff.js
new file mode 100644
index 000000000..0a6e10b05
--- /dev/null
+++ b/tools/winscope/src/utils/diff.js
@@ -0,0 +1,278 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// TODO (b/162300507): Get rid of cloning
+import cloneDeep from 'lodash.clonedeep';
+
+export const DiffType = Object.freeze({
+ NONE: 'none',
+ ADDED: 'added',
+ DELETED: 'deleted',
+ ADDED_MOVE: 'addedMove',
+ DELETED_MOVE: 'deletedMove',
+ MODIFIED: 'modified',
+});
+
+export function asRawTreeViewObject(obj) {
+ const children = obj.children?.map(child => child.rawTreeViewObject) ?? []
+
+ return {
+ kind: obj.kind,
+ name: obj.name,
+ shortName: obj.shortName,
+ stableId: obj.stableId,
+ chips: obj.chips,
+ obj: obj.obj,
+ children,
+ ref: obj,
+ };
+}
+
+export function defaultModifiedCheck(newNode, oldNode) {
+ if (!newNode && !oldNode) {
+ return false;
+ }
+
+ if ((newNode && !oldNode) || (!newNode && oldNode)) {
+ return true;
+ }
+
+ return JSON.stringify(newNode.obj) !== JSON.stringify(oldNode.obj);
+}
+
+function isPrimitive(test) {
+ return test !== Object(test);
+}
+
+export class DiffGenerator {
+ constructor(tree) {
+ if (tree.rawTreeViewObject) {
+ this.tree = tree.rawTreeViewObject;
+ } else {
+ this.tree = tree;
+ }
+ }
+
+ compareWith(tree) {
+ if (tree?.rawTreeViewObject) {
+ this.diffWithTree = tree.rawTreeViewObject;
+ } else {
+ this.diffWithTree = tree;
+ }
+
+ return this;
+ }
+
+ withUniqueNodeId(getNodeId) {
+ this.getNodeId = (node) => {
+ const id = getNodeId(node);
+ if (id === null || id === undefined) {
+ console.error('Null node ID for node', node);
+ throw new Error('Node ID can\'t be null or undefined');
+ }
+ return id;
+ };
+ return this;
+ }
+
+ withModifiedCheck(isModified) {
+ this.isModified = isModified;
+ return this;
+ }
+
+ generateDiffTree() {
+ this.newMapping = this._generateIdToNodeMapping(this.tree);
+ this.oldMapping = this.diffWithTree ?
+ this._generateIdToNodeMapping(this.diffWithTree) : {};
+
+ const diffTrees =
+ this._generateDiffTree(this.tree, this.diffWithTree, [], []);
+
+ let diffTree;
+ if (diffTrees.length > 1) {
+ diffTree = {
+ kind: '',
+ name: 'DiffTree',
+ children: diffTrees,
+ stableId: 'DiffTree',
+ };
+ } else {
+ diffTree = diffTrees[0];
+ }
+
+ return Object.freeze(diffTree);
+ }
+
+ _generateIdToNodeMapping(node, acc) {
+ acc = acc || {};
+
+ const nodeId = this.getNodeId(node);
+
+ if (acc[nodeId]) {
+ throw new Error(`Duplicate node id '${nodeId}' detected...`);
+ }
+
+ acc[this.getNodeId(node)] = node;
+
+ if (node.children) {
+ for (const child of node.children) {
+ this._generateIdToNodeMapping(child, acc);
+ }
+ }
+
+ return acc;
+ }
+
+ _objIsEmpty(obj) {
+ return Object.keys(obj).length === 0 && obj.constructor === Object;
+ }
+
+ _cloneNodeWithoutChildren(node) {
+ const clone = {};
+
+ for (const key in node) {
+ if (key !== 'children') {
+ const val = node[key];
+ clone[key] = isPrimitive(val) ? val : cloneDeep(val);
+ }
+ }
+
+ return clone;
+ }
+
+ _generateDiffTree(newTree, oldTree, newTreeSiblings, oldTreeSiblings) {
+ const diffTrees = [];
+
+ // NOTE: A null ID represents a non existent node.
+ const newId = newTree ? this.getNodeId(newTree) : null;
+ const oldId = oldTree ? this.getNodeId(oldTree) : null;
+
+ const newTreeSiblingIds = newTreeSiblings.map(this.getNodeId);
+ const oldTreeSiblingIds = oldTreeSiblings.map(this.getNodeId);
+
+ if (newTree) {
+ // Deep clone newTree omitting children field
+ // Clone is required because trees are frozen objects — we can't
+ // modify the original tree object. Also means there is no side effect.
+ const diffTree = this._cloneNodeWithoutChildren(newTree);
+
+ // Default to no changes
+ diffTree.diff = {type: DiffType.NONE};
+
+ if (newId !== oldId) {
+ // A move, addition, or deletion has occurred
+ let nextOldTree;
+
+ // Check if newTree has been added or moved
+ if (!oldTreeSiblingIds.includes(newId)) {
+ if (this.oldMapping[newId]) {
+ // Objected existed in old tree, the counter party
+ // DELETED_MOVE will be/has been flagged and added to the
+ // diffTree when visiting it in the oldTree.
+ diffTree.diff = {type: DiffType.ADDED_MOVE};
+
+ // TODO: Figure out if oldTree is ever visited now...
+
+ // Switch out oldTree for new one to compare against
+ nextOldTree = this.oldMapping[newId];
+ } else {
+ diffTree.diff = {type: DiffType.ADDED};
+
+ // TODO: Figure out if oldTree is ever visited now...
+
+ // Stop comparing against oldTree
+ nextOldTree = null;
+ }
+ }
+
+ // Check if oldTree has been deleted of moved
+ if (oldTree && !newTreeSiblingIds.includes(oldId)) {
+ const deletedTreeDiff = this._cloneNodeWithoutChildren(oldTree);
+
+ if (this.newMapping[oldId]) {
+ deletedTreeDiff.diff = {type: DiffType.DELETED_MOVE};
+
+ // Stop comparing against oldTree, will be/has been
+ // visited when object is seen in newTree
+ nextOldTree = null;
+ } else {
+ deletedTreeDiff.diff = {type: DiffType.DELETED};
+
+ // Visit all children to check if they have been deleted or moved
+ deletedTreeDiff.children = this._visitChildren(null, oldTree);
+ }
+
+ diffTrees.push(deletedTreeDiff);
+ }
+
+ oldTree = nextOldTree;
+ } else {
+ // TODO: Always have modified check and add modified tags on top of
+ // others
+ // NOTE: Doesn't check for moved and modified at the same time
+ if (this.isModified && this.isModified(newTree, oldTree)) {
+ diffTree.diff = {type: DiffType.MODIFIED};
+ }
+ }
+
+ diffTree.children = this._visitChildren(newTree, oldTree);
+ diffTrees.push(diffTree);
+ } else if (oldTree) {
+ if (!newTreeSiblingIds.includes(oldId)) {
+ // Deep clone oldTree omitting children field
+ const diffTree = this._cloneNodeWithoutChildren(oldTree);
+
+ // newTree doesn't exists, oldTree has either been moved or deleted.
+ if (this.newMapping[oldId]) {
+ diffTree.diff = {type: DiffType.DELETED_MOVE};
+ } else {
+ diffTree.diff = {type: DiffType.DELETED};
+ }
+
+ diffTree.children = this._visitChildren(null, oldTree);
+ diffTrees.push(diffTree);
+ }
+ } else {
+ throw new Error('Both newTree and oldTree are undefined...');
+ }
+
+ return diffTrees;
+ }
+
+ _visitChildren(newTree, oldTree) {
+ // Recursively traverse all children of new and old tree.
+ const diffChildren = [];
+
+ // TODO: Try replacing this with some sort of zipWith.
+ const numOfChildren = Math.max(
+ newTree?.children.length ?? 0, oldTree?.children.length ?? 0);
+ for (let i = 0; i < numOfChildren; i++) {
+ const newChild = i < newTree?.children.length ?
+ newTree.children[i] : null;
+
+ const oldChild = i < oldTree?.children.length ?
+ oldTree.children[i] : null;
+
+ const childDiffTrees = this._generateDiffTree(
+ newChild, oldChild,
+ newTree?.children ?? [], oldTree?.children ?? [],
+ );
+ diffChildren.push(...childDiffTrees);
+ }
+
+ return diffChildren;
+ }
+}
diff --git a/tools/winscope/src/utils/names.js b/tools/winscope/src/utils/names.js
new file mode 100644
index 000000000..a5ae03797
--- /dev/null
+++ b/tools/winscope/src/utils/names.js
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Returns just the class name and root package information
+function getComponentClassName(componentFullName) {
+ const classParts = componentFullName.split('.');
+
+ if (classParts.length <= 3) {
+ return componentFullName;
+ }
+
+ const className = classParts.slice(-1).pop();
+
+ return `${classParts[0]}.${classParts[1]}.(...).${className}`
+}
+
+const hashCode = /([A-Fa-f0-9]{7}|[A-Fa-f0-9]{6})/;
+const packageRegex = /(([a-z][a-z_0-9]*\.)*([a-z][a-z_0-9]*))/;
+const qualifiedClassNameRegex = /(([a-z][a-z_0-9]*\.)*[A-Z_]($[A-Z_]|[\w_])*)/;
+
+const surfaceRegex =
+ new RegExp(/^Surface\(.*\)\/@0x/.source + hashCode.source +
+ / - .*/.source + "$");
+
+const moduleName =
+ new RegExp("^" +
+ "(" + packageRegex.source + /\//.source + ")?" +
+ qualifiedClassNameRegex.source +
+ /(\$.*)?/.source +
+ /(\#.*)?/.source +
+ "$");
+
+function getSimplifiedLayerName(layerName) {
+ // Get rid of prepended hash code
+ let removedHashCodePrefix = false;
+ if (new RegExp("^" + hashCode.source + " ").test(layerName)) {
+ layerName = layerName.split(" ").slice(1).join(" ");
+ removedHashCodePrefix = true;
+ }
+
+ if (/^ActivityRecord\{.*\}?(\#[0-9]+)?$/.test(layerName)) {
+ return "ActivityRecord";
+ }
+
+ if (/^WindowToken\{.*\}(\#[0-9]*)?$/.test(layerName)) {
+ return "WindowToken";
+ }
+
+ if (/^WallpaperWindowToken\{.*\}(\#[0-9]*)?$/.test(layerName)) {
+ return "WallpaperWindowToken";
+ }
+
+ if (surfaceRegex.test(layerName)) {
+ return "Surface - " + layerName.split("- ").slice(-1).pop();
+ }
+
+ if (moduleName.test(layerName)) {
+ return layerName.split(".").slice(-1).pop();
+ }
+
+ if (removedHashCodePrefix) {
+ return layerName;
+ }
+
+ return null;
+}
+
+export { getComponentClassName, getSimplifiedLayerName }; \ No newline at end of file
diff --git a/tools/winscope/src/utils/utils.js b/tools/winscope/src/utils/utils.js
new file mode 100644
index 000000000..f8ec1981a
--- /dev/null
+++ b/tools/winscope/src/utils/utils.js
@@ -0,0 +1,87 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Find the index of the last element matching the predicate in a sorted array
+function findLastMatchingSorted(array, predicate) {
+ let a = 0;
+ let b = array.length - 1;
+ while (b - a > 1) {
+ const m = Math.floor((a + b) / 2);
+ if (predicate(array, m)) {
+ a = m;
+ } else {
+ b = m - 1;
+ }
+ }
+
+ return predicate(array, b) ? b : a;
+}
+
+// Make sure stableId is unique (makes old versions of proto compatible)
+function stableIdCompatibilityFixup(item) {
+ // For backwards compatibility
+ // (the only item that doesn't have a unique stable ID in the tree)
+ if (item.stableId === 'winToken|-|') {
+ return item.stableId + item.children[0].stableId;
+ }
+
+ return item.stableId;
+}
+
+const DIRECTION = Object.freeze({
+ BACKWARD: -1,
+ FORWARD: 1,
+});
+
+const TimeUnits = Object.freeze({
+ NANO_SECONDS: 'ns',
+ MILLI_SECONDS: 'ms',
+ SECONDS: 's',
+ MINUTES: 'm',
+ HOURS: 'h',
+ DAYS: 'd',
+});
+
+function nanosToString(elapsedRealtimeNanos, precision) {
+ const units = [
+ [1000000, TimeUnits.NANO_SECONDS],
+ [1000, TimeUnits.MILLI_SECONDS],
+ [60, TimeUnits.SECONDS],
+ [60, TimeUnits.MINUTES],
+ [24, TimeUnits.HOURS],
+ [Infinity, TimeUnits.DAYS],
+ ];
+
+ const parts = [];
+
+ let precisionThresholdReached = false;
+ units.some(([div, timeUnit], i) => {
+ const part = (elapsedRealtimeNanos % div).toFixed()
+ if (timeUnit === precision) {
+ precisionThresholdReached = true;
+ }
+ if (precisionThresholdReached) {
+ parts.push(part + timeUnit);
+ }
+ elapsedRealtimeNanos = Math.floor(elapsedRealtimeNanos / div);
+
+ return elapsedRealtimeNanos == 0;
+ });
+
+ return parts.reverse().join('');
+}
+
+export { DIRECTION, findLastMatchingSorted, stableIdCompatibilityFixup, nanosToString, TimeUnits } \ No newline at end of file
diff --git a/tools/winscope/static/favicon.svg b/tools/winscope/static/favicon.svg
new file mode 100644
index 000000000..8a75c7fcb
--- /dev/null
+++ b/tools/winscope/static/favicon.svg
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="512"
+ height="512"
+ viewBox="0 0 135.46666 135.46667"
+ version="1.1"
+ id="svg8"
+ inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
+ sodipodi:docname="winscope.svg">
+ <defs
+ id="defs2">
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient144">
+ <stop
+ style="stop-color:#3ddb85;stop-opacity:1;"
+ offset="0"
+ id="stop140" />
+ <stop
+ style="stop-color:#3ddb85;stop-opacity:0;"
+ offset="1"
+ id="stop142" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient144"
+ id="linearGradient146"
+ x1="334.86557"
+ y1="288.25122"
+ x2="362.64478"
+ y2="405.42892"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient144"
+ id="linearGradient152"
+ gradientUnits="userSpaceOnUse"
+ x1="334.86557"
+ y1="288.25122"
+ x2="362.64478"
+ y2="405.42892" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.4"
+ inkscape:cx="369.78115"
+ inkscape:cy="43.694507"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer2"
+ showgrid="false"
+ units="px"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-width="2560"
+ inkscape:window-height="1399"
+ inkscape:window-x="1440"
+ inkscape:window-y="20"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ style="display:inline"
+ transform="translate(0,-161.53331)">
+ <g
+ id="g60"
+ transform="matrix(1.4161793,0,0,1.4161793,-266.89731,76.345061)">
+ <path
+ id="path46"
+ d="m 254.98635,139.13116 c -4.3276,0 -7.84784,-3.71395 -7.84784,-8.27594 0,-4.56195 4.14824,-8.27278 7.84784,-8.27285 3.6996,-9e-5 7.84855,3.71014 7.84855,8.27285 0,4.56276 -3.52025,8.27594 -7.84855,8.27594 m -36.93749,-2.38905 c -3.0836,0 -5.59192,-2.64634 -5.59192,-5.89694 0,-3.25059 2.50784,-5.89476 5.59192,-5.89476 3.08358,0 5.5919,2.64364 5.5919,5.89476 0,3.25114 -2.50781,5.89694 -5.5919,5.89694 m 52.09761,-36.05821 11.17666,-20.405632 c 0.64058,-1.172551 0.25981,-2.670449 -0.85112,-3.348238 -1.11236,-0.674958 -2.53307,-0.273633 -3.17621,0.897219 l -11.31638,20.663525 c -8.6545,-4.162927 -18.37356,-6.482308 -28.74463,-6.482308 -10.37108,0 -20.09013,2.319381 -28.74411,6.482308 L 197.17379,77.827249 c -0.64314,-1.170852 -2.06385,-1.572177 -3.17621,-0.897219 -1.11167,0.677199 -1.49261,2.175808 -0.85113,3.348238 L 204.3231,100.6839 c -19.19192,11.00346 -32.318,31.48516 -34.23828,55.68305 h 134.29993 c -1.9218,-24.19736 -15.04789,-44.67959 -34.23828,-55.68357"
+ inkscape:connector-curvature="0"
+ style="fill:#3ddb85;stroke-width:0.52547503"
+ sodipodi:nodetypes="csssccsssccccccscccccccc" />
+ <path
+ id="path48"
+ d="M -0.75490308,-4.3032616 H 466.2911 V 245.86074 H -0.75490308 Z"
+ inkscape:connector-curvature="0"
+ style="fill:none" />
+ </g>
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Layer 2"
+ transform="translate(0,-161.53331)"
+ style="display:inline">
+ <g
+ id="g150"
+ transform="matrix(1.2390981,0,0,1.2745122,-22.278191,-60.145091)">
+ <path
+ inkscape:connector-curvature="0"
+ style="font-weight:400;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;text-transform:none;white-space:normal;display:inline;overflow:visible;opacity:0.92156863;isolation:auto;mix-blend-mode:normal;fill:#000000;stroke-width:3.05656147"
+ d="m 93.327473,227.20793 c -11.817096,0 -21.462353,9.58571 -21.462353,21.32967 0,11.74397 9.645257,21.32967 21.462353,21.32967 10.773667,0 19.717027,-7.97589 21.216847,-18.28256 h 2.56476 c 1.69335,1e-5 3.06608,-1.36423 3.06607,-3.04711 -1e-5,-1.68286 -1.37273,-3.04709 -3.06607,-3.04708 h -2.56476 c -1.49999,-10.3067 -10.44318,-18.28259 -21.216847,-18.28259 z m 0,6.09419 c 8.503037,0 15.330367,6.78508 15.330367,15.23548 0,8.45041 -6.82733,15.2355 -15.330367,15.2355 -8.503052,0 -15.330212,-6.78509 -15.330212,-15.2355 0,-8.45041 6.82716,-15.23548 15.330212,-15.23548 z m 23.781607,21.32968 c -1.69335,-2e-5 -3.06609,1.36422 -3.06609,3.0471 -1e-5,1.68288 1.37274,3.04713 3.06609,3.04711 1.69335,1e-5 3.06608,-1.36423 3.06607,-3.04711 0,-1.68287 -1.37273,-3.04711 -3.06607,-3.0471 z m 0,9.1413 c -1.69334,-2e-5 -3.06607,1.3642 -3.06609,3.04706 -1e-5,1.68288 1.37274,3.04713 3.06609,3.04711 1.69335,10e-6 3.06608,-1.36423 3.06607,-3.04711 -2e-5,-1.68286 -1.37274,-3.04707 -3.06607,-3.04706 z m 0,9.14127 c -1.69335,-2e-5 -3.06609,1.36421 -3.06609,3.04709 0,1.68288 1.37274,3.04712 3.06609,3.0471 1.69334,1e-5 3.06607,-1.36423 3.06607,-3.0471 0,-1.68287 -1.37273,-3.0471 -3.06607,-3.04709 z m 0,9.14129 c -1.69334,-2e-5 -3.06608,1.36421 -3.06609,3.04708 -1e-5,1.68288 1.37274,3.04713 3.06609,3.04711 1.69335,10e-6 3.06608,-1.36423 3.06607,-3.04711 -1e-5,-1.68286 -1.37273,-3.04709 -3.06607,-3.04708 z"
+ font-weight="400"
+ overflow="visible"
+ id="path62"
+ sodipodi:nodetypes="sssccsccsssssscccccccccccscsccscsc" />
+ <path
+ transform="matrix(0.26458333,0,0,0.26458333,0,161.53331)"
+ sodipodi:nodetypes="sssssscssscs"
+ inkscape:connector-curvature="0"
+ id="path130"
+ d="m 346.52914,385.88304 c -9.74153,-1.15668 -19.18712,-4.7389 -27.36682,-10.3788 -4.29704,-2.96281 -11.19439,-9.96762 -14.26053,-14.48272 -3.09123,-4.55204 -6.34453,-11.66167 -7.89403,-17.2513 -1.63959,-5.91462 -2.25943,-17.8322 -1.2539,-24.10849 3.61484,-22.56303 20.01002,-40.31938 42.90934,-46.47177 4.28814,-1.1521 5.83599,-1.30305 13.67432,-1.33348 9.26661,-0.036 11.69398,0.2988 18.66447,2.5742 8.55206,2.79168 15.83504,7.31293 22.56577,14.00876 20.25076,20.14579 22.48959,52.06917 5.25566,74.94032 -8.89686,11.80702 -22.47121,19.85596 -37.24125,22.08226 -4.528,0.6825 -11.2641,0.87091 -15.05303,0.42102 z"
+ style="opacity:0.49673205;fill:url(#linearGradient152);fill-opacity:1;stroke:none;stroke-width:0.50507629" />
+ </g>
+ </g>
+</svg>
diff --git a/tools/winscope/tsconfig.json b/tools/winscope/tsconfig.json
new file mode 100644
index 000000000..486e68b16
--- /dev/null
+++ b/tools/winscope/tsconfig.json
@@ -0,0 +1,22 @@
+{
+ "compilerOptions": {
+ "baseUrl": "./src",
+ "outDir": "./dist/",
+ "noImplicitAny": false,
+ "module": "es6",
+ "target": "es5",
+ "allowJs": false,
+ "resolveJsonModule": true,
+ "moduleResolution": "node",
+ "allowSyntheticDefaultImports": true,
+ "lib": [
+ "es2019",
+ "dom",
+ ],
+ "paths": {
+ "@/*": [
+ "*"
+ ],
+ }
+ }
+} \ No newline at end of file
diff --git a/tools/winscope/vue.config.js b/tools/winscope/vue.config.js
new file mode 100644
index 000000000..ab7013e05
--- /dev/null
+++ b/tools/winscope/vue.config.js
@@ -0,0 +1,5 @@
+module.exports = {
+ configureWebpack: {
+ devtool: 'source-map'
+ }
+ } \ No newline at end of file
diff --git a/tools/winscope/webpack.config.common.js b/tools/winscope/webpack.config.common.js
new file mode 100644
index 000000000..eab027558
--- /dev/null
+++ b/tools/winscope/webpack.config.common.js
@@ -0,0 +1,149 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+'use strict';
+
+const path = require('path');
+const fs = require('fs');
+
+const VueLoaderPlugin = require('vue-loader/lib/plugin');
+const HtmlWebpackPlugin = require('html-webpack-plugin');
+const KotlinWebpackPlugin = require('@jetbrains/kotlin-webpack-plugin');
+const HtmlWebpackInlineSourcePlugin =
+ require('html-webpack-inline-source-plugin');
+
+const isDev = process.env.NODE_ENV === 'development';
+
+
+function getWaylandSafePath() {
+ const waylandPath =
+ path.resolve(__dirname, '../../../vendor/google_arc/libs/wayland_service');
+
+ if (fs.existsSync(waylandPath)) {
+ return waylandPath;
+ }
+
+ return path.resolve(__dirname, 'src/stubs');
+}
+
+const webpackConfig = {
+ entry: {
+ polyfill: '@babel/polyfill',
+ main: './src/main.js',
+ },
+ externals: {
+ _: 'lodash',
+ },
+ resolve: {
+ extensions: ['.tsx', '.ts', '.js', '.vue'],
+ alias: {
+ 'vue$': isDev ? 'vue/dist/vue.runtime.js' : 'vue/dist/vue.runtime.min.js',
+ '@': path.resolve(__dirname, 'src'),
+ 'WaylandSafePath': getWaylandSafePath(),
+ },
+ modules: [
+ 'node_modules',
+ 'kotlin_build',
+ path.resolve(__dirname, '../../..'),
+ ],
+ },
+ resolveLoader: {
+ modules: [
+ 'node_modules',
+ path.resolve(__dirname, 'loaders'),
+ ],
+ },
+ module: {
+ rules: [
+ {
+ test: /\.vue$/,
+ loader: 'vue-loader',
+ include: path.resolve(__dirname, './src'),
+ exclude: /node_modules/,
+ },
+ {
+ test: /\.tsx?$/,
+ use: 'ts-loader',
+ include: path.resolve(__dirname, './src'),
+ exclude: /node_modules/,
+ },
+ {
+ test: /\.js$/,
+ loader: 'babel-loader',
+ include: path.resolve(__dirname, './src'),
+ exclude: /node_modules/,
+ },
+ {
+ test: /\.css$/,
+ use: [
+ 'vue-style-loader',
+ {loader: 'css-loader', options: {sourceMap: isDev}},
+ ],
+ include: path.resolve(__dirname, './src'),
+ exclude: /node_modules/,
+ },
+ {
+ test: /\.proto$/,
+ loader: 'proto-loader',
+ options: {
+ paths: [
+ path.resolve(__dirname, '../../..'),
+ path.resolve(__dirname, '../../../external/protobuf/src'),
+ ],
+ },
+ },
+ {
+ test: /\.(png|jpg|gif|svg)$/,
+ loader: 'file-loader',
+ options: {
+ name: '[name].[ext]?[hash]',
+ },
+ },
+ {
+ test: /\.(ttf|otf|eot|woff|woff2)$/,
+ use: {
+ loader: 'file-loader',
+ options: {
+ name: 'fonts/[name].[ext]',
+ },
+ },
+ },
+ ],
+ },
+ plugins: [
+ new VueLoaderPlugin(),
+ new HtmlWebpackPlugin({
+ inlineSource: isDev ? false : '.(js|css)',
+ template: 'src/index_template.html',
+ }),
+ new HtmlWebpackInlineSourcePlugin(),
+ new KotlinWebpackPlugin({
+ src: [
+ path.join(__dirname, '../../../platform_testing/libraries/flicker/' +
+ 'src/com/android/server/wm/traces/common/'),
+ ],
+ output: 'kotlin_build',
+ moduleName: 'flicker',
+ librariesAutoLookup: true,
+ sourceMaps: true,
+ sourceMapEmbedSources: 'always',
+ verbose: true,
+ optimize: true,
+ }),
+ ],
+};
+
+module.exports = webpackConfig;
diff --git a/tools/winscope/webpack.config.dev.js b/tools/winscope/webpack.config.dev.js
new file mode 100644
index 000000000..31d79ca81
--- /dev/null
+++ b/tools/winscope/webpack.config.dev.js
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+'use strict';
+
+const webpack = require('webpack');
+const { merge } = require('webpack-merge');
+const path = require('path');
+const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin');
+const commonConfig = require('./webpack.config.common');
+const environment = require('./env/dev.env');
+
+const webpackConfig = merge(commonConfig, {
+ mode: 'development',
+ devtool: 'cheap-module-eval-source-map',
+ output: {
+ path: path.resolve(__dirname, 'dist'),
+ publicPath: '/',
+ filename: 'js/[name].bundle.js',
+ chunkFilename: 'js/[id].chunk.js'
+ },
+ optimization: {
+ runtimeChunk: 'single',
+ splitChunks: {
+ chunks: 'all'
+ }
+ },
+ module: {
+ rules: [
+ // Enable sourcemaps for Kotlin code, source-map-loader should be configured
+ {
+ test: /\.js$/,
+ include: path.resolve(__dirname, './kotlin_build'),
+ exclude: [
+ /kotlin\.js$/, // Kotlin runtime doesn't have sourcemaps at the moment
+ ],
+ use: ['source-map-loader'],
+ enforce: 'pre'
+ },
+ ]
+ },
+ plugins: [
+ new webpack.EnvironmentPlugin(environment),
+ new webpack.HotModuleReplacementPlugin(),
+ new FriendlyErrorsPlugin()
+ ],
+ devServer: {
+ compress: true,
+ historyApiFallback: true,
+ hot: true,
+ open: true,
+ overlay: true,
+ port: 8080,
+ stats: {
+ normal: true
+ }
+ }
+});
+
+module.exports = webpackConfig; \ No newline at end of file
diff --git a/tools/winscope/webpack.config.js b/tools/winscope/webpack.config.js
index ff31ff361..ac6ab2334 100644
--- a/tools/winscope/webpack.config.js
+++ b/tools/winscope/webpack.config.js
@@ -1,5 +1,5 @@
/*
- * Copyright 2017, The Android Open Source Project
+ * Copyright 2020, The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,113 +14,12 @@
* limitations under the License.
*/
-const fs = require('fs');
-var path = require('path')
-var webpack = require('webpack')
-var HtmlWebpackPlugin = require('html-webpack-plugin')
-var HtmlWebpackInlineSourcePlugin = require('html-webpack-inline-source-plugin')
+'use strict';
-function getWaylandSafePath() {
- waylandPath = path.resolve(__dirname, '../../../vendor/google_arc/libs/wayland_service');
- if (fs.existsSync(waylandPath)) {
- return waylandPath;
- }
- return path.resolve(__dirname, 'src/stubs');
-}
+const environment = (process.env.NODE_ENV || 'development').trim();
-module.exports = {
- entry: './src/main.js',
- output: {
- path: path.resolve(__dirname, './dist'),
- filename: 'build.js'
- },
- module: {
- rules: [
- {
- test: /\.vue$/,
- loader: 'vue-loader',
- options: {
- loaders: {
- }
- // other vue-loader options go here
- }
- },
- {
- test: /\.js$/,
- loader: 'babel-loader',
- exclude: /node_modules/
- },
- {
- test: /\.proto$/,
- loader: 'proto-loader',
- options: {
- paths: [
- path.resolve(__dirname, '../../..'),
- path.resolve(__dirname, '../../../external/protobuf/src')
- ]
- }
- },
- {
- test: /\.(png|jpg|gif|svg)$/,
- loader: 'file-loader',
- options: {
- name: '[name].[ext]?[hash]'
- }
- }
- ]
- },
- resolve: {
- alias: {
- WaylandSafePath: getWaylandSafePath(),
- },
- modules: [
- 'node_modules',
- path.resolve(__dirname, '../../..')
- ],
- },
- resolveLoader: {
- modules: [
- 'node_modules',
- path.resolve(__dirname, 'loaders')
- ]
- },
- devServer: {
- historyApiFallback: true,
- noInfo: true
- },
- performance: {
- hints: false
- },
- devtool: '#eval-source-map'
+if (environment === 'development') {
+ module.exports = require('./webpack.config.dev');
+} else {
+ module.exports = require('./webpack.config.prod');
}
-
-var prod = (process.env.NODE_ENV === 'production');
-
-if (prod) {
- module.exports.devtool = '#source-map'
- // http://vue-loader.vuejs.org/en/workflow/production.html
- module.exports.plugins = (module.exports.plugins || []).concat([
- new webpack.DefinePlugin({
- 'process.env': {
- NODE_ENV: '"production"'
- }
- }),
- new webpack.optimize.UglifyJsPlugin({
- sourceMap: true,
- compress: {
- warnings: false
- }
- }),
- new webpack.LoaderOptionsPlugin({
- minimize: true
- })
- ])
-}
-
-module.exports.plugins = (module.exports.plugins || []).concat([
- new HtmlWebpackPlugin({
- inlineSource: prod ? '.(js|css)' : false,
- template: 'src/index_template.html'
- }),
- new HtmlWebpackInlineSourcePlugin(),
-]);
diff --git a/tools/winscope/webpack.config.prod.js b/tools/winscope/webpack.config.prod.js
new file mode 100644
index 000000000..33f7a8d82
--- /dev/null
+++ b/tools/winscope/webpack.config.prod.js
@@ -0,0 +1,97 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+'use strict';
+
+const webpack = require('webpack');
+const {merge} = require('webpack-merge');
+const path = require('path');
+const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
+const MiniCSSExtractPlugin = require('mini-css-extract-plugin');
+const CompressionPlugin = require('compression-webpack-plugin');
+const commonConfig = require('./webpack.config.common');
+const isProd = process.env.NODE_ENV === 'production';
+const environment =
+ isProd ? require('./env/prod.env') : require('./env/staging.env');
+
+
+const webpackConfig = merge(commonConfig, {
+ mode: 'production',
+ output: {
+ path: path.resolve(__dirname, 'dist'),
+ publicPath: '/',
+ filename: 'js/[hash].js',
+ chunkFilename: 'js/[id].[hash].chunk.js',
+ },
+ optimization: {
+ runtimeChunk: 'single',
+ minimizer: [
+ new OptimizeCSSAssetsPlugin({
+ cssProcessorPluginOptions: {
+ preset: ['default', {discardComments: {removeAll: true}}],
+ },
+ }),
+ ],
+ splitChunks: {
+ chunks: 'all',
+ maxInitialRequests: Infinity,
+ minSize: 0,
+ cacheGroups: {
+ vendor: {
+ test: /[\\/]node_modules[\\/]/,
+ name(module) {
+ const packageName = module.context
+ .match(/[\\/]node_modules[\\/](.*?)([\\/]|$)/)[1];
+ return `npm.${packageName.replace('@', '')}`;
+ },
+ },
+ styles: {
+ test: /\.css$/,
+ name: 'styles',
+ chunks: 'all',
+ enforce: true,
+ },
+ },
+ },
+ },
+ plugins: [
+ new webpack.EnvironmentPlugin(environment),
+ new MiniCSSExtractPlugin({
+ filename: 'css/[name].[hash].css',
+ chunkFilename: 'css/[id].[hash].css',
+ }),
+ new CompressionPlugin({
+ filename: '[path].gz[query]',
+ algorithm: 'gzip',
+ test: new RegExp('\\.(js|css)$'),
+ threshold: 10240,
+ minRatio: 0.8,
+ }),
+ new webpack.HashedModuleIdsPlugin(),
+ ],
+});
+
+if (!isProd) {
+ webpackConfig.devtool = 'source-map';
+
+ if (process.env.npm_config_report) {
+ const BundleAnalyzerPlugin =
+ require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
+ webpackConfig.plugins.push(new BundleAnalyzerPlugin());
+ }
+}
+
+module.exports = webpackConfig;
diff --git a/tools/winscope/webpack.spec.config.js b/tools/winscope/webpack.spec.config.js
new file mode 100644
index 000000000..dcbcbf9e1
--- /dev/null
+++ b/tools/winscope/webpack.spec.config.js
@@ -0,0 +1,117 @@
+/*
+ * Copyright 2017, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+const fs = require('fs');
+const path = require('path');
+const glob = require('glob');
+const KotlinWebpackPlugin = require('@jetbrains/kotlin-webpack-plugin');
+
+function getWaylandSafePath() {
+ waylandPath = path.resolve(
+ __dirname, '../../../vendor/google_arc/libs/wayland_service');
+ if (fs.existsSync(waylandPath)) {
+ return waylandPath;
+ }
+ return path.resolve(__dirname, 'src/stubs');
+}
+
+module.exports = {
+ entry: {
+ js: glob.sync('./spec/**/*Spec.js'),
+ },
+ output: {
+ path: path.resolve(__dirname, './dist'),
+ filename: 'bundleSpec.js',
+ },
+ target: 'node',
+ node: {
+ __dirname: false,
+ },
+ module: {
+ rules: [
+ {
+ test: /\.js$/,
+ loader: 'babel-loader',
+ exclude: /node_modules/,
+ },
+ {
+ test: /\.tsx?$/,
+ use: 'ts-loader',
+ include: path.resolve(__dirname, './src'),
+ exclude: /node_modules/,
+ },
+ {
+ test: /\.proto$/,
+ loader: 'proto-loader',
+ options: {
+ paths: [
+ path.resolve(__dirname, '../../..'),
+ path.resolve(__dirname, '../../../external/protobuf/src'),
+ ],
+ },
+ },
+ {
+ test: /\.pb/,
+ loader: 'file-loader',
+ options: {
+ paths: [
+ path.resolve(__dirname, './spec'),
+ ],
+ },
+ },
+ ],
+ },
+ resolve: {
+ extensions: ['.tsx', '.ts', '.js', '.vue'],
+ alias: {
+ '@': path.resolve(__dirname, 'src'),
+ 'WaylandSafePath': getWaylandSafePath(),
+ },
+ modules: [
+ 'node_modules',
+ 'kotlin_build',
+ path.resolve(__dirname, '../../..'),
+ ],
+ },
+ resolveLoader: {
+ modules: [
+ 'node_modules',
+ path.resolve(__dirname, 'loaders'),
+ ],
+ },
+ plugins: [
+ new KotlinWebpackPlugin({
+ src: [
+ path.join(__dirname, '../../../platform_testing/libraries/flicker/' +
+ 'src/com/android/server/wm/traces/common/'),
+ ],
+ output: 'kotlin_build',
+ moduleName: 'flicker',
+ librariesAutoLookup: true,
+ sourceMaps: true,
+ sourceMapEmbedSources: 'always',
+ verbose: true,
+ optimize: true,
+ }),
+ ],
+ devServer: {
+ historyApiFallback: true,
+ noInfo: true,
+ },
+ performance: {
+ hints: false,
+ },
+};
diff --git a/tools/winscope/yarn.lock b/tools/winscope/yarn.lock
index b91e14d8b..9e53450f4 100644
--- a/tools/winscope/yarn.lock
+++ b/tools/winscope/yarn.lock
@@ -2,6 +2,944 @@
# yarn lockfile v1
+"@babel/code-frame@7.12.11":
+ version "7.12.11"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f"
+ integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==
+ dependencies:
+ "@babel/highlight" "^7.10.4"
+
+"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658"
+ integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==
+ dependencies:
+ "@babel/highlight" "^7.12.13"
+
+"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.13.12", "@babel/compat-data@^7.13.15", "@babel/compat-data@^7.13.8":
+ version "7.13.15"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.13.15.tgz#7e8eea42d0b64fda2b375b22d06c605222e848f4"
+ integrity sha512-ltnibHKR1VnrU4ymHyQ/CXtNXI6yZC0oJThyW78Hft8XndANwi+9H+UIklBDraIjFEJzw8wmcM427oDd9KS5wA==
+
+"@babel/core@^7.10.5":
+ version "7.13.15"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.13.15.tgz#a6d40917df027487b54312202a06812c4f7792d0"
+ integrity sha512-6GXmNYeNjS2Uz+uls5jalOemgIhnTMeaXo+yBUA72kC2uX/8VW6XyhVIo2L8/q0goKQA3EVKx0KOQpVKSeWadQ==
+ dependencies:
+ "@babel/code-frame" "^7.12.13"
+ "@babel/generator" "^7.13.9"
+ "@babel/helper-compilation-targets" "^7.13.13"
+ "@babel/helper-module-transforms" "^7.13.14"
+ "@babel/helpers" "^7.13.10"
+ "@babel/parser" "^7.13.15"
+ "@babel/template" "^7.12.13"
+ "@babel/traverse" "^7.13.15"
+ "@babel/types" "^7.13.14"
+ convert-source-map "^1.7.0"
+ debug "^4.1.0"
+ gensync "^1.0.0-beta.2"
+ json5 "^2.1.2"
+ semver "^6.3.0"
+ source-map "^0.5.0"
+
+"@babel/generator@^7.13.9":
+ version "7.13.9"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.13.9.tgz#3a7aa96f9efb8e2be42d38d80e2ceb4c64d8de39"
+ integrity sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==
+ dependencies:
+ "@babel/types" "^7.13.0"
+ jsesc "^2.5.1"
+ source-map "^0.5.0"
+
+"@babel/helper-annotate-as-pure@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz#0f58e86dfc4bb3b1fcd7db806570e177d439b6ab"
+ integrity sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==
+ dependencies:
+ "@babel/types" "^7.12.13"
+
+"@babel/helper-builder-binary-assignment-operator-visitor@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz#6bc20361c88b0a74d05137a65cac8d3cbf6f61fc"
+ integrity sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==
+ dependencies:
+ "@babel/helper-explode-assignable-expression" "^7.12.13"
+ "@babel/types" "^7.12.13"
+
+"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.13.13", "@babel/helper-compilation-targets@^7.13.8":
+ version "7.13.13"
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz#2b2972a0926474853f41e4adbc69338f520600e5"
+ integrity sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ==
+ dependencies:
+ "@babel/compat-data" "^7.13.12"
+ "@babel/helper-validator-option" "^7.12.17"
+ browserslist "^4.14.5"
+ semver "^6.3.0"
+
+"@babel/helper-create-class-features-plugin@^7.13.0":
+ version "7.13.11"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz#30d30a005bca2c953f5653fc25091a492177f4f6"
+ integrity sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==
+ dependencies:
+ "@babel/helper-function-name" "^7.12.13"
+ "@babel/helper-member-expression-to-functions" "^7.13.0"
+ "@babel/helper-optimise-call-expression" "^7.12.13"
+ "@babel/helper-replace-supers" "^7.13.0"
+ "@babel/helper-split-export-declaration" "^7.12.13"
+
+"@babel/helper-create-regexp-features-plugin@^7.12.13":
+ version "7.12.17"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz#a2ac87e9e319269ac655b8d4415e94d38d663cb7"
+ integrity sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.12.13"
+ regexpu-core "^4.7.1"
+
+"@babel/helper-define-polyfill-provider@^0.2.0":
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.0.tgz#a640051772045fedaaecc6f0c6c69f02bdd34bf1"
+ integrity sha512-JT8tHuFjKBo8NnaUbblz7mIu1nnvUDiHVjXXkulZULyidvo/7P6TY7+YqpV37IfF+KUFxmlK04elKtGKXaiVgw==
+ dependencies:
+ "@babel/helper-compilation-targets" "^7.13.0"
+ "@babel/helper-module-imports" "^7.12.13"
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/traverse" "^7.13.0"
+ debug "^4.1.1"
+ lodash.debounce "^4.0.8"
+ resolve "^1.14.2"
+ semver "^6.1.2"
+
+"@babel/helper-explode-assignable-expression@^7.12.13":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz#17b5c59ff473d9f956f40ef570cf3a76ca12657f"
+ integrity sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==
+ dependencies:
+ "@babel/types" "^7.13.0"
+
+"@babel/helper-function-name@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz#93ad656db3c3c2232559fd7b2c3dbdcbe0eb377a"
+ integrity sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==
+ dependencies:
+ "@babel/helper-get-function-arity" "^7.12.13"
+ "@babel/template" "^7.12.13"
+ "@babel/types" "^7.12.13"
+
+"@babel/helper-get-function-arity@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz#bc63451d403a3b3082b97e1d8b3fe5bd4091e583"
+ integrity sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==
+ dependencies:
+ "@babel/types" "^7.12.13"
+
+"@babel/helper-hoist-variables@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz#5d5882e855b5c5eda91e0cadc26c6e7a2c8593d8"
+ integrity sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==
+ dependencies:
+ "@babel/traverse" "^7.13.0"
+ "@babel/types" "^7.13.0"
+
+"@babel/helper-member-expression-to-functions@^7.13.0", "@babel/helper-member-expression-to-functions@^7.13.12":
+ version "7.13.12"
+ resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz#dfe368f26d426a07299d8d6513821768216e6d72"
+ integrity sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==
+ dependencies:
+ "@babel/types" "^7.13.12"
+
+"@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.13.12":
+ version "7.13.12"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz#c6a369a6f3621cb25da014078684da9196b61977"
+ integrity sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==
+ dependencies:
+ "@babel/types" "^7.13.12"
+
+"@babel/helper-module-transforms@^7.13.0", "@babel/helper-module-transforms@^7.13.14":
+ version "7.13.14"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz#e600652ba48ccb1641775413cb32cfa4e8b495ef"
+ integrity sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g==
+ dependencies:
+ "@babel/helper-module-imports" "^7.13.12"
+ "@babel/helper-replace-supers" "^7.13.12"
+ "@babel/helper-simple-access" "^7.13.12"
+ "@babel/helper-split-export-declaration" "^7.12.13"
+ "@babel/helper-validator-identifier" "^7.12.11"
+ "@babel/template" "^7.12.13"
+ "@babel/traverse" "^7.13.13"
+ "@babel/types" "^7.13.14"
+
+"@babel/helper-optimise-call-expression@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz#5c02d171b4c8615b1e7163f888c1c81c30a2aaea"
+ integrity sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==
+ dependencies:
+ "@babel/types" "^7.12.13"
+
+"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz#806526ce125aed03373bc416a828321e3a6a33af"
+ integrity sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==
+
+"@babel/helper-remap-async-to-generator@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz#376a760d9f7b4b2077a9dd05aa9c3927cadb2209"
+ integrity sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.12.13"
+ "@babel/helper-wrap-function" "^7.13.0"
+ "@babel/types" "^7.13.0"
+
+"@babel/helper-replace-supers@^7.12.13", "@babel/helper-replace-supers@^7.13.0", "@babel/helper-replace-supers@^7.13.12":
+ version "7.13.12"
+ resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz#6442f4c1ad912502481a564a7386de0c77ff3804"
+ integrity sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==
+ dependencies:
+ "@babel/helper-member-expression-to-functions" "^7.13.12"
+ "@babel/helper-optimise-call-expression" "^7.12.13"
+ "@babel/traverse" "^7.13.0"
+ "@babel/types" "^7.13.12"
+
+"@babel/helper-simple-access@^7.12.13", "@babel/helper-simple-access@^7.13.12":
+ version "7.13.12"
+ resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz#dd6c538afb61819d205a012c31792a39c7a5eaf6"
+ integrity sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==
+ dependencies:
+ "@babel/types" "^7.13.12"
+
+"@babel/helper-skip-transparent-expression-wrappers@^7.12.1":
+ version "7.12.1"
+ resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf"
+ integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==
+ dependencies:
+ "@babel/types" "^7.12.1"
+
+"@babel/helper-split-export-declaration@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz#e9430be00baf3e88b0e13e6f9d4eaf2136372b05"
+ integrity sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==
+ dependencies:
+ "@babel/types" "^7.12.13"
+
+"@babel/helper-validator-identifier@^7.12.11":
+ version "7.12.11"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed"
+ integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==
+
+"@babel/helper-validator-option@^7.12.17":
+ version "7.12.17"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831"
+ integrity sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==
+
+"@babel/helper-wrap-function@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz#bdb5c66fda8526ec235ab894ad53a1235c79fcc4"
+ integrity sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==
+ dependencies:
+ "@babel/helper-function-name" "^7.12.13"
+ "@babel/template" "^7.12.13"
+ "@babel/traverse" "^7.13.0"
+ "@babel/types" "^7.13.0"
+
+"@babel/helpers@^7.13.10":
+ version "7.13.10"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.13.10.tgz#fd8e2ba7488533cdeac45cc158e9ebca5e3c7df8"
+ integrity sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==
+ dependencies:
+ "@babel/template" "^7.12.13"
+ "@babel/traverse" "^7.13.0"
+ "@babel/types" "^7.13.0"
+
+"@babel/highlight@^7.10.4", "@babel/highlight@^7.12.13":
+ version "7.13.10"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.13.10.tgz#a8b2a66148f5b27d666b15d81774347a731d52d1"
+ integrity sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.12.11"
+ chalk "^2.0.0"
+ js-tokens "^4.0.0"
+
+"@babel/parser@^7.12.13", "@babel/parser@^7.13.15":
+ version "7.13.15"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.15.tgz#8e66775fb523599acb6a289e12929fa5ab0954d8"
+ integrity sha512-b9COtcAlVEQljy/9fbcMHpG+UIW9ReF+gpaxDHTlZd0c6/UU9ng8zdySAW9sRTzpvcdCHn6bUcbuYUgGzLAWVQ==
+
+"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.13.12":
+ version "7.13.12"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz#a3484d84d0b549f3fc916b99ee4783f26fabad2a"
+ integrity sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1"
+ "@babel/plugin-proposal-optional-chaining" "^7.13.12"
+
+"@babel/plugin-proposal-async-generator-functions@^7.13.15":
+ version "7.13.15"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.15.tgz#80e549df273a3b3050431b148c892491df1bcc5b"
+ integrity sha512-VapibkWzFeoa6ubXy/NgV5U2U4MVnUlvnx6wo1XhlsaTrLYWE0UFpDQsVrmn22q5CzeloqJ8gEMHSKxuee6ZdA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/helper-remap-async-to-generator" "^7.13.0"
+ "@babel/plugin-syntax-async-generators" "^7.8.4"
+
+"@babel/plugin-proposal-class-properties@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz#146376000b94efd001e57a40a88a525afaab9f37"
+ integrity sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.13.0"
+ "@babel/helper-plugin-utils" "^7.13.0"
+
+"@babel/plugin-proposal-dynamic-import@^7.13.8":
+ version "7.13.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz#876a1f6966e1dec332e8c9451afda3bebcdf2e1d"
+ integrity sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/plugin-syntax-dynamic-import" "^7.8.3"
+
+"@babel/plugin-proposal-export-namespace-from@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz#393be47a4acd03fa2af6e3cde9b06e33de1b446d"
+ integrity sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+ "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
+
+"@babel/plugin-proposal-json-strings@^7.13.8":
+ version "7.13.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz#bf1fb362547075afda3634ed31571c5901afef7b"
+ integrity sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/plugin-syntax-json-strings" "^7.8.3"
+
+"@babel/plugin-proposal-logical-assignment-operators@^7.13.8":
+ version "7.13.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz#93fa78d63857c40ce3c8c3315220fd00bfbb4e1a"
+ integrity sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
+
+"@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8":
+ version "7.13.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz#3730a31dafd3c10d8ccd10648ed80a2ac5472ef3"
+ integrity sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
+
+"@babel/plugin-proposal-numeric-separator@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz#bd9da3188e787b5120b4f9d465a8261ce67ed1db"
+ integrity sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+ "@babel/plugin-syntax-numeric-separator" "^7.10.4"
+
+"@babel/plugin-proposal-object-rest-spread@^7.13.8":
+ version "7.13.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz#5d210a4d727d6ce3b18f9de82cc99a3964eed60a"
+ integrity sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==
+ dependencies:
+ "@babel/compat-data" "^7.13.8"
+ "@babel/helper-compilation-targets" "^7.13.8"
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
+ "@babel/plugin-transform-parameters" "^7.13.0"
+
+"@babel/plugin-proposal-optional-catch-binding@^7.13.8":
+ version "7.13.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz#3ad6bd5901506ea996fc31bdcf3ccfa2bed71107"
+ integrity sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
+
+"@babel/plugin-proposal-optional-chaining@^7.13.12":
+ version "7.13.12"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz#ba9feb601d422e0adea6760c2bd6bbb7bfec4866"
+ integrity sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1"
+ "@babel/plugin-syntax-optional-chaining" "^7.8.3"
+
+"@babel/plugin-proposal-private-methods@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz#04bd4c6d40f6e6bbfa2f57e2d8094bad900ef787"
+ integrity sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.13.0"
+ "@babel/helper-plugin-utils" "^7.13.0"
+
+"@babel/plugin-proposal-unicode-property-regex@^7.12.13", "@babel/plugin-proposal-unicode-property-regex@^7.4.4":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz#bebde51339be829c17aaaaced18641deb62b39ba"
+ integrity sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.12.13"
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-syntax-async-generators@^7.8.4":
+ version "7.8.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d"
+ integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-class-properties@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10"
+ integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-syntax-dynamic-import@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3"
+ integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-export-namespace-from@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a"
+ integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.3"
+
+"@babel/plugin-syntax-json-strings@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a"
+ integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-logical-assignment-operators@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699"
+ integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9"
+ integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-numeric-separator@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97"
+ integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-syntax-object-rest-spread@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871"
+ integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-optional-catch-binding@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1"
+ integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-optional-chaining@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a"
+ integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-top-level-await@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz#c5f0fa6e249f5b739727f923540cf7a806130178"
+ integrity sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-transform-arrow-functions@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz#10a59bebad52d637a027afa692e8d5ceff5e3dae"
+ integrity sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+
+"@babel/plugin-transform-async-to-generator@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz#8e112bf6771b82bf1e974e5e26806c5c99aa516f"
+ integrity sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==
+ dependencies:
+ "@babel/helper-module-imports" "^7.12.13"
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/helper-remap-async-to-generator" "^7.13.0"
+
+"@babel/plugin-transform-block-scoped-functions@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz#a9bf1836f2a39b4eb6cf09967739de29ea4bf4c4"
+ integrity sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-transform-block-scoping@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz#f36e55076d06f41dfd78557ea039c1b581642e61"
+ integrity sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-transform-classes@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz#0265155075c42918bf4d3a4053134176ad9b533b"
+ integrity sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.12.13"
+ "@babel/helper-function-name" "^7.12.13"
+ "@babel/helper-optimise-call-expression" "^7.12.13"
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/helper-replace-supers" "^7.13.0"
+ "@babel/helper-split-export-declaration" "^7.12.13"
+ globals "^11.1.0"
+
+"@babel/plugin-transform-computed-properties@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz#845c6e8b9bb55376b1fa0b92ef0bdc8ea06644ed"
+ integrity sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+
+"@babel/plugin-transform-destructuring@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz#c5dce270014d4e1ebb1d806116694c12b7028963"
+ integrity sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+
+"@babel/plugin-transform-dotall-regex@^7.12.13", "@babel/plugin-transform-dotall-regex@^7.4.4":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz#3f1601cc29905bfcb67f53910f197aeafebb25ad"
+ integrity sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.12.13"
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-transform-duplicate-keys@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz#6f06b87a8b803fd928e54b81c258f0a0033904de"
+ integrity sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-transform-exponentiation-operator@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz#4d52390b9a273e651e4aba6aee49ef40e80cd0a1"
+ integrity sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==
+ dependencies:
+ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.12.13"
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-transform-for-of@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz#c799f881a8091ac26b54867a845c3e97d2696062"
+ integrity sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+
+"@babel/plugin-transform-function-name@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz#bb024452f9aaed861d374c8e7a24252ce3a50051"
+ integrity sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==
+ dependencies:
+ "@babel/helper-function-name" "^7.12.13"
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-transform-literals@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz#2ca45bafe4a820197cf315794a4d26560fe4bdb9"
+ integrity sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-transform-member-expression-literals@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz#5ffa66cd59b9e191314c9f1f803b938e8c081e40"
+ integrity sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-transform-modules-amd@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz#19f511d60e3d8753cc5a6d4e775d3a5184866cc3"
+ integrity sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.13.0"
+ "@babel/helper-plugin-utils" "^7.13.0"
+ babel-plugin-dynamic-import-node "^2.3.3"
+
+"@babel/plugin-transform-modules-commonjs@^7.13.8":
+ version "7.13.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz#7b01ad7c2dcf2275b06fa1781e00d13d420b3e1b"
+ integrity sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.13.0"
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/helper-simple-access" "^7.12.13"
+ babel-plugin-dynamic-import-node "^2.3.3"
+
+"@babel/plugin-transform-modules-systemjs@^7.13.8":
+ version "7.13.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz#6d066ee2bff3c7b3d60bf28dec169ad993831ae3"
+ integrity sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==
+ dependencies:
+ "@babel/helper-hoist-variables" "^7.13.0"
+ "@babel/helper-module-transforms" "^7.13.0"
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/helper-validator-identifier" "^7.12.11"
+ babel-plugin-dynamic-import-node "^2.3.3"
+
+"@babel/plugin-transform-modules-umd@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz#8a3d96a97d199705b9fd021580082af81c06e70b"
+ integrity sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.13.0"
+ "@babel/helper-plugin-utils" "^7.13.0"
+
+"@babel/plugin-transform-named-capturing-groups-regex@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz#2213725a5f5bbbe364b50c3ba5998c9599c5c9d9"
+ integrity sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.12.13"
+
+"@babel/plugin-transform-new-target@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz#e22d8c3af24b150dd528cbd6e685e799bf1c351c"
+ integrity sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-transform-object-super@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz#b4416a2d63b8f7be314f3d349bd55a9c1b5171f7"
+ integrity sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+ "@babel/helper-replace-supers" "^7.12.13"
+
+"@babel/plugin-transform-parameters@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz#8fa7603e3097f9c0b7ca1a4821bc2fb52e9e5007"
+ integrity sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+
+"@babel/plugin-transform-property-literals@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz#4e6a9e37864d8f1b3bc0e2dce7bf8857db8b1a81"
+ integrity sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-transform-regenerator@^7.13.15":
+ version "7.13.15"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.13.15.tgz#e5eb28945bf8b6563e7f818945f966a8d2997f39"
+ integrity sha512-Bk9cOLSz8DiurcMETZ8E2YtIVJbFCPGW28DJWUakmyVWtQSm6Wsf0p4B4BfEr/eL2Nkhe/CICiUiMOCi1TPhuQ==
+ dependencies:
+ regenerator-transform "^0.14.2"
+
+"@babel/plugin-transform-reserved-words@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz#7d9988d4f06e0fe697ea1d9803188aa18b472695"
+ integrity sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-transform-shorthand-properties@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz#db755732b70c539d504c6390d9ce90fe64aff7ad"
+ integrity sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-transform-spread@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz#84887710e273c1815ace7ae459f6f42a5d31d5fd"
+ integrity sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1"
+
+"@babel/plugin-transform-sticky-regex@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz#760ffd936face73f860ae646fb86ee82f3d06d1f"
+ integrity sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-transform-template-literals@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz#a36049127977ad94438dee7443598d1cefdf409d"
+ integrity sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+
+"@babel/plugin-transform-typeof-symbol@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz#785dd67a1f2ea579d9c2be722de8c84cb85f5a7f"
+ integrity sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-transform-unicode-escapes@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz#840ced3b816d3b5127dd1d12dcedc5dead1a5e74"
+ integrity sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-transform-unicode-regex@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz#b52521685804e155b1202e83fc188d34bb70f5ac"
+ integrity sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.12.13"
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/polyfill@^7.10.4":
+ version "7.12.1"
+ resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.12.1.tgz#1f2d6371d1261bbd961f3c5d5909150e12d0bd96"
+ integrity sha512-X0pi0V6gxLi6lFZpGmeNa4zxtwEmCs42isWLNjZZDE0Y8yVfgu0T2OAHlzBbdYlqbW/YXVvoBHpATEM+goCj8g==
+ dependencies:
+ core-js "^2.6.5"
+ regenerator-runtime "^0.13.4"
+
+"@babel/preset-env@^7.10.4":
+ version "7.13.15"
+ resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.13.15.tgz#c8a6eb584f96ecba183d3d414a83553a599f478f"
+ integrity sha512-D4JAPMXcxk69PKe81jRJ21/fP/uYdcTZ3hJDF5QX2HSI9bBxxYw/dumdR6dGumhjxlprHPE4XWoPaqzZUVy2MA==
+ dependencies:
+ "@babel/compat-data" "^7.13.15"
+ "@babel/helper-compilation-targets" "^7.13.13"
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/helper-validator-option" "^7.12.17"
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.13.12"
+ "@babel/plugin-proposal-async-generator-functions" "^7.13.15"
+ "@babel/plugin-proposal-class-properties" "^7.13.0"
+ "@babel/plugin-proposal-dynamic-import" "^7.13.8"
+ "@babel/plugin-proposal-export-namespace-from" "^7.12.13"
+ "@babel/plugin-proposal-json-strings" "^7.13.8"
+ "@babel/plugin-proposal-logical-assignment-operators" "^7.13.8"
+ "@babel/plugin-proposal-nullish-coalescing-operator" "^7.13.8"
+ "@babel/plugin-proposal-numeric-separator" "^7.12.13"
+ "@babel/plugin-proposal-object-rest-spread" "^7.13.8"
+ "@babel/plugin-proposal-optional-catch-binding" "^7.13.8"
+ "@babel/plugin-proposal-optional-chaining" "^7.13.12"
+ "@babel/plugin-proposal-private-methods" "^7.13.0"
+ "@babel/plugin-proposal-unicode-property-regex" "^7.12.13"
+ "@babel/plugin-syntax-async-generators" "^7.8.4"
+ "@babel/plugin-syntax-class-properties" "^7.12.13"
+ "@babel/plugin-syntax-dynamic-import" "^7.8.3"
+ "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
+ "@babel/plugin-syntax-json-strings" "^7.8.3"
+ "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
+ "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
+ "@babel/plugin-syntax-numeric-separator" "^7.10.4"
+ "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
+ "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
+ "@babel/plugin-syntax-optional-chaining" "^7.8.3"
+ "@babel/plugin-syntax-top-level-await" "^7.12.13"
+ "@babel/plugin-transform-arrow-functions" "^7.13.0"
+ "@babel/plugin-transform-async-to-generator" "^7.13.0"
+ "@babel/plugin-transform-block-scoped-functions" "^7.12.13"
+ "@babel/plugin-transform-block-scoping" "^7.12.13"
+ "@babel/plugin-transform-classes" "^7.13.0"
+ "@babel/plugin-transform-computed-properties" "^7.13.0"
+ "@babel/plugin-transform-destructuring" "^7.13.0"
+ "@babel/plugin-transform-dotall-regex" "^7.12.13"
+ "@babel/plugin-transform-duplicate-keys" "^7.12.13"
+ "@babel/plugin-transform-exponentiation-operator" "^7.12.13"
+ "@babel/plugin-transform-for-of" "^7.13.0"
+ "@babel/plugin-transform-function-name" "^7.12.13"
+ "@babel/plugin-transform-literals" "^7.12.13"
+ "@babel/plugin-transform-member-expression-literals" "^7.12.13"
+ "@babel/plugin-transform-modules-amd" "^7.13.0"
+ "@babel/plugin-transform-modules-commonjs" "^7.13.8"
+ "@babel/plugin-transform-modules-systemjs" "^7.13.8"
+ "@babel/plugin-transform-modules-umd" "^7.13.0"
+ "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.13"
+ "@babel/plugin-transform-new-target" "^7.12.13"
+ "@babel/plugin-transform-object-super" "^7.12.13"
+ "@babel/plugin-transform-parameters" "^7.13.0"
+ "@babel/plugin-transform-property-literals" "^7.12.13"
+ "@babel/plugin-transform-regenerator" "^7.13.15"
+ "@babel/plugin-transform-reserved-words" "^7.12.13"
+ "@babel/plugin-transform-shorthand-properties" "^7.12.13"
+ "@babel/plugin-transform-spread" "^7.13.0"
+ "@babel/plugin-transform-sticky-regex" "^7.12.13"
+ "@babel/plugin-transform-template-literals" "^7.13.0"
+ "@babel/plugin-transform-typeof-symbol" "^7.12.13"
+ "@babel/plugin-transform-unicode-escapes" "^7.12.13"
+ "@babel/plugin-transform-unicode-regex" "^7.12.13"
+ "@babel/preset-modules" "^0.1.4"
+ "@babel/types" "^7.13.14"
+ babel-plugin-polyfill-corejs2 "^0.2.0"
+ babel-plugin-polyfill-corejs3 "^0.2.0"
+ babel-plugin-polyfill-regenerator "^0.2.0"
+ core-js-compat "^3.9.0"
+ semver "^6.3.0"
+
+"@babel/preset-modules@^0.1.4":
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e"
+ integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-proposal-unicode-property-regex" "^7.4.4"
+ "@babel/plugin-transform-dotall-regex" "^7.4.4"
+ "@babel/types" "^7.4.4"
+ esutils "^2.0.2"
+
+"@babel/register@^7.10.5":
+ version "7.13.14"
+ resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.13.14.tgz#bbfa8f4f027c2ebc432e8e69e078b632605f2d9b"
+ integrity sha512-iyw0hUwjh/fzN8qklVqZodbyWjEBOG0KdDnBOpv3zzIgK3NmuRXBmIXH39ZBdspkn8LTHvSboN+oYb4MT43+9Q==
+ dependencies:
+ find-cache-dir "^2.0.0"
+ lodash "^4.17.19"
+ make-dir "^2.1.0"
+ pirates "^4.0.0"
+ source-map-support "^0.5.16"
+
+"@babel/runtime-corejs3@^7.10.2":
+ version "7.13.10"
+ resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.13.10.tgz#14c3f4c85de22ba88e8e86685d13e8861a82fe86"
+ integrity sha512-x/XYVQ1h684pp1mJwOV4CyvqZXqbc8CMsMGUnAbuc82ZCdv1U63w5RSUzgDSXQHG5Rps/kiksH6g2D5BuaKyXg==
+ dependencies:
+ core-js-pure "^3.0.0"
+ regenerator-runtime "^0.13.4"
+
+"@babel/runtime@^7.10.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.8.4":
+ version "7.13.10"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.13.10.tgz#47d42a57b6095f4468da440388fdbad8bebf0d7d"
+ integrity sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==
+ dependencies:
+ regenerator-runtime "^0.13.4"
+
+"@babel/template@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327"
+ integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==
+ dependencies:
+ "@babel/code-frame" "^7.12.13"
+ "@babel/parser" "^7.12.13"
+ "@babel/types" "^7.12.13"
+
+"@babel/traverse@^7.13.0", "@babel/traverse@^7.13.13", "@babel/traverse@^7.13.15":
+ version "7.13.15"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.13.15.tgz#c38bf7679334ddd4028e8e1f7b3aa5019f0dada7"
+ integrity sha512-/mpZMNvj6bce59Qzl09fHEs8Bt8NnpEDQYleHUPZQ3wXUMvXi+HJPLars68oAbmp839fGoOkv2pSL2z9ajCIaQ==
+ dependencies:
+ "@babel/code-frame" "^7.12.13"
+ "@babel/generator" "^7.13.9"
+ "@babel/helper-function-name" "^7.12.13"
+ "@babel/helper-split-export-declaration" "^7.12.13"
+ "@babel/parser" "^7.13.15"
+ "@babel/types" "^7.13.14"
+ debug "^4.1.0"
+ globals "^11.1.0"
+
+"@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.13.14", "@babel/types@^7.4.4":
+ version "7.13.14"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.14.tgz#c35a4abb15c7cd45a2746d78ab328e362cbace0d"
+ integrity sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.12.11"
+ lodash "^4.17.19"
+ to-fast-properties "^2.0.0"
+
+"@eslint/eslintrc@^0.4.0":
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.0.tgz#99cc0a0584d72f1df38b900fb062ba995f395547"
+ integrity sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==
+ dependencies:
+ ajv "^6.12.4"
+ debug "^4.1.1"
+ espree "^7.3.0"
+ globals "^12.1.0"
+ ignore "^4.0.6"
+ import-fresh "^3.2.1"
+ js-yaml "^3.13.1"
+ minimatch "^3.0.4"
+ strip-json-comments "^3.1.1"
+
+"@jest/types@^26.6.2":
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e"
+ integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==
+ dependencies:
+ "@types/istanbul-lib-coverage" "^2.0.0"
+ "@types/istanbul-reports" "^3.0.0"
+ "@types/node" "*"
+ "@types/yargs" "^15.0.0"
+ chalk "^4.0.0"
+
+"@jetbrains/kotlin-webpack-plugin@^3.0.2":
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/@jetbrains/kotlin-webpack-plugin/-/kotlin-webpack-plugin-3.0.2.tgz#a8c0c5dfc35cfc4d72faf8c1921bddca46849e20"
+ integrity sha512-I3vYv6RXRHSQpmMeClVISdo0KDGeF+FJ0v+p84DCJ3eJzBWbHtYbCwMg5rEHlX05D793RnKa4f5dyyOQOixLPA==
+ dependencies:
+ "@jetbrains/kotlinc-js-api" "^2.0.1"
+ fs-extra "^8.1.0"
+ glob "^7.1.6"
+ globby "^10.0.1"
+ kotlin-compiler "^1.3.61"
+ webpack-log "^3.0.1"
+
+"@jetbrains/kotlinc-js-api@^2.0.1":
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/@jetbrains/kotlinc-js-api/-/kotlinc-js-api-2.0.1.tgz#17c3211fd7eccf3e9a6bd3bf3ec45937d94a45c1"
+ integrity sha512-l4gvsbZjscFu0yNlrnQqKoYmOoVHHmZ6q5AyRpXQk+lPWKvbK73qnuFT9oihUGGqRrDqPZ6hQO73exYbz4O+zw==
+ dependencies:
+ cross-spawn "^7.0.1"
+ kotlin-compiler "^1.3.61"
+
+"@nodelib/fs.scandir@2.1.4":
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69"
+ integrity sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==
+ dependencies:
+ "@nodelib/fs.stat" "2.0.4"
+ run-parallel "^1.1.9"
+
+"@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2":
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655"
+ integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==
+
+"@nodelib/fs.walk@^1.2.3":
+ version "1.2.6"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063"
+ integrity sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==
+ dependencies:
+ "@nodelib/fs.scandir" "2.1.4"
+ fastq "^1.6.0"
+
+"@npmcli/move-file@^1.0.1":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674"
+ integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==
+ dependencies:
+ mkdirp "^1.0.4"
+ rimraf "^3.0.2"
+
"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2":
version "1.1.2"
resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf"
@@ -55,15 +993,297 @@
resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570"
integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=
-"@types/long@^4.0.0":
+"@testing-library/dom@^7.26.6":
+ version "7.30.3"
+ resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-7.30.3.tgz#779ea9bbb92d63302461800a388a5a890ac22519"
+ integrity sha512-7JhIg2MW6WPwyikH2iL3o7z+FTVgSOd2jqCwTAHqK7Qal2gRRYiUQyURAxtbK9VXm/UTyG9bRihv8C5Tznr2zw==
+ dependencies:
+ "@babel/code-frame" "^7.10.4"
+ "@babel/runtime" "^7.12.5"
+ "@types/aria-query" "^4.2.0"
+ aria-query "^4.2.2"
+ chalk "^4.1.0"
+ dom-accessibility-api "^0.5.4"
+ lz-string "^1.4.4"
+ pretty-format "^26.6.2"
+
+"@testing-library/vue@^5.1.0":
+ version "5.6.2"
+ resolved "https://registry.yarnpkg.com/@testing-library/vue/-/vue-5.6.2.tgz#b6cf64e1781fc334e5ce38c64b7027e5971bc8b3"
+ integrity sha512-GcbKYmID7NMcpQllMRw+op/oUFA6dp4zzaYOz7fsv+lNKC1G4RQCjkBWo9vYRQyt40imbFSNYb7JgEZnPYvrXg==
+ dependencies:
+ "@babel/runtime" "^7.12.5"
+ "@testing-library/dom" "^7.26.6"
+ "@vue/test-utils" "^1.1.0"
+
+"@types/aria-query@^4.2.0":
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.1.tgz#78b5433344e2f92e8b306c06a5622c50c245bf6b"
+ integrity sha512-S6oPal772qJZHoRZLFc/XoZW2gFvwXusYUmXPXkgxJLuEk2vOt7jc4Yo6z/vtI0EBkbPBVrJJ0B+prLIKiWqHg==
+
+"@types/glob@^7.1.1":
+ version "7.1.3"
+ resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183"
+ integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==
+ dependencies:
+ "@types/minimatch" "*"
+ "@types/node" "*"
+
+"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0":
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762"
+ integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==
+
+"@types/istanbul-lib-report@*":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686"
+ integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==
+ dependencies:
+ "@types/istanbul-lib-coverage" "*"
+
+"@types/istanbul-reports@^3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821"
+ integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==
+ dependencies:
+ "@types/istanbul-lib-report" "*"
+
+"@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6":
+ version "7.0.7"
+ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad"
+ integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==
+
+"@types/lodash@^4.14.158":
+ version "4.14.168"
+ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.168.tgz#fe24632e79b7ade3f132891afff86caa5e5ce008"
+ integrity sha512-oVfRvqHV/V6D1yifJbVRU3TMp8OT6o6BG+U9MkwuJ3U8/CsDHvalRpsxBqivn71ztOFZBTfJMvETbqHiaNSj7Q==
+
+"@types/long@^4.0.1":
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.1.tgz#459c65fa1867dafe6a8f322c4c51695663cc55e9"
+ integrity sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==
+
+"@types/minimatch@*":
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.4.tgz#f0ec25dbf2f0e4b18647313ac031134ca5b24b21"
+ integrity sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==
+
+"@types/node@*":
+ version "14.14.37"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.37.tgz#a3dd8da4eb84a996c36e331df98d82abd76b516e"
+ integrity sha512-XYmBiy+ohOR4Lh5jE379fV2IU+6Jn4g5qASinhitfyO71b/sCo6MKsMLF5tc7Zf2CE8hViVQyYSobJNke8OvUw==
+
+"@types/node@^13.7.0":
+ version "13.13.48"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-13.13.48.tgz#46a3df718aed5217277f2395a682e055a487e341"
+ integrity sha512-z8wvSsgWQzkr4sVuMEEOvwMdOQjiRY2Y/ZW4fDfjfe3+TfQrZqFKOthBgk2RnVEmtOKrkwdZ7uTvsxTBLjKGDQ==
+
+"@types/parse-json@^4.0.0":
version "4.0.0"
- resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.0.tgz#719551d2352d301ac8b81db732acb6bdc28dbdef"
- integrity sha512-1w52Nyx4Gq47uuu0EVcsHBxZFJgurQ+rTKS3qMHxR1GY2T8c2AJYd6vZoZ9q1rupaDjU0yT+Jc2XTyXkjeMA+Q==
+ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0"
+ integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==
+
+"@types/q@^1.5.1":
+ version "1.5.4"
+ resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24"
+ integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==
+
+"@types/yargs-parser@*":
+ version "20.2.0"
+ resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.0.tgz#dd3e6699ba3237f0348cd085e4698780204842f9"
+ integrity sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==
+
+"@types/yargs@^15.0.0":
+ version "15.0.13"
+ resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.13.tgz#34f7fec8b389d7f3c1fd08026a5763e072d3c6dc"
+ integrity sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==
+ dependencies:
+ "@types/yargs-parser" "*"
+
+"@vue/component-compiler-utils@^3.1.0":
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/@vue/component-compiler-utils/-/component-compiler-utils-3.2.0.tgz#8f85182ceed28e9b3c75313de669f83166d11e5d"
+ integrity sha512-lejBLa7xAMsfiZfNp7Kv51zOzifnb29FwdnMLa96z26kXErPFioSf9BMcePVIQ6/Gc6/mC0UrPpxAWIHyae0vw==
+ dependencies:
+ consolidate "^0.15.1"
+ hash-sum "^1.0.2"
+ lru-cache "^4.1.2"
+ merge-source-map "^1.1.0"
+ postcss "^7.0.14"
+ postcss-selector-parser "^6.0.2"
+ source-map "~0.6.1"
+ vue-template-es2015-compiler "^1.9.0"
+ optionalDependencies:
+ prettier "^1.18.2"
+
+"@vue/test-utils@^1.1.0":
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-1.1.4.tgz#a9acb32ea1fa4535b2e1ce5ca100bceb4fade2db"
+ integrity sha512-9BeL8IqGvJKy553lq/07rhYURQkpS/k+j19rJ/4eDpGJk7z872M0YrBWFhjS14yMKlvYVYOCfWnVIXyrAx0xNw==
+ dependencies:
+ dom-event-types "^1.0.0"
+ lodash "^4.17.15"
+ pretty "^2.0.0"
+
+"@webassemblyjs/ast@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964"
+ integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==
+ dependencies:
+ "@webassemblyjs/helper-module-context" "1.9.0"
+ "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
+ "@webassemblyjs/wast-parser" "1.9.0"
-"@types/node@^10.1.0":
- version "10.14.13"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.13.tgz#ac786d623860adf39a3f51d629480aacd6a6eec7"
- integrity sha512-yN/FNNW1UYsRR1wwAoyOwqvDuLDtVXnaJTZ898XIw/Q5cCaeVAlVwvsmXLX5PuiScBYwZsZU4JYSHB3TvfdwvQ==
+"@webassemblyjs/floating-point-hex-parser@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4"
+ integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==
+
+"@webassemblyjs/helper-api-error@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2"
+ integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==
+
+"@webassemblyjs/helper-buffer@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00"
+ integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==
+
+"@webassemblyjs/helper-code-frame@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27"
+ integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==
+ dependencies:
+ "@webassemblyjs/wast-printer" "1.9.0"
+
+"@webassemblyjs/helper-fsm@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8"
+ integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==
+
+"@webassemblyjs/helper-module-context@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07"
+ integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+
+"@webassemblyjs/helper-wasm-bytecode@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790"
+ integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==
+
+"@webassemblyjs/helper-wasm-section@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346"
+ integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/helper-buffer" "1.9.0"
+ "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
+ "@webassemblyjs/wasm-gen" "1.9.0"
+
+"@webassemblyjs/ieee754@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4"
+ integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==
+ dependencies:
+ "@xtuc/ieee754" "^1.2.0"
+
+"@webassemblyjs/leb128@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95"
+ integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==
+ dependencies:
+ "@xtuc/long" "4.2.2"
+
+"@webassemblyjs/utf8@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab"
+ integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==
+
+"@webassemblyjs/wasm-edit@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf"
+ integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/helper-buffer" "1.9.0"
+ "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
+ "@webassemblyjs/helper-wasm-section" "1.9.0"
+ "@webassemblyjs/wasm-gen" "1.9.0"
+ "@webassemblyjs/wasm-opt" "1.9.0"
+ "@webassemblyjs/wasm-parser" "1.9.0"
+ "@webassemblyjs/wast-printer" "1.9.0"
+
+"@webassemblyjs/wasm-gen@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c"
+ integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
+ "@webassemblyjs/ieee754" "1.9.0"
+ "@webassemblyjs/leb128" "1.9.0"
+ "@webassemblyjs/utf8" "1.9.0"
+
+"@webassemblyjs/wasm-opt@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61"
+ integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/helper-buffer" "1.9.0"
+ "@webassemblyjs/wasm-gen" "1.9.0"
+ "@webassemblyjs/wasm-parser" "1.9.0"
+
+"@webassemblyjs/wasm-parser@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e"
+ integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/helper-api-error" "1.9.0"
+ "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
+ "@webassemblyjs/ieee754" "1.9.0"
+ "@webassemblyjs/leb128" "1.9.0"
+ "@webassemblyjs/utf8" "1.9.0"
+
+"@webassemblyjs/wast-parser@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914"
+ integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/floating-point-hex-parser" "1.9.0"
+ "@webassemblyjs/helper-api-error" "1.9.0"
+ "@webassemblyjs/helper-code-frame" "1.9.0"
+ "@webassemblyjs/helper-fsm" "1.9.0"
+ "@xtuc/long" "4.2.2"
+
+"@webassemblyjs/wast-printer@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899"
+ integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/wast-parser" "1.9.0"
+ "@xtuc/long" "4.2.2"
+
+"@xtuc/ieee754@^1.2.0":
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790"
+ integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==
+
+"@xtuc/long@4.2.2":
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
+ integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
+
+abab@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a"
+ integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==
abbrev@1:
version "1.1.1"
@@ -78,60 +1298,81 @@ accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7:
mime-types "~2.1.24"
negotiator "0.6.2"
-acorn-dynamic-import@^2.0.0:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4"
- integrity sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=
- dependencies:
- acorn "^4.0.3"
-
-acorn@^4.0.3:
- version "4.0.13"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787"
- integrity sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=
+acorn-jsx@^5.2.0, acorn-jsx@^5.3.1:
+ version "5.3.1"
+ resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b"
+ integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==
-acorn@^5.0.0:
- version "5.7.3"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279"
- integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==
+acorn@^6.4.1:
+ version "6.4.2"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6"
+ integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==
-ajv-keywords@^1.1.1:
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c"
- integrity sha1-MU3QpLM2j609/NxU7eYXG4htrzw=
+acorn@^7.1.1, acorn@^7.4.0:
+ version "7.4.1"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
+ integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
-ajv@^4.7.0:
- version "4.11.8"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536"
- integrity sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=
+aggregate-error@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a"
+ integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==
dependencies:
- co "^4.6.0"
- json-stable-stringify "^1.0.1"
+ clean-stack "^2.0.0"
+ indent-string "^4.0.0"
+
+ajv-errors@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d"
+ integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==
-ajv@^5.0.0:
- version "5.5.2"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965"
- integrity sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=
+ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2:
+ version "3.5.2"
+ resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d"
+ integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
+
+ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4, ajv@^6.12.5:
+ version "6.12.6"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
+ integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
dependencies:
- co "^4.6.0"
- fast-deep-equal "^1.0.0"
+ fast-deep-equal "^3.1.1"
fast-json-stable-stringify "^2.0.0"
- json-schema-traverse "^0.3.0"
+ json-schema-traverse "^0.4.1"
+ uri-js "^4.2.2"
-align-text@^0.1.1, align-text@^0.1.3:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
- integrity sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=
+ajv@^8.0.1:
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.1.0.tgz#45d5d3d36c7cdd808930cc3e603cf6200dbeb736"
+ integrity sha512-B/Sk2Ix7A36fs/ZkuGLIR86EdjbgR6fsAcbx9lOP/QBSXujDNbVmIS/U4Itz5k8fPFDeVZl/zQ/gJW4Jrq6XjQ==
dependencies:
- kind-of "^3.0.2"
- longest "^1.0.1"
- repeat-string "^1.5.2"
+ fast-deep-equal "^3.1.1"
+ json-schema-traverse "^1.0.0"
+ require-from-string "^2.0.2"
+ uri-js "^4.2.2"
-alphanum-sort@^1.0.1, alphanum-sort@^1.0.2:
+alphanum-sort@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=
+ansi-colors@^3.0.0:
+ version "3.2.4"
+ resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf"
+ integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==
+
+ansi-colors@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
+ integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==
+
+ansi-escapes@^4.3.0:
+ version "4.3.2"
+ resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e"
+ integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==
+ dependencies:
+ type-fest "^0.21.3"
+
ansi-html@0.0.7:
version "0.0.7"
resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e"
@@ -147,18 +1388,35 @@ ansi-regex@^3.0.0:
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
+ansi-regex@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
+ integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
+
+ansi-regex@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75"
+ integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==
+
ansi-styles@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
-ansi-styles@^3.2.1:
+ansi-styles@^3.2.0, ansi-styles@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
dependencies:
color-convert "^1.9.0"
+ansi-styles@^4.0.0, ansi-styles@^4.1.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
+ integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
+ dependencies:
+ color-convert "^2.0.1"
+
anymatch@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
@@ -167,19 +1425,19 @@ anymatch@^2.0.0:
micromatch "^3.1.4"
normalize-path "^2.1.1"
-aproba@^1.0.3:
+anymatch@~3.1.1:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
+ integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
+ dependencies:
+ normalize-path "^3.0.0"
+ picomatch "^2.0.4"
+
+aproba@^1.1.1:
version "1.2.0"
resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
-are-we-there-yet@~1.1.2:
- version "1.1.5"
- resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21"
- integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==
- dependencies:
- delegates "^1.0.0"
- readable-stream "^2.0.6"
-
argparse@^1.0.7:
version "1.0.10"
resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
@@ -187,6 +1445,14 @@ argparse@^1.0.7:
dependencies:
sprintf-js "~1.0.2"
+aria-query@^4.2.2:
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b"
+ integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==
+ dependencies:
+ "@babel/runtime" "^7.10.2"
+ "@babel/runtime-corejs3" "^7.10.2"
+
arr-diff@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
@@ -202,11 +1468,6 @@ arr-union@^3.1.0:
resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
-array-find-index@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
- integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=
-
array-flatten@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
@@ -217,14 +1478,6 @@ array-flatten@^2.1.0:
resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099"
integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==
-array-includes@^3.0.3:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d"
- integrity sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=
- dependencies:
- define-properties "^1.1.2"
- es-abstract "^1.7.0"
-
array-union@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
@@ -232,6 +1485,11 @@ array-union@^1.0.1:
dependencies:
array-uniq "^1.0.1"
+array-union@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
+ integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
+
array-uniq@^1.0.1:
version "1.0.3"
resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
@@ -242,14 +1500,15 @@ array-unique@^0.3.2:
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
-asn1.js@^4.0.0:
- version "4.10.1"
- resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0"
- integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==
+asn1.js@^5.2.0:
+ version "5.4.1"
+ resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07"
+ integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==
dependencies:
bn.js "^4.0.0"
inherits "^2.0.1"
minimalistic-assert "^1.0.0"
+ safer-buffer "^2.1.0"
assert@^1.1.1:
version "1.5.0"
@@ -264,575 +1523,83 @@ assign-symbols@^1.0.0:
resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
+astral-regex@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31"
+ integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==
+
async-each@^1.0.1:
version "1.0.3"
resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf"
integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==
-async@^1.5.2:
- version "1.5.2"
- resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
- integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=
+async-limiter@~1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd"
+ integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==
-async@^2.1.2:
+async@^2.6.2:
version "2.6.3"
resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff"
integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==
dependencies:
lodash "^4.17.14"
-atob@^2.1.1:
+atob@^2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
-autoprefixer@^6.3.1:
- version "6.7.7"
- resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014"
- integrity sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=
+babel-loader@^8.1.0:
+ version "8.2.2"
+ resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.2.tgz#9363ce84c10c9a40e6c753748e1441b60c8a0b81"
+ integrity sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==
dependencies:
- browserslist "^1.7.6"
- caniuse-db "^1.0.30000634"
- normalize-range "^0.1.2"
- num2fraction "^1.2.2"
- postcss "^5.2.16"
- postcss-value-parser "^3.2.3"
+ find-cache-dir "^3.3.1"
+ loader-utils "^1.4.0"
+ make-dir "^3.1.0"
+ schema-utils "^2.6.5"
-babel-code-frame@^6.11.0, babel-code-frame@^6.26.0:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
- integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=
+babel-plugin-dynamic-import-node@^2.3.3:
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3"
+ integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==
dependencies:
- chalk "^1.1.3"
- esutils "^2.0.2"
- js-tokens "^3.0.2"
-
-babel-core@^6.0.0, babel-core@^6.26.0:
- version "6.26.3"
- resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207"
- integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==
- dependencies:
- babel-code-frame "^6.26.0"
- babel-generator "^6.26.0"
- babel-helpers "^6.24.1"
- babel-messages "^6.23.0"
- babel-register "^6.26.0"
- babel-runtime "^6.26.0"
- babel-template "^6.26.0"
- babel-traverse "^6.26.0"
- babel-types "^6.26.0"
- babylon "^6.18.0"
- convert-source-map "^1.5.1"
- debug "^2.6.9"
- json5 "^0.5.1"
- lodash "^4.17.4"
- minimatch "^3.0.4"
- path-is-absolute "^1.0.1"
- private "^0.1.8"
- slash "^1.0.0"
- source-map "^0.5.7"
-
-babel-generator@^6.26.0:
- version "6.26.1"
- resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90"
- integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==
- dependencies:
- babel-messages "^6.23.0"
- babel-runtime "^6.26.0"
- babel-types "^6.26.0"
- detect-indent "^4.0.0"
- jsesc "^1.3.0"
- lodash "^4.17.4"
- source-map "^0.5.7"
- trim-right "^1.0.1"
-
-babel-helper-builder-binary-assignment-operator-visitor@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664"
- integrity sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=
- dependencies:
- babel-helper-explode-assignable-expression "^6.24.1"
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-helper-call-delegate@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d"
- integrity sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=
- dependencies:
- babel-helper-hoist-variables "^6.24.1"
- babel-runtime "^6.22.0"
- babel-traverse "^6.24.1"
- babel-types "^6.24.1"
-
-babel-helper-define-map@^6.24.1:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f"
- integrity sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=
- dependencies:
- babel-helper-function-name "^6.24.1"
- babel-runtime "^6.26.0"
- babel-types "^6.26.0"
- lodash "^4.17.4"
-
-babel-helper-explode-assignable-expression@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa"
- integrity sha1-8luCz33BBDPFX3BZLVdGQArCLKo=
- dependencies:
- babel-runtime "^6.22.0"
- babel-traverse "^6.24.1"
- babel-types "^6.24.1"
-
-babel-helper-function-name@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9"
- integrity sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=
- dependencies:
- babel-helper-get-function-arity "^6.24.1"
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
- babel-traverse "^6.24.1"
- babel-types "^6.24.1"
-
-babel-helper-get-function-arity@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d"
- integrity sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=
- dependencies:
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-helper-hoist-variables@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76"
- integrity sha1-HssnaJydJVE+rbyZFKc/VAi+enY=
- dependencies:
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-helper-optimise-call-expression@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257"
- integrity sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=
- dependencies:
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-helper-regex@^6.24.1:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72"
- integrity sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=
- dependencies:
- babel-runtime "^6.26.0"
- babel-types "^6.26.0"
- lodash "^4.17.4"
-
-babel-helper-remap-async-to-generator@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b"
- integrity sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=
- dependencies:
- babel-helper-function-name "^6.24.1"
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
- babel-traverse "^6.24.1"
- babel-types "^6.24.1"
-
-babel-helper-replace-supers@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a"
- integrity sha1-v22/5Dk40XNpohPKiov3S2qQqxo=
- dependencies:
- babel-helper-optimise-call-expression "^6.24.1"
- babel-messages "^6.23.0"
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
- babel-traverse "^6.24.1"
- babel-types "^6.24.1"
-
-babel-helpers@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2"
- integrity sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=
- dependencies:
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
-
-babel-loader@^6.0.0:
- version "6.4.1"
- resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-6.4.1.tgz#0b34112d5b0748a8dcdbf51acf6f9bd42d50b8ca"
- integrity sha1-CzQRLVsHSKjc2/Uaz2+b1C1QuMo=
- dependencies:
- find-cache-dir "^0.1.1"
- loader-utils "^0.2.16"
- mkdirp "^0.5.1"
- object-assign "^4.0.1"
-
-babel-messages@^6.23.0:
- version "6.23.0"
- resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e"
- integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-check-es2015-constants@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a"
- integrity sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-syntax-async-functions@^6.8.0:
- version "6.13.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95"
- integrity sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=
-
-babel-plugin-syntax-exponentiation-operator@^6.8.0:
- version "6.13.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de"
- integrity sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=
-
-babel-plugin-syntax-trailing-function-commas@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3"
- integrity sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=
-
-babel-plugin-transform-async-to-generator@^6.22.0:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761"
- integrity sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=
- dependencies:
- babel-helper-remap-async-to-generator "^6.24.1"
- babel-plugin-syntax-async-functions "^6.8.0"
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-arrow-functions@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221"
- integrity sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-block-scoped-functions@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141"
- integrity sha1-u8UbSflk1wy42OC5ToICRs46YUE=
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-block-scoping@^6.23.0:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f"
- integrity sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=
- dependencies:
- babel-runtime "^6.26.0"
- babel-template "^6.26.0"
- babel-traverse "^6.26.0"
- babel-types "^6.26.0"
- lodash "^4.17.4"
-
-babel-plugin-transform-es2015-classes@^6.23.0:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db"
- integrity sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=
- dependencies:
- babel-helper-define-map "^6.24.1"
- babel-helper-function-name "^6.24.1"
- babel-helper-optimise-call-expression "^6.24.1"
- babel-helper-replace-supers "^6.24.1"
- babel-messages "^6.23.0"
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
- babel-traverse "^6.24.1"
- babel-types "^6.24.1"
-
-babel-plugin-transform-es2015-computed-properties@^6.22.0:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3"
- integrity sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=
- dependencies:
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
-
-babel-plugin-transform-es2015-destructuring@^6.23.0:
- version "6.23.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d"
- integrity sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-duplicate-keys@^6.22.0:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e"
- integrity sha1-c+s9MQypaePvnskcU3QabxV2Qj4=
- dependencies:
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-plugin-transform-es2015-for-of@^6.23.0:
- version "6.23.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691"
- integrity sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-function-name@^6.22.0:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b"
- integrity sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=
- dependencies:
- babel-helper-function-name "^6.24.1"
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-plugin-transform-es2015-literals@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e"
- integrity sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154"
- integrity sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=
- dependencies:
- babel-plugin-transform-es2015-modules-commonjs "^6.24.1"
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
-
-babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1:
- version "6.26.2"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3"
- integrity sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==
- dependencies:
- babel-plugin-transform-strict-mode "^6.24.1"
- babel-runtime "^6.26.0"
- babel-template "^6.26.0"
- babel-types "^6.26.0"
-
-babel-plugin-transform-es2015-modules-systemjs@^6.23.0:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23"
- integrity sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=
- dependencies:
- babel-helper-hoist-variables "^6.24.1"
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
-
-babel-plugin-transform-es2015-modules-umd@^6.23.0:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468"
- integrity sha1-rJl+YoXNGO1hdq22B9YCNErThGg=
- dependencies:
- babel-plugin-transform-es2015-modules-amd "^6.24.1"
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
-
-babel-plugin-transform-es2015-object-super@^6.22.0:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d"
- integrity sha1-JM72muIcuDp/hgPa0CH1cusnj40=
- dependencies:
- babel-helper-replace-supers "^6.24.1"
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-parameters@^6.23.0:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b"
- integrity sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=
- dependencies:
- babel-helper-call-delegate "^6.24.1"
- babel-helper-get-function-arity "^6.24.1"
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
- babel-traverse "^6.24.1"
- babel-types "^6.24.1"
-
-babel-plugin-transform-es2015-shorthand-properties@^6.22.0:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0"
- integrity sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=
- dependencies:
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-plugin-transform-es2015-spread@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1"
- integrity sha1-1taKmfia7cRTbIGlQujdnxdG+NE=
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-sticky-regex@^6.22.0:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc"
- integrity sha1-AMHNsaynERLN8M9hJsLta0V8zbw=
- dependencies:
- babel-helper-regex "^6.24.1"
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-plugin-transform-es2015-template-literals@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d"
- integrity sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-typeof-symbol@^6.23.0:
- version "6.23.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372"
- integrity sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-unicode-regex@^6.22.0:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9"
- integrity sha1-04sS9C6nMj9yk4fxinxa4frrNek=
- dependencies:
- babel-helper-regex "^6.24.1"
- babel-runtime "^6.22.0"
- regexpu-core "^2.0.0"
-
-babel-plugin-transform-exponentiation-operator@^6.22.0:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e"
- integrity sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=
- dependencies:
- babel-helper-builder-binary-assignment-operator-visitor "^6.24.1"
- babel-plugin-syntax-exponentiation-operator "^6.8.0"
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-regenerator@^6.22.0:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f"
- integrity sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=
- dependencies:
- regenerator-transform "^0.10.0"
-
-babel-plugin-transform-strict-mode@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758"
- integrity sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=
- dependencies:
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
+ object.assign "^4.1.0"
-babel-preset-env@^1.5.1:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a"
- integrity sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==
- dependencies:
- babel-plugin-check-es2015-constants "^6.22.0"
- babel-plugin-syntax-trailing-function-commas "^6.22.0"
- babel-plugin-transform-async-to-generator "^6.22.0"
- babel-plugin-transform-es2015-arrow-functions "^6.22.0"
- babel-plugin-transform-es2015-block-scoped-functions "^6.22.0"
- babel-plugin-transform-es2015-block-scoping "^6.23.0"
- babel-plugin-transform-es2015-classes "^6.23.0"
- babel-plugin-transform-es2015-computed-properties "^6.22.0"
- babel-plugin-transform-es2015-destructuring "^6.23.0"
- babel-plugin-transform-es2015-duplicate-keys "^6.22.0"
- babel-plugin-transform-es2015-for-of "^6.23.0"
- babel-plugin-transform-es2015-function-name "^6.22.0"
- babel-plugin-transform-es2015-literals "^6.22.0"
- babel-plugin-transform-es2015-modules-amd "^6.22.0"
- babel-plugin-transform-es2015-modules-commonjs "^6.23.0"
- babel-plugin-transform-es2015-modules-systemjs "^6.23.0"
- babel-plugin-transform-es2015-modules-umd "^6.23.0"
- babel-plugin-transform-es2015-object-super "^6.22.0"
- babel-plugin-transform-es2015-parameters "^6.23.0"
- babel-plugin-transform-es2015-shorthand-properties "^6.22.0"
- babel-plugin-transform-es2015-spread "^6.22.0"
- babel-plugin-transform-es2015-sticky-regex "^6.22.0"
- babel-plugin-transform-es2015-template-literals "^6.22.0"
- babel-plugin-transform-es2015-typeof-symbol "^6.23.0"
- babel-plugin-transform-es2015-unicode-regex "^6.22.0"
- babel-plugin-transform-exponentiation-operator "^6.22.0"
- babel-plugin-transform-regenerator "^6.22.0"
- browserslist "^3.2.6"
- invariant "^2.2.2"
- semver "^5.3.0"
-
-babel-register@^6.26.0:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071"
- integrity sha1-btAhFz4vy0htestFxgCahW9kcHE=
- dependencies:
- babel-core "^6.26.0"
- babel-runtime "^6.26.0"
- core-js "^2.5.0"
- home-or-tmp "^2.0.0"
- lodash "^4.17.4"
- mkdirp "^0.5.1"
- source-map-support "^0.4.15"
-
-babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
- integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4=
- dependencies:
- core-js "^2.4.0"
- regenerator-runtime "^0.11.0"
-
-babel-template@^6.24.1, babel-template@^6.26.0:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02"
- integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=
- dependencies:
- babel-runtime "^6.26.0"
- babel-traverse "^6.26.0"
- babel-types "^6.26.0"
- babylon "^6.18.0"
- lodash "^4.17.4"
-
-babel-traverse@^6.24.1, babel-traverse@^6.26.0:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee"
- integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=
- dependencies:
- babel-code-frame "^6.26.0"
- babel-messages "^6.23.0"
- babel-runtime "^6.26.0"
- babel-types "^6.26.0"
- babylon "^6.18.0"
- debug "^2.6.8"
- globals "^9.18.0"
- invariant "^2.2.2"
- lodash "^4.17.4"
-
-babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497"
- integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=
- dependencies:
- babel-runtime "^6.26.0"
- esutils "^2.0.2"
- lodash "^4.17.4"
- to-fast-properties "^1.0.3"
+babel-plugin-polyfill-corejs2@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.0.tgz#686775bf9a5aa757e10520903675e3889caeedc4"
+ integrity sha512-9bNwiR0dS881c5SHnzCmmGlMkJLl0OUZvxrxHo9w/iNoRuqaPjqlvBf4HrovXtQs/au5yKkpcdgfT1cC5PAZwg==
+ dependencies:
+ "@babel/compat-data" "^7.13.11"
+ "@babel/helper-define-polyfill-provider" "^0.2.0"
+ semver "^6.1.1"
-babylon@^6.18.0:
- version "6.18.0"
- resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3"
- integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==
+babel-plugin-polyfill-corejs3@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.0.tgz#f4b4bb7b19329827df36ff56f6e6d367026cb7a2"
+ integrity sha512-zZyi7p3BCUyzNxLx8KV61zTINkkV65zVkDAFNZmrTCRVhjo1jAS+YLvDJ9Jgd/w2tsAviCwFHReYfxO3Iql8Yg==
+ dependencies:
+ "@babel/helper-define-polyfill-provider" "^0.2.0"
+ core-js-compat "^3.9.1"
-balanced-match@^0.4.2:
- version "0.4.2"
- resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
- integrity sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=
+babel-plugin-polyfill-regenerator@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.0.tgz#853f5f5716f4691d98c84f8069c7636ea8da7ab8"
+ integrity sha512-J7vKbCuD2Xi/eEHxquHN14bXAW9CXtecwuLrOIDJtcZzTaPzV1VdEfoUf9AzcRBMolKUQKM9/GVojeh0hFiqMg==
+ dependencies:
+ "@babel/helper-define-polyfill-provider" "^0.2.0"
balanced-match@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
- integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
+ integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
base64-js@^1.0.2:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3"
- integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
+ integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
base@^0.11.1:
version "0.11.2"
@@ -867,15 +1634,32 @@ binary-extensions@^1.0.0:
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65"
integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==
-bluebird@^3.1.1, bluebird@^3.4.7:
- version "3.5.5"
- resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f"
- integrity sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==
+binary-extensions@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
+ integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
+
+bindings@^1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df"
+ integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==
+ dependencies:
+ file-uri-to-path "1.0.0"
+
+bluebird@^3.1.1, bluebird@^3.5.5:
+ version "3.7.2"
+ resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
+ integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
-bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
- version "4.11.8"
- resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f"
- integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==
+bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9:
+ version "4.12.0"
+ resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88"
+ integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==
+
+bn.js@^5.0.0, bn.js@^5.1.1:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002"
+ integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==
body-parser@1.19.0:
version "1.19.0"
@@ -905,7 +1689,7 @@ bonjour@^3.5.0:
multicast-dns "^6.0.1"
multicast-dns-service-types "^1.1.0"
-boolbase@~1.0.0:
+boolbase@^1.0.0, boolbase@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24=
@@ -934,7 +1718,14 @@ braces@^2.3.1, braces@^2.3.2:
split-string "^3.0.2"
to-regex "^3.0.1"
-brorand@^1.0.1:
+braces@^3.0.1, braces@~3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
+ integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
+ dependencies:
+ fill-range "^7.0.1"
+
+brorand@^1.0.1, brorand@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=
@@ -970,26 +1761,28 @@ browserify-des@^1.0.0:
inherits "^2.0.1"
safe-buffer "^5.1.2"
-browserify-rsa@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524"
- integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=
+browserify-rsa@^4.0.0, browserify-rsa@^4.0.1:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d"
+ integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==
dependencies:
- bn.js "^4.1.0"
+ bn.js "^5.0.0"
randombytes "^2.0.1"
browserify-sign@^4.0.0:
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298"
- integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=
- dependencies:
- bn.js "^4.1.1"
- browserify-rsa "^4.0.0"
- create-hash "^1.1.0"
- create-hmac "^1.1.2"
- elliptic "^6.0.0"
- inherits "^2.0.1"
- parse-asn1 "^5.0.0"
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3"
+ integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==
+ dependencies:
+ bn.js "^5.1.1"
+ browserify-rsa "^4.0.1"
+ create-hash "^1.2.0"
+ create-hmac "^1.1.7"
+ elliptic "^6.5.3"
+ inherits "^2.0.4"
+ parse-asn1 "^5.1.5"
+ readable-stream "^3.6.0"
+ safe-buffer "^5.2.0"
browserify-zlib@^0.2.0:
version "0.2.0"
@@ -998,21 +1791,21 @@ browserify-zlib@^0.2.0:
dependencies:
pako "~1.0.5"
-browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6:
- version "1.7.7"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9"
- integrity sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=
+browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.3:
+ version "4.16.4"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.4.tgz#7ebf913487f40caf4637b892b268069951c35d58"
+ integrity sha512-d7rCxYV8I9kj41RH8UKYnvDYCRENUlHRgyXy/Rhr/1BaeLGfiCptEdFE8MIrvGfWbBFNjVYx76SQWvNX1j+/cQ==
dependencies:
- caniuse-db "^1.0.30000639"
- electron-to-chromium "^1.2.7"
+ caniuse-lite "^1.0.30001208"
+ colorette "^1.2.2"
+ electron-to-chromium "^1.3.712"
+ escalade "^3.1.1"
+ node-releases "^1.1.71"
-browserslist@^3.2.6:
- version "3.2.8"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6"
- integrity sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==
- dependencies:
- caniuse-lite "^1.0.30000844"
- electron-to-chromium "^1.3.47"
+buffer-from@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
+ integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
buffer-indexof@^1.0.0:
version "1.1.1"
@@ -1025,9 +1818,9 @@ buffer-xor@^1.0.3:
integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=
buffer@^4.3.0:
- version "4.9.1"
- resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298"
- integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=
+ version "4.9.2"
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8"
+ integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==
dependencies:
base64-js "^1.0.2"
ieee754 "^1.1.4"
@@ -1048,6 +1841,50 @@ bytes@3.1.0:
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6"
integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==
+cacache@^12.0.2:
+ version "12.0.4"
+ resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c"
+ integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==
+ dependencies:
+ bluebird "^3.5.5"
+ chownr "^1.1.1"
+ figgy-pudding "^3.5.1"
+ glob "^7.1.4"
+ graceful-fs "^4.1.15"
+ infer-owner "^1.0.3"
+ lru-cache "^5.1.1"
+ mississippi "^3.0.0"
+ mkdirp "^0.5.1"
+ move-concurrently "^1.0.1"
+ promise-inflight "^1.0.1"
+ rimraf "^2.6.3"
+ ssri "^6.0.1"
+ unique-filename "^1.1.1"
+ y18n "^4.0.0"
+
+cacache@^15.0.5:
+ version "15.0.6"
+ resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.6.tgz#65a8c580fda15b59150fb76bf3f3a8e45d583099"
+ integrity sha512-g1WYDMct/jzW+JdWEyjaX2zoBkZ6ZT9VpOyp2I/VMtDsNLffNat3kqPFfi1eDRSK9/SuKGyORDHcQMcPF8sQ/w==
+ dependencies:
+ "@npmcli/move-file" "^1.0.1"
+ chownr "^2.0.0"
+ fs-minipass "^2.0.0"
+ glob "^7.1.4"
+ infer-owner "^1.0.4"
+ lru-cache "^6.0.0"
+ minipass "^3.1.1"
+ minipass-collect "^1.0.2"
+ minipass-flush "^1.0.5"
+ minipass-pipeline "^1.2.2"
+ mkdirp "^1.0.3"
+ p-map "^4.0.0"
+ promise-inflight "^1.0.1"
+ rimraf "^3.0.2"
+ ssri "^8.0.1"
+ tar "^6.0.2"
+ unique-filename "^1.1.1"
+
cache-base@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
@@ -1063,6 +1900,38 @@ cache-base@^1.0.1:
union-value "^1.0.0"
unset-value "^1.0.0"
+call-bind@^1.0.0, call-bind@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
+ integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
+ dependencies:
+ function-bind "^1.1.1"
+ get-intrinsic "^1.0.2"
+
+caller-callsite@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134"
+ integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=
+ dependencies:
+ callsites "^2.0.0"
+
+caller-path@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4"
+ integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=
+ dependencies:
+ caller-callsite "^2.0.0"
+
+callsites@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50"
+ integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=
+
+callsites@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
+ integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
+
camel-case@3.0.x:
version "3.0.0"
resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73"
@@ -1071,56 +1940,25 @@ camel-case@3.0.x:
no-case "^2.2.0"
upper-case "^1.1.1"
-camelcase-keys@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
- integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc=
- dependencies:
- camelcase "^2.0.0"
- map-obj "^1.0.0"
-
-camelcase@^1.0.2:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
- integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=
-
-camelcase@^2.0.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
- integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=
+camelcase@^5.0.0, camelcase@^5.3.1:
+ version "5.3.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
+ integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
-camelcase@^3.0.0:
+caniuse-api@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a"
- integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo=
-
-caniuse-api@^1.5.2:
- version "1.6.1"
- resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c"
- integrity sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=
+ resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0"
+ integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==
dependencies:
- browserslist "^1.3.6"
- caniuse-db "^1.0.30000529"
+ browserslist "^4.0.0"
+ caniuse-lite "^1.0.0"
lodash.memoize "^4.1.2"
lodash.uniq "^4.5.0"
-caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639:
- version "1.0.30000984"
- resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000984.tgz#3e4a53d78f33403e931ef1d2b2db07556d253dff"
- integrity sha512-1tismk25It1v7bWgRHkHxITa7ySDXVQCwb49iKbn/HeDBTEKOgEqKkJT2Xv5rJSneDqdQRqFvYrzvw5WulLjfQ==
-
-caniuse-lite@^1.0.30000844:
- version "1.0.30000984"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000984.tgz#dc96c3c469e9bcfc6ad5bdd24c77ec918ea76fe0"
- integrity sha512-n5tKOjMaZ1fksIpQbjERuqCyfgec/m9pferkFQbLmWtqLUdmt12hNhjSwsmPdqeiG2NkITOQhr1VYIwWSAceiA==
-
-center-align@^0.1.1:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad"
- integrity sha1-qg0yYptu6XIgBBHL1EYckHvCt60=
- dependencies:
- align-text "^0.1.3"
- lazy-cache "^1.0.3"
+caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001208:
+ version "1.0.30001208"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001208.tgz#a999014a35cebd4f98c405930a057a0d75352eb9"
+ integrity sha512-OE5UE4+nBOro8Dyvv0lfx+SRtfVIOM9uhKqFmJeUbGriqhhStgp1A0OyBpgy3OUF8AhYCT+PVwPC1gMl2ZcQMA==
chalk@^1.1.3:
version "1.1.3"
@@ -1133,7 +1971,7 @@ chalk@^1.1.3:
strip-ansi "^3.0.0"
supports-color "^2.0.0"
-chalk@^2.4.1:
+chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2:
version "2.4.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
@@ -1142,10 +1980,18 @@ chalk@^2.4.1:
escape-string-regexp "^1.0.5"
supports-color "^5.3.0"
-chokidar@^2.0.2, chokidar@^2.1.2:
- version "2.1.6"
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.6.tgz#b6cad653a929e244ce8a834244164d241fa954c5"
- integrity sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==
+chalk@^4.0.0, chalk@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a"
+ integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
+chokidar@^2.1.8:
+ version "2.1.8"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917"
+ integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==
dependencies:
anymatch "^2.0.0"
async-each "^1.0.1"
@@ -1161,10 +2007,40 @@ chokidar@^2.0.2, chokidar@^2.1.2:
optionalDependencies:
fsevents "^1.2.7"
+chokidar@^3.4.1:
+ version "3.5.1"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a"
+ integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==
+ dependencies:
+ anymatch "~3.1.1"
+ braces "~3.0.2"
+ glob-parent "~5.1.0"
+ is-binary-path "~2.1.0"
+ is-glob "~4.0.1"
+ normalize-path "~3.0.0"
+ readdirp "~3.5.0"
+ optionalDependencies:
+ fsevents "~2.3.1"
+
chownr@^1.1.1:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.2.tgz#a18f1e0b269c8a6a5d3c86eb298beb14c3dd7bf6"
- integrity sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A==
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
+ integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
+
+chownr@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece"
+ integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==
+
+chrome-trace-event@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac"
+ integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==
+
+ci-info@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
+ integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==
cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
version "1.0.4"
@@ -1174,13 +2050,6 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
inherits "^2.0.1"
safe-buffer "^5.0.1"
-clap@^1.0.9:
- version "1.2.3"
- resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.3.tgz#4f36745b32008492557f46412d66d50cb99bce51"
- integrity sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==
- dependencies:
- chalk "^1.1.3"
-
class-utils@^0.3.5:
version "0.3.6"
resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
@@ -1192,52 +2061,59 @@ class-utils@^0.3.5:
static-extend "^0.1.1"
clean-css@4.2.x:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17"
- integrity sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==
+ version "4.2.3"
+ resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78"
+ integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==
dependencies:
source-map "~0.6.0"
-cliui@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1"
- integrity sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=
+clean-stack@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
+ integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==
+
+cli-cursor@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307"
+ integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==
dependencies:
- center-align "^0.1.1"
- right-align "^0.1.1"
- wordwrap "0.0.2"
+ restore-cursor "^3.1.0"
-cliui@^3.2.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d"
- integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=
+cli-truncate@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7"
+ integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==
dependencies:
- string-width "^1.0.1"
- strip-ansi "^3.0.1"
- wrap-ansi "^2.0.0"
+ slice-ansi "^3.0.0"
+ string-width "^4.2.0"
-clone@^1.0.2:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
- integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4=
+cliui@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5"
+ integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==
+ dependencies:
+ string-width "^3.1.0"
+ strip-ansi "^5.2.0"
+ wrap-ansi "^5.1.0"
-co@^4.6.0:
- version "4.6.0"
- resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
- integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=
+clone-deep@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387"
+ integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==
+ dependencies:
+ is-plain-object "^2.0.4"
+ kind-of "^6.0.2"
+ shallow-clone "^3.0.0"
-coa@~1.0.1:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.4.tgz#a9ef153660d6a86a8bdec0289a5c684d217432fd"
- integrity sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=
+coa@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3"
+ integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==
dependencies:
+ "@types/q" "^1.5.1"
+ chalk "^2.4.1"
q "^1.1.2"
-code-point-at@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
- integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
-
collection-visit@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
@@ -1246,62 +2122,65 @@ collection-visit@^1.0.0:
map-visit "^1.0.0"
object-visit "^1.0.0"
-color-convert@^1.3.0, color-convert@^1.9.0:
+color-convert@^1.9.0, color-convert@^1.9.1:
version "1.9.3"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
dependencies:
color-name "1.1.3"
+color-convert@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
+ integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
+ dependencies:
+ color-name "~1.1.4"
+
color-name@1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
-color-name@^1.0.0:
+color-name@^1.0.0, color-name@~1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
-color-string@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991"
- integrity sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=
+color-string@^1.5.4:
+ version "1.5.5"
+ resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.5.tgz#65474a8f0e7439625f3d27a6a19d89fc45223014"
+ integrity sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg==
dependencies:
color-name "^1.0.0"
+ simple-swizzle "^0.2.2"
-color@^0.11.0:
- version "0.11.4"
- resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764"
- integrity sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=
- dependencies:
- clone "^1.0.2"
- color-convert "^1.3.0"
- color-string "^0.3.0"
-
-colormin@^1.0.5:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133"
- integrity sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=
+color@^3.0.0:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/color/-/color-3.1.3.tgz#ca67fb4e7b97d611dcde39eceed422067d91596e"
+ integrity sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==
dependencies:
- color "^0.11.0"
- css-color-names "0.0.4"
- has "^1.0.1"
+ color-convert "^1.9.1"
+ color-string "^1.5.4"
-colors@~1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63"
- integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM=
+colorette@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94"
+ integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==
commander@2.17.x:
version "2.17.1"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf"
integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==
-commander@^2.19.0:
- version "2.20.0"
- resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422"
- integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==
+commander@^2.19.0, commander@^2.20.0:
+ version "2.20.3"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
+ integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
+
+commander@^6.2.0:
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c"
+ integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==
commander@~2.19.0:
version "2.19.0"
@@ -1313,19 +2192,35 @@ commondir@^1.0.1:
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
+compare-versions@^3.6.0:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62"
+ integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==
+
component-emitter@^1.2.1:
version "1.3.0"
resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==
compressible@~2.0.16:
- version "2.0.17"
- resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1"
- integrity sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==
+ version "2.0.18"
+ resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba"
+ integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==
+ dependencies:
+ mime-db ">= 1.43.0 < 2"
+
+compression-webpack-plugin@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/compression-webpack-plugin/-/compression-webpack-plugin-4.0.1.tgz#33eda97f1170dd38c5556771de10f34245aa0274"
+ integrity sha512-0mg6PgwTsUe5LEcUrOu3ob32vraDx2VdbMGAT1PARcOV+UJWDYZFdkSo6RbHoGQ061mmmkC7XpRKOlvwm/gzJQ==
dependencies:
- mime-db ">= 1.40.0 < 2"
+ cacache "^15.0.5"
+ find-cache-dir "^3.3.1"
+ schema-utils "^2.7.0"
+ serialize-javascript "^4.0.0"
+ webpack-sources "^1.4.3"
-compression@^1.7.3:
+compression@^1.7.4:
version "1.7.4"
resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f"
integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==
@@ -1343,6 +2238,25 @@ concat-map@0.0.1:
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
+concat-stream@^1.5.0:
+ version "1.6.2"
+ resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
+ integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
+ dependencies:
+ buffer-from "^1.0.0"
+ inherits "^2.0.3"
+ readable-stream "^2.2.2"
+ typedarray "^0.0.6"
+
+condense-newlines@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/condense-newlines/-/condense-newlines-0.2.1.tgz#3de985553139475d32502c83b02f60684d24c55f"
+ integrity sha1-PemFVTE5R10yUCyDsC9gaE0kxV8=
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-whitespace "^0.3.0"
+ kind-of "^3.0.2"
+
config-chain@^1.1.12:
version "1.1.12"
resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa"
@@ -1351,27 +2265,20 @@ config-chain@^1.1.12:
ini "^1.3.4"
proto-list "~1.2.1"
-connect-history-api-fallback@^1.3.0:
+connect-history-api-fallback@^1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc"
integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==
console-browserify@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
- integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=
- dependencies:
- date-now "^0.1.4"
-
-console-control-strings@^1.0.0, console-control-strings@~1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
- integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336"
+ integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==
-consolidate@^0.14.0:
- version "0.14.5"
- resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.14.5.tgz#5a25047bc76f73072667c8cb52c989888f494c63"
- integrity sha1-WiUEe8dvcwcmZ8jLUsmJiI9JTGM=
+consolidate@^0.15.1:
+ version "0.15.1"
+ resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.15.1.tgz#21ab043235c71a07d45d9aad98593b0dba56bab7"
+ integrity sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==
dependencies:
bluebird "^3.1.1"
@@ -1392,10 +2299,10 @@ content-type@~1.0.4:
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
-convert-source-map@^1.5.1:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20"
- integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==
+convert-source-map@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442"
+ integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==
dependencies:
safe-buffer "~5.1.1"
@@ -1409,43 +2316,76 @@ cookie@0.4.0:
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba"
integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==
+copy-concurrently@^1.0.0:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0"
+ integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==
+ dependencies:
+ aproba "^1.1.1"
+ fs-write-stream-atomic "^1.0.8"
+ iferr "^0.1.5"
+ mkdirp "^0.5.1"
+ rimraf "^2.5.4"
+ run-queue "^1.0.0"
+
copy-descriptor@^0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
-core-js@^2.4.0, core-js@^2.5.0:
- version "2.6.9"
- resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.9.tgz#6b4b214620c834152e179323727fc19741b084f2"
- integrity sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==
+core-js-compat@^3.9.0, core-js-compat@^3.9.1:
+ version "3.10.1"
+ resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.10.1.tgz#62183a3a77ceeffcc420d907a3e6fc67d9b27f1c"
+ integrity sha512-ZHQTdTPkqvw2CeHiZC970NNJcnwzT6YIueDMASKt+p3WbZsLXOcoD392SkcWhkC0wBBHhlfhqGKKsNCQUozYtg==
+ dependencies:
+ browserslist "^4.16.3"
+ semver "7.0.0"
+
+core-js-pure@^3.0.0:
+ version "3.10.1"
+ resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.10.1.tgz#28642697dfcf02e0fd9f4d9891bd03a22df28ecf"
+ integrity sha512-PeyJH2SE0KuxY5eCGNWA+W+CeDpB6M1PN3S7Am7jSv/Ttuxz2SnWbIiVQOn/TDaGaGtxo8CRWHkXwJscbUHtVw==
+
+core-js@^2.6.5:
+ version "2.6.12"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec"
+ integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==
core-util-is@~1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
-cosmiconfig@^2.1.0, cosmiconfig@^2.1.1:
- version "2.2.2"
- resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-2.2.2.tgz#6173cebd56fac042c1f4390edf7af6c07c7cb892"
- integrity sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==
+cosmiconfig@^5.0.0:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a"
+ integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==
dependencies:
+ import-fresh "^2.0.0"
is-directory "^0.3.1"
- js-yaml "^3.4.3"
- minimist "^1.2.0"
- object-assign "^4.1.0"
- os-homedir "^1.0.1"
- parse-json "^2.2.0"
- require-from-string "^1.1.0"
+ js-yaml "^3.13.1"
+ parse-json "^4.0.0"
+
+cosmiconfig@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3"
+ integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==
+ dependencies:
+ "@types/parse-json" "^4.0.0"
+ import-fresh "^3.2.1"
+ parse-json "^5.0.0"
+ path-type "^4.0.0"
+ yaml "^1.10.0"
create-ecdh@^4.0.0:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff"
- integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e"
+ integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==
dependencies:
bn.js "^4.1.0"
- elliptic "^6.0.0"
+ elliptic "^6.5.3"
-create-hash@^1.1.0, create-hash@^1.1.2:
+create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196"
integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==
@@ -1456,7 +2396,7 @@ create-hash@^1.1.0, create-hash@^1.1.2:
ripemd160 "^2.0.1"
sha.js "^2.4.0"
-create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
+create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7:
version "1.1.7"
resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff"
integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==
@@ -1468,23 +2408,33 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
safe-buffer "^5.0.1"
sha.js "^2.4.8"
-cross-env@^3.0.0:
- version "3.2.4"
- resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-3.2.4.tgz#9e0585f277864ed421ce756f81a980ff0d698aba"
- integrity sha1-ngWF8neGTtQhznVvgamA/w1piro=
+cross-env@^7.0.2:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf"
+ integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==
dependencies:
- cross-spawn "^5.1.0"
- is-windows "^1.0.0"
+ cross-spawn "^7.0.1"
-cross-spawn@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
- integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=
+cross-spawn@^6.0.0, cross-spawn@^6.0.5:
+ version "6.0.5"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
+ integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
dependencies:
- lru-cache "^4.0.1"
+ nice-try "^1.0.4"
+ path-key "^2.0.1"
+ semver "^5.5.0"
shebang-command "^1.2.0"
which "^1.2.9"
+cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
+ integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
+ dependencies:
+ path-key "^3.1.0"
+ shebang-command "^2.0.0"
+ which "^2.0.1"
+
crypto-browserify@^3.11.0:
version "3.12.0"
resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
@@ -1502,152 +2452,186 @@ crypto-browserify@^3.11.0:
randombytes "^2.0.0"
randomfill "^1.0.3"
-css-color-names@0.0.4:
+css-color-names@0.0.4, css-color-names@^0.0.4:
version "0.0.4"
resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=
-css-loader@^0.25.0:
- version "0.25.0"
- resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.25.0.tgz#c3febc8ce28f4c83576b6b13707f47f90c390223"
- integrity sha1-w/68jOKPTINXa2sTcH9H+Qw5AiM=
+css-declaration-sorter@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22"
+ integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==
dependencies:
- babel-code-frame "^6.11.0"
- css-selector-tokenizer "^0.6.0"
- cssnano ">=2.6.1 <4"
- loader-utils "~0.2.2"
- lodash.camelcase "^3.0.1"
- object-assign "^4.0.1"
- postcss "^5.0.6"
- postcss-modules-extract-imports "^1.0.0"
- postcss-modules-local-by-default "^1.0.1"
- postcss-modules-scope "^1.0.0"
- postcss-modules-values "^1.1.0"
- source-list-map "^0.1.4"
-
-css-select@^1.1.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858"
- integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=
+ postcss "^7.0.1"
+ timsort "^0.3.0"
+
+css-loader@^3.6.0:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.6.0.tgz#2e4b2c7e6e2d27f8c8f28f61bffcd2e6c91ef645"
+ integrity sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==
dependencies:
- boolbase "~1.0.0"
- css-what "2.1"
- domutils "1.5.1"
- nth-check "~1.0.1"
+ camelcase "^5.3.1"
+ cssesc "^3.0.0"
+ icss-utils "^4.1.1"
+ loader-utils "^1.2.3"
+ normalize-path "^3.0.0"
+ postcss "^7.0.32"
+ postcss-modules-extract-imports "^2.0.0"
+ postcss-modules-local-by-default "^3.0.2"
+ postcss-modules-scope "^2.2.0"
+ postcss-modules-values "^3.0.0"
+ postcss-value-parser "^4.1.0"
+ schema-utils "^2.7.0"
+ semver "^6.3.0"
+
+css-select-base-adapter@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7"
+ integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==
-css-selector-tokenizer@^0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.6.0.tgz#6445f582c7930d241dcc5007a43d6fcb8f073152"
- integrity sha1-ZEX1gseTDSQdzFAHpD1vy48HMVI=
+css-select@^2.0.0, css-select@^2.0.2:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef"
+ integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==
dependencies:
- cssesc "^0.1.0"
- fastparse "^1.1.1"
- regexpu-core "^1.0.0"
+ boolbase "^1.0.0"
+ css-what "^3.2.1"
+ domutils "^1.7.0"
+ nth-check "^1.0.2"
-css-selector-tokenizer@^0.7.0:
- version "0.7.1"
- resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz#a177271a8bca5019172f4f891fc6eed9cbf68d5d"
- integrity sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==
+css-tree@1.0.0-alpha.37:
+ version "1.0.0-alpha.37"
+ resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22"
+ integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==
dependencies:
- cssesc "^0.1.0"
- fastparse "^1.1.1"
- regexpu-core "^1.0.0"
+ mdn-data "2.0.4"
+ source-map "^0.6.1"
-css-what@2.1:
- version "2.1.3"
- resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2"
- integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==
+css-tree@^1.1.2:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d"
+ integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==
+ dependencies:
+ mdn-data "2.0.14"
+ source-map "^0.6.1"
-cssesc@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4"
- integrity sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=
-
-"cssnano@>=2.6.1 <4":
- version "3.10.0"
- resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38"
- integrity sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=
- dependencies:
- autoprefixer "^6.3.1"
- decamelize "^1.1.2"
- defined "^1.0.0"
- has "^1.0.1"
- object-assign "^4.0.1"
- postcss "^5.0.14"
- postcss-calc "^5.2.0"
- postcss-colormin "^2.1.8"
- postcss-convert-values "^2.3.4"
- postcss-discard-comments "^2.0.4"
- postcss-discard-duplicates "^2.0.1"
- postcss-discard-empty "^2.0.1"
- postcss-discard-overridden "^0.1.1"
- postcss-discard-unused "^2.2.1"
- postcss-filter-plugins "^2.0.0"
- postcss-merge-idents "^2.1.5"
- postcss-merge-longhand "^2.0.1"
- postcss-merge-rules "^2.0.3"
- postcss-minify-font-values "^1.0.2"
- postcss-minify-gradients "^1.0.1"
- postcss-minify-params "^1.0.4"
- postcss-minify-selectors "^2.0.4"
- postcss-normalize-charset "^1.1.0"
- postcss-normalize-url "^3.0.7"
- postcss-ordered-values "^2.1.0"
- postcss-reduce-idents "^2.2.2"
- postcss-reduce-initial "^1.0.0"
- postcss-reduce-transforms "^1.0.3"
- postcss-svgo "^2.1.1"
- postcss-unique-selectors "^2.0.2"
- postcss-value-parser "^3.2.3"
- postcss-zindex "^2.0.1"
-
-csso@~2.3.1:
- version "2.3.2"
- resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85"
- integrity sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=
+css-what@^3.2.1:
+ version "3.4.2"
+ resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4"
+ integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==
+
+cssesc@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
+ integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
+
+cssnano-preset-default@^4.0.8:
+ version "4.0.8"
+ resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz#920622b1fc1e95a34e8838203f1397a504f2d3ff"
+ integrity sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==
+ dependencies:
+ css-declaration-sorter "^4.0.1"
+ cssnano-util-raw-cache "^4.0.1"
+ postcss "^7.0.0"
+ postcss-calc "^7.0.1"
+ postcss-colormin "^4.0.3"
+ postcss-convert-values "^4.0.1"
+ postcss-discard-comments "^4.0.2"
+ postcss-discard-duplicates "^4.0.2"
+ postcss-discard-empty "^4.0.1"
+ postcss-discard-overridden "^4.0.1"
+ postcss-merge-longhand "^4.0.11"
+ postcss-merge-rules "^4.0.3"
+ postcss-minify-font-values "^4.0.2"
+ postcss-minify-gradients "^4.0.2"
+ postcss-minify-params "^4.0.2"
+ postcss-minify-selectors "^4.0.2"
+ postcss-normalize-charset "^4.0.1"
+ postcss-normalize-display-values "^4.0.2"
+ postcss-normalize-positions "^4.0.2"
+ postcss-normalize-repeat-style "^4.0.2"
+ postcss-normalize-string "^4.0.2"
+ postcss-normalize-timing-functions "^4.0.2"
+ postcss-normalize-unicode "^4.0.1"
+ postcss-normalize-url "^4.0.1"
+ postcss-normalize-whitespace "^4.0.2"
+ postcss-ordered-values "^4.1.2"
+ postcss-reduce-initial "^4.0.3"
+ postcss-reduce-transforms "^4.0.2"
+ postcss-svgo "^4.0.3"
+ postcss-unique-selectors "^4.0.1"
+
+cssnano-util-get-arguments@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f"
+ integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=
+
+cssnano-util-get-match@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d"
+ integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=
+
+cssnano-util-raw-cache@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282"
+ integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==
dependencies:
- clap "^1.0.9"
- source-map "^0.5.3"
+ postcss "^7.0.0"
-currently-unhandled@^0.4.1:
- version "0.4.1"
- resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
- integrity sha1-mI3zP+qxke95mmE2nddsF635V+o=
+cssnano-util-same-parent@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3"
+ integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==
+
+cssnano@^4.1.10:
+ version "4.1.11"
+ resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.11.tgz#c7b5f5b81da269cb1fd982cb960c1200910c9a99"
+ integrity sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==
dependencies:
- array-find-index "^1.0.1"
+ cosmiconfig "^5.0.0"
+ cssnano-preset-default "^4.0.8"
+ is-resolvable "^1.0.0"
+ postcss "^7.0.0"
-date-now@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
- integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=
+csso@^4.0.2:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529"
+ integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==
+ dependencies:
+ css-tree "^1.1.2"
+
+cyclist@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9"
+ integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=
de-indent@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d"
integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=
-debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9:
+debug@2.6.9, debug@^2.2.0, debug@^2.3.3:
version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
dependencies:
ms "2.0.0"
-debug@^3.1.0, debug@^3.2.6:
- version "3.2.6"
- resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
- integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
+debug@^3.1.1, debug@^3.2.6:
+ version "3.2.7"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
+ integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
dependencies:
ms "^2.1.1"
-debug@^4.1.0:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
- integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
+debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0:
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee"
+ integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==
dependencies:
- ms "^2.1.1"
+ ms "2.1.2"
-decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:
+decamelize@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
@@ -1657,17 +2641,37 @@ decode-uri-component@^0.2.0:
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
+dedent@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c"
+ integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=
+
deep-equal@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
- integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a"
+ integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==
+ dependencies:
+ is-arguments "^1.0.4"
+ is-date-object "^1.0.1"
+ is-regex "^1.0.4"
+ object-is "^1.0.1"
+ object-keys "^1.1.1"
+ regexp.prototype.flags "^1.2.0"
-deep-extend@^0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
- integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
+deep-is@^0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
+ integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
-define-properties@^1.1.2:
+default-gateway@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b"
+ integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==
+ dependencies:
+ execa "^1.0.0"
+ ip-regex "^2.1.0"
+
+define-properties@^1.1.2, define-properties@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
@@ -1696,27 +2700,18 @@ define-property@^2.0.2:
is-descriptor "^1.0.2"
isobject "^3.0.1"
-defined@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
- integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=
-
-del@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5"
- integrity sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=
+del@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4"
+ integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==
dependencies:
+ "@types/glob" "^7.1.1"
globby "^6.1.0"
- is-path-cwd "^1.0.0"
- is-path-in-cwd "^1.0.0"
- p-map "^1.1.1"
- pify "^3.0.0"
- rimraf "^2.2.8"
-
-delegates@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
- integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
+ is-path-cwd "^2.0.0"
+ is-path-in-cwd "^2.0.0"
+ p-map "^2.0.0"
+ pify "^4.0.1"
+ rimraf "^2.6.3"
depd@~1.1.2:
version "1.1.2"
@@ -1724,9 +2719,9 @@ depd@~1.1.2:
integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
des.js@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc"
- integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843"
+ integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==
dependencies:
inherits "^2.0.1"
minimalistic-assert "^1.0.0"
@@ -1736,22 +2731,15 @@ destroy@~1.0.4:
resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
-detect-indent@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208"
- integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg=
- dependencies:
- repeating "^2.0.0"
-
-detect-libc@^1.0.2:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
- integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=
+detect-file@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7"
+ integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=
detect-node@^2.0.4:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c"
- integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.5.tgz#9d270aa7eaa5af0b72c4c9d9b814e7f4ce738b79"
+ integrity sha512-qi86tE6hRcFHy8jI1m2VG+LaPUR1LhqDa5G8tVjuUXmOrpuAgqsA1pN0+ldgr3aKUH+QLI9hCY/OcRYisERejw==
diffie-hellman@^5.0.0:
version "5.0.3"
@@ -1762,6 +2750,13 @@ diffie-hellman@^5.0.0:
miller-rabin "^4.0.0"
randombytes "^2.0.0"
+dir-glob@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
+ integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
+ dependencies:
+ path-type "^4.0.0"
+
dns-equal@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d"
@@ -1782,6 +2777,18 @@ dns-txt@^2.0.2:
dependencies:
buffer-indexof "^1.0.0"
+doctrine@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
+ integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
+ dependencies:
+ esutils "^2.0.2"
+
+dom-accessibility-api@^0.5.4:
+ version "0.5.4"
+ resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.4.tgz#b06d059cdd4a4ad9a79275f9d414a5c126241166"
+ integrity sha512-TvrjBckDy2c6v6RLxPv5QXOnU+SmF9nBII5621Ve5fu6Z/BDrENurBEvlC1f44lKEUVqOpK4w9E5Idc5/EgkLQ==
+
dom-converter@^0.2:
version "0.2.0"
resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768"
@@ -1789,24 +2796,34 @@ dom-converter@^0.2:
dependencies:
utila "~0.4"
+dom-event-types@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/dom-event-types/-/dom-event-types-1.0.0.tgz#5830a0a29e1bf837fe50a70cd80a597232813cae"
+ integrity sha512-2G2Vwi2zXTHBGqXHsJ4+ak/iP0N8Ar+G8a7LiD2oup5o4sQWytwqqrZu/O6hIMV0KMID2PL69OhpshLO0n7UJQ==
+
dom-serializer@0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0"
- integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51"
+ integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==
dependencies:
- domelementtype "^1.3.0"
- entities "^1.1.1"
+ domelementtype "^2.0.1"
+ entities "^2.0.0"
domain-browser@^1.1.1:
version "1.2.0"
resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==
-domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1:
+domelementtype@1, domelementtype@^1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f"
integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==
+domelementtype@^2.0.1:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57"
+ integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==
+
domhandler@^2.3.0:
version "2.4.2"
resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803"
@@ -1814,15 +2831,7 @@ domhandler@^2.3.0:
dependencies:
domelementtype "1"
-domutils@1.5.1:
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf"
- integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=
- dependencies:
- dom-serializer "0"
- domelementtype "1"
-
-domutils@^1.5.1:
+domutils@^1.5.1, domutils@^1.7.0:
version "1.7.0"
resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==
@@ -1830,6 +2839,23 @@ domutils@^1.5.1:
dom-serializer "0"
domelementtype "1"
+dot-prop@^5.2.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88"
+ integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==
+ dependencies:
+ is-obj "^2.0.0"
+
+duplexify@^3.4.2, duplexify@^3.6.0:
+ version "3.7.1"
+ resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309"
+ integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==
+ dependencies:
+ end-of-stream "^1.0.0"
+ inherits "^2.0.1"
+ readable-stream "^2.0.0"
+ stream-shift "^1.0.0"
+
editorconfig@^0.15.3:
version "0.15.3"
resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.15.3.tgz#bef84c4e75fb8dcb0ce5cee8efd51c15999befc5"
@@ -1845,84 +2871,139 @@ ee-first@1.1.1:
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
-electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.47:
- version "1.3.194"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.194.tgz#a96452a96d4539131957aade9f634a45721f2819"
- integrity sha512-w0LHR2YD9Ex1o+Sz4IN2hYzCB8vaFtMNW+yJcBf6SZlVqgFahkne/4rGVJdk4fPF98Gch9snY7PiabOh+vqHNg==
+electron-to-chromium@^1.3.712:
+ version "1.3.716"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.716.tgz#cadedb3d07776c56990cedff1a75488afeeac2e0"
+ integrity sha512-yUWKAfpJH5ovgwIlNbBHioedAWolzTVl6tmMaXP1RmCMyYv+U+ukvo9gwA10mLW0eFbyW4n/oC4UIN12gTMn/w==
-elliptic@^6.0.0:
- version "6.5.0"
- resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.0.tgz#2b8ed4c891b7de3200e14412a5b8248c7af505ca"
- integrity sha512-eFOJTMyCYb7xtE/caJ6JJu+bhi67WCYNbkGSknu20pmM8Ke/bqOfdnZWxyoGN26JgfxTbXrsCkEw4KheCT/KGg==
+elliptic@^6.5.3:
+ version "6.5.4"
+ resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb"
+ integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==
dependencies:
- bn.js "^4.4.0"
- brorand "^1.0.1"
+ bn.js "^4.11.9"
+ brorand "^1.1.0"
hash.js "^1.0.0"
- hmac-drbg "^1.0.0"
- inherits "^2.0.1"
- minimalistic-assert "^1.0.0"
- minimalistic-crypto-utils "^1.0.0"
+ hmac-drbg "^1.0.1"
+ inherits "^2.0.4"
+ minimalistic-assert "^1.0.1"
+ minimalistic-crypto-utils "^1.0.1"
+
+emoji-regex@^7.0.1:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
+ integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
+
+emoji-regex@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
+ integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
emojis-list@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k=
+emojis-list@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
+ integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
+
encodeurl@~1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
-enhanced-resolve@^3.3.0:
- version "3.4.1"
- resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz#0421e339fd71419b3da13d129b3979040230476e"
- integrity sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=
+end-of-stream@^1.0.0, end-of-stream@^1.1.0:
+ version "1.4.4"
+ resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
+ integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
+ dependencies:
+ once "^1.4.0"
+
+enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.1, enhanced-resolve@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec"
+ integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==
dependencies:
graceful-fs "^4.1.2"
- memory-fs "^0.4.0"
- object-assign "^4.0.1"
- tapable "^0.2.7"
+ memory-fs "^0.5.0"
+ tapable "^1.0.0"
+
+enquirer@^2.3.5, enquirer@^2.3.6:
+ version "2.3.6"
+ resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d"
+ integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==
+ dependencies:
+ ansi-colors "^4.1.1"
entities@^1.1.1:
version "1.1.2"
resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56"
integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==
-errno@^0.1.3:
- version "0.1.7"
- resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618"
- integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==
+entities@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
+ integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
+
+errno@^0.1.3, errno@~0.1.7:
+ version "0.1.8"
+ resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f"
+ integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==
dependencies:
prr "~1.0.1"
-error-ex@^1.2.0:
+error-ex@^1.3.1:
version "1.3.2"
resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
dependencies:
is-arrayish "^0.2.1"
-es-abstract@^1.7.0:
- version "1.13.0"
- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9"
- integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==
+error-stack-parser@^2.0.0:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.6.tgz#5a99a707bd7a4c58a797902d48d82803ede6aad8"
+ integrity sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ==
+ dependencies:
+ stackframe "^1.1.1"
+
+es-abstract@^1.17.2, es-abstract@^1.18.0-next.2:
+ version "1.18.0"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0.tgz#ab80b359eecb7ede4c298000390bc5ac3ec7b5a4"
+ integrity sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==
dependencies:
- es-to-primitive "^1.2.0"
+ call-bind "^1.0.2"
+ es-to-primitive "^1.2.1"
function-bind "^1.1.1"
+ get-intrinsic "^1.1.1"
has "^1.0.3"
- is-callable "^1.1.4"
- is-regex "^1.0.4"
- object-keys "^1.0.12"
-
-es-to-primitive@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377"
- integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==
+ has-symbols "^1.0.2"
+ is-callable "^1.2.3"
+ is-negative-zero "^2.0.1"
+ is-regex "^1.1.2"
+ is-string "^1.0.5"
+ object-inspect "^1.9.0"
+ object-keys "^1.1.1"
+ object.assign "^4.1.2"
+ string.prototype.trimend "^1.0.4"
+ string.prototype.trimstart "^1.0.4"
+ unbox-primitive "^1.0.0"
+
+es-to-primitive@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
+ integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
dependencies:
is-callable "^1.1.4"
is-date-object "^1.0.1"
is-symbol "^1.0.2"
+escalade@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
+ integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
+
escape-html@~1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
@@ -1933,42 +3014,169 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
-esprima@^2.6.0:
- version "2.7.3"
- resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581"
- integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=
+eslint-config-google@^0.14.0:
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/eslint-config-google/-/eslint-config-google-0.14.0.tgz#4f5f8759ba6e11b424294a219dbfa18c508bcc1a"
+ integrity sha512-WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw==
+
+eslint-plugin-vue@^6.2.2:
+ version "6.2.2"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-6.2.2.tgz#27fecd9a3a24789b0f111ecdd540a9e56198e0fe"
+ integrity sha512-Nhc+oVAHm0uz/PkJAWscwIT4ijTrK5fqNqz9QB1D35SbbuMG1uB6Yr5AJpvPSWg+WOw7nYNswerYh0kOk64gqQ==
+ dependencies:
+ natural-compare "^1.4.0"
+ semver "^5.6.0"
+ vue-eslint-parser "^7.0.0"
+
+eslint-scope@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848"
+ integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==
+ dependencies:
+ esrecurse "^4.1.0"
+ estraverse "^4.1.1"
+
+eslint-scope@^5.0.0, eslint-scope@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
+ integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
+ dependencies:
+ esrecurse "^4.3.0"
+ estraverse "^4.1.1"
+
+eslint-utils@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27"
+ integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==
+ dependencies:
+ eslint-visitor-keys "^1.1.0"
+
+eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
+ integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
+
+eslint-visitor-keys@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8"
+ integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==
+
+eslint@^7.1.0:
+ version "7.24.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.24.0.tgz#2e44fa62d93892bfdb100521f17345ba54b8513a"
+ integrity sha512-k9gaHeHiFmGCDQ2rEfvULlSLruz6tgfA8DEn+rY9/oYPFFTlz55mM/Q/Rij1b2Y42jwZiK3lXvNTw6w6TXzcKQ==
+ dependencies:
+ "@babel/code-frame" "7.12.11"
+ "@eslint/eslintrc" "^0.4.0"
+ ajv "^6.10.0"
+ chalk "^4.0.0"
+ cross-spawn "^7.0.2"
+ debug "^4.0.1"
+ doctrine "^3.0.0"
+ enquirer "^2.3.5"
+ eslint-scope "^5.1.1"
+ eslint-utils "^2.1.0"
+ eslint-visitor-keys "^2.0.0"
+ espree "^7.3.1"
+ esquery "^1.4.0"
+ esutils "^2.0.2"
+ file-entry-cache "^6.0.1"
+ functional-red-black-tree "^1.0.1"
+ glob-parent "^5.0.0"
+ globals "^13.6.0"
+ ignore "^4.0.6"
+ import-fresh "^3.0.0"
+ imurmurhash "^0.1.4"
+ is-glob "^4.0.0"
+ js-yaml "^3.13.1"
+ json-stable-stringify-without-jsonify "^1.0.1"
+ levn "^0.4.1"
+ lodash "^4.17.21"
+ minimatch "^3.0.4"
+ natural-compare "^1.4.0"
+ optionator "^0.9.1"
+ progress "^2.0.0"
+ regexpp "^3.1.0"
+ semver "^7.2.1"
+ strip-ansi "^6.0.0"
+ strip-json-comments "^3.1.0"
+ table "^6.0.4"
+ text-table "^0.2.0"
+ v8-compile-cache "^2.0.3"
+
+espree@^6.2.1:
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a"
+ integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==
+ dependencies:
+ acorn "^7.1.1"
+ acorn-jsx "^5.2.0"
+ eslint-visitor-keys "^1.1.0"
+
+espree@^7.3.0, espree@^7.3.1:
+ version "7.3.1"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6"
+ integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==
+ dependencies:
+ acorn "^7.4.0"
+ acorn-jsx "^5.3.1"
+ eslint-visitor-keys "^1.3.0"
esprima@^4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
+esquery@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5"
+ integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==
+ dependencies:
+ estraverse "^5.1.0"
+
+esrecurse@^4.1.0, esrecurse@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
+ integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
+ dependencies:
+ estraverse "^5.2.0"
+
+estraverse@^4.1.1:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
+ integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
+
+estraverse@^5.1.0, estraverse@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880"
+ integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==
+
esutils@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
- integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
+ integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
etag@~1.8.1:
version "1.8.1"
resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
-eventemitter3@^3.0.0:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7"
- integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==
+eventemitter3@^4.0.0:
+ version "4.0.7"
+ resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"
+ integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
events@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88"
- integrity sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
+ integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
-eventsource@0.1.6:
- version "0.1.6"
- resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232"
- integrity sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=
+eventsource@^1.0.7:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.1.0.tgz#00e8ca7c92109e94b0ddf32dac677d841028cfaf"
+ integrity sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==
dependencies:
- original ">=0.0.5"
+ original "^1.0.0"
evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
version "1.0.3"
@@ -1978,6 +3186,34 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
md5.js "^1.3.4"
safe-buffer "^5.1.1"
+execa@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
+ integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==
+ dependencies:
+ cross-spawn "^6.0.0"
+ get-stream "^4.0.0"
+ is-stream "^1.1.0"
+ npm-run-path "^2.0.0"
+ p-finally "^1.0.0"
+ signal-exit "^3.0.0"
+ strip-eof "^1.0.0"
+
+execa@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a"
+ integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==
+ dependencies:
+ cross-spawn "^7.0.0"
+ get-stream "^5.0.0"
+ human-signals "^1.1.1"
+ is-stream "^2.0.0"
+ merge-stream "^2.0.0"
+ npm-run-path "^4.0.0"
+ onetime "^5.1.0"
+ signal-exit "^3.0.2"
+ strip-final-newline "^2.0.0"
+
expand-brackets@^2.1.4:
version "2.1.4"
resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
@@ -1991,7 +3227,14 @@ expand-brackets@^2.1.4:
snapdragon "^0.8.1"
to-regex "^3.0.1"
-express@^4.16.2:
+expand-tilde@^2.0.0, expand-tilde@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502"
+ integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=
+ dependencies:
+ homedir-polyfill "^1.0.1"
+
+express@^4.17.1:
version "4.17.1"
resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134"
integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==
@@ -2056,41 +3299,78 @@ extglob@^2.0.4:
snapdragon "^0.8.1"
to-regex "^3.0.1"
-fast-deep-equal@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614"
- integrity sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=
+fast-deep-equal@^3.1.1:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
+ integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
+
+fast-glob@^3.0.3:
+ version "3.2.5"
+ resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661"
+ integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==
+ dependencies:
+ "@nodelib/fs.stat" "^2.0.2"
+ "@nodelib/fs.walk" "^1.2.3"
+ glob-parent "^5.1.0"
+ merge2 "^1.3.0"
+ micromatch "^4.0.2"
+ picomatch "^2.2.1"
fast-json-stable-stringify@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
- integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I=
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
+ integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
-fastparse@^1.1.1:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9"
- integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==
+fast-levenshtein@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
+ integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
-faye-websocket@^0.10.0:
- version "0.10.0"
- resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4"
- integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=
+fastq@^1.6.0:
+ version "1.11.0"
+ resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.0.tgz#bb9fb955a07130a918eb63c1f5161cc32a5d0858"
+ integrity sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==
dependencies:
- websocket-driver ">=0.5.1"
+ reusify "^1.0.4"
-faye-websocket@~0.11.0:
+faye-websocket@^0.11.3:
version "0.11.3"
resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e"
integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==
dependencies:
websocket-driver ">=0.5.1"
-file-loader@^0.9.0:
- version "0.9.0"
- resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-0.9.0.tgz#1d2daddd424ce6d1b07cfe3f79731bed3617ab42"
- integrity sha1-HS2t3UJM5tGwfP4/eXMb7TYXq0I=
+figgy-pudding@^3.5.1:
+ version "3.5.2"
+ resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e"
+ integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==
+
+figures@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af"
+ integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==
+ dependencies:
+ escape-string-regexp "^1.0.5"
+
+file-entry-cache@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027"
+ integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==
+ dependencies:
+ flat-cache "^3.0.4"
+
+file-loader@^6.0.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d"
+ integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==
dependencies:
- loader-utils "~0.2.5"
+ loader-utils "^2.0.0"
+ schema-utils "^3.0.0"
+
+file-uri-to-path@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd"
+ integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==
fill-range@^4.0.0:
version "4.0.0"
@@ -2102,6 +3382,13 @@ fill-range@^4.0.0:
repeat-string "^1.6.1"
to-regex-range "^2.1.0"
+fill-range@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
+ integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
+ dependencies:
+ to-regex-range "^5.0.1"
+
finalhandler@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d"
@@ -2115,47 +3402,100 @@ finalhandler@~1.1.2:
statuses "~1.5.0"
unpipe "~1.0.0"
-find-cache-dir@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9"
- integrity sha1-yN765XyKUqinhPnjHFfHQumToLk=
+find-cache-dir@^2.0.0, find-cache-dir@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7"
+ integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==
dependencies:
commondir "^1.0.1"
- mkdirp "^0.5.1"
- pkg-dir "^1.0.0"
+ make-dir "^2.0.0"
+ pkg-dir "^3.0.0"
-find-up@^1.0.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
- integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=
+find-cache-dir@^3.3.1:
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880"
+ integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==
dependencies:
- path-exists "^2.0.0"
- pinkie-promise "^2.0.0"
+ commondir "^1.0.1"
+ make-dir "^3.0.2"
+ pkg-dir "^4.1.0"
-find-up@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
- integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c=
+find-up@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
+ integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
dependencies:
- locate-path "^2.0.0"
+ locate-path "^3.0.0"
-flatten@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782"
- integrity sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=
+find-up@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
+ integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
+ dependencies:
+ locate-path "^5.0.0"
+ path-exists "^4.0.0"
-follow-redirects@^1.0.0:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.7.0.tgz#489ebc198dc0e7f64167bd23b03c4c19b5784c76"
- integrity sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==
+find-up@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
+ integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
dependencies:
- debug "^3.2.6"
+ locate-path "^6.0.0"
+ path-exists "^4.0.0"
+
+find-versions@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-4.0.0.tgz#3c57e573bf97769b8cb8df16934b627915da4965"
+ integrity sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ==
+ dependencies:
+ semver-regex "^3.1.2"
+
+findup-sync@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1"
+ integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==
+ dependencies:
+ detect-file "^1.0.0"
+ is-glob "^4.0.0"
+ micromatch "^3.0.4"
+ resolve-dir "^1.0.1"
+
+flat-cache@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11"
+ integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==
+ dependencies:
+ flatted "^3.1.0"
+ rimraf "^3.0.2"
+
+flatted@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469"
+ integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==
+
+flush-write-stream@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8"
+ integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==
+ dependencies:
+ inherits "^2.0.3"
+ readable-stream "^2.3.6"
+
+follow-redirects@^1.0.0:
+ version "1.13.3"
+ resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.3.tgz#e5598ad50174c1bc4e872301e82ac2cd97f90267"
+ integrity sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA==
for-in@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
+format-thousands@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/format-thousands/-/format-thousands-1.1.1.tgz#7975bee30338d9006390da5831db0b41c323fbfa"
+ integrity sha1-eXW+4wM42QBjkNpYMdsLQcMj+/o=
+
forwarded@~0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
@@ -2173,12 +3513,48 @@ fresh@0.5.2:
resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
-fs-minipass@^1.2.5:
- version "1.2.6"
- resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.6.tgz#2c5cc30ded81282bfe8a0d7c7c1853ddeb102c07"
- integrity sha512-crhvyXcMejjv3Z5d2Fa9sf5xLYVCF5O1c71QxbVnbLsmYMBEvDAftewesN/HhY03YRoA7zOMxjNGrF5svGaaeQ==
+friendly-errors-webpack-plugin@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.0.tgz#efc86cbb816224565861a1be7a9d84d0aafea136"
+ integrity sha512-K27M3VK30wVoOarP651zDmb93R9zF28usW4ocaK3mfQeIEI5BPht/EzZs5E8QLLwbLRJQMwscAjDxYPb1FuNiw==
+ dependencies:
+ chalk "^1.1.3"
+ error-stack-parser "^2.0.0"
+ string-width "^2.0.0"
+
+from2@^2.1.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af"
+ integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=
+ dependencies:
+ inherits "^2.0.1"
+ readable-stream "^2.0.0"
+
+fs-extra@^8.1.0:
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0"
+ integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==
+ dependencies:
+ graceful-fs "^4.2.0"
+ jsonfile "^4.0.0"
+ universalify "^0.1.0"
+
+fs-minipass@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb"
+ integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==
dependencies:
- minipass "^2.2.1"
+ minipass "^3.0.0"
+
+fs-write-stream-atomic@^1.0.8:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9"
+ integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=
+ dependencies:
+ graceful-fs "^4.1.2"
+ iferr "^0.1.5"
+ imurmurhash "^0.1.4"
+ readable-stream "1 || 2"
fs.realpath@^1.0.0:
version "1.0.0"
@@ -2186,47 +3562,76 @@ fs.realpath@^1.0.0:
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
fsevents@^1.2.7:
- version "1.2.9"
- resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f"
- integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==
+ version "1.2.13"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38"
+ integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==
dependencies:
+ bindings "^1.5.0"
nan "^2.12.1"
- node-pre-gyp "^0.12.0"
+
+fsevents@~2.3.1:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
+ integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
function-bind@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
-gauge@~2.7.3:
- version "2.7.4"
- resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
- integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=
+functional-red-black-tree@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
+ integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
+
+gensync@^1.0.0-beta.2:
+ version "1.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
+ integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
+
+get-caller-file@^2.0.1:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
+ integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
+
+get-intrinsic@^1.0.2, get-intrinsic@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6"
+ integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==
dependencies:
- aproba "^1.0.3"
- console-control-strings "^1.0.0"
- has-unicode "^2.0.0"
- object-assign "^4.1.0"
- signal-exit "^3.0.0"
- string-width "^1.0.1"
- strip-ansi "^3.0.1"
- wide-align "^1.1.0"
+ function-bind "^1.1.1"
+ has "^1.0.3"
+ has-symbols "^1.0.1"
-get-caller-file@^1.0.1:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
- integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==
+get-own-enumerable-property-symbols@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664"
+ integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==
-get-stdin@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
- integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=
+get-stream@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
+ integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
+ dependencies:
+ pump "^3.0.0"
+
+get-stream@^5.0.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3"
+ integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
+ dependencies:
+ pump "^3.0.0"
get-value@^2.0.3, get-value@^2.0.6:
version "2.0.6"
resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
+github-buttons@^2.8.0:
+ version "2.15.0"
+ resolved "https://registry.yarnpkg.com/github-buttons/-/github-buttons-2.15.0.tgz#5fda66a3e6445825c9abbfb1eef4729542ea733d"
+ integrity sha512-TqnLqrwYkYbbFmWcRa2LPyh6IRp0krnGkNrY/5LetxVnPYOHQzxmOZC25GtsHN7ay9Q5ZWY3zLWCKti+xz7w3Q==
+
glob-parent@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
@@ -2235,10 +3640,17 @@ glob-parent@^3.1.0:
is-glob "^3.1.0"
path-dirname "^1.0.0"
-glob@^7.0.3, glob@^7.1.3:
- version "7.1.4"
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255"
- integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==
+glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
+ integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
+ dependencies:
+ is-glob "^4.0.1"
+
+glob@^7.0.3, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
+ version "7.1.6"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
+ integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
@@ -2247,10 +3659,74 @@ glob@^7.0.3, glob@^7.1.3:
once "^1.3.0"
path-is-absolute "^1.0.0"
-globals@^9.18.0:
- version "9.18.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a"
- integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==
+global-modules@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea"
+ integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==
+ dependencies:
+ global-prefix "^1.0.1"
+ is-windows "^1.0.1"
+ resolve-dir "^1.0.0"
+
+global-modules@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780"
+ integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==
+ dependencies:
+ global-prefix "^3.0.0"
+
+global-prefix@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe"
+ integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=
+ dependencies:
+ expand-tilde "^2.0.2"
+ homedir-polyfill "^1.0.1"
+ ini "^1.3.4"
+ is-windows "^1.0.1"
+ which "^1.2.14"
+
+global-prefix@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97"
+ integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==
+ dependencies:
+ ini "^1.3.5"
+ kind-of "^6.0.2"
+ which "^1.3.1"
+
+globals@^11.1.0:
+ version "11.12.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
+ integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
+
+globals@^12.1.0:
+ version "12.4.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8"
+ integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==
+ dependencies:
+ type-fest "^0.8.1"
+
+globals@^13.6.0:
+ version "13.8.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-13.8.0.tgz#3e20f504810ce87a8d72e55aecf8435b50f4c1b3"
+ integrity sha512-rHtdA6+PDBIjeEvA91rpqzEvk/k3/i7EeNQiryiWuJH0Hw9cpyJMAt2jtbAwUaRdhD+573X4vWw6IcjKPasi9Q==
+ dependencies:
+ type-fest "^0.20.2"
+
+globby@^10.0.1:
+ version "10.0.2"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543"
+ integrity sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==
+ dependencies:
+ "@types/glob" "^7.1.1"
+ array-union "^2.1.0"
+ dir-glob "^3.0.1"
+ fast-glob "^3.0.3"
+ glob "^7.1.3"
+ ignore "^5.1.1"
+ merge2 "^1.2.3"
+ slash "^3.0.0"
globby@^6.1.0:
version "6.1.0"
@@ -2263,15 +3739,15 @@ globby@^6.1.0:
pify "^2.0.0"
pinkie-promise "^2.0.0"
-graceful-fs@^4.1.11, graceful-fs@^4.1.2:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.0.tgz#8d8fdc73977cb04104721cb53666c1ca64cd328b"
- integrity sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==
+graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0:
+ version "4.2.6"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee"
+ integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==
handle-thing@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754"
- integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e"
+ integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==
has-ansi@^2.0.0:
version "2.0.0"
@@ -2280,25 +3756,25 @@ has-ansi@^2.0.0:
dependencies:
ansi-regex "^2.0.0"
-has-flag@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
- integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=
+has-bigints@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113"
+ integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==
has-flag@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
-has-symbols@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44"
- integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=
+has-flag@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
+ integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
-has-unicode@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
- integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
+has-symbols@^1.0.1, has-symbols@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423"
+ integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==
has-value@^0.3.1:
version "0.3.1"
@@ -2331,7 +3807,7 @@ has-values@^1.0.0:
is-number "^3.0.0"
kind-of "^4.0.0"
-has@^1.0.1, has@^1.0.3:
+has@^1.0.0, has@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
@@ -2339,12 +3815,13 @@ has@^1.0.1, has@^1.0.3:
function-bind "^1.1.1"
hash-base@^3.0.0:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918"
- integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33"
+ integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==
dependencies:
- inherits "^2.0.1"
- safe-buffer "^5.0.1"
+ inherits "^2.0.4"
+ readable-stream "^3.6.0"
+ safe-buffer "^5.2.0"
hash-sum@^1.0.2:
version "1.0.2"
@@ -2364,7 +3841,12 @@ he@1.2.x, he@^1.1.0:
resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
-hmac-drbg@^1.0.0:
+hex-color-regex@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e"
+ integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==
+
+hmac-drbg@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=
@@ -2373,18 +3855,12 @@ hmac-drbg@^1.0.0:
minimalistic-assert "^1.0.0"
minimalistic-crypto-utils "^1.0.1"
-home-or-tmp@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8"
- integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg=
+homedir-polyfill@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8"
+ integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==
dependencies:
- os-homedir "^1.0.0"
- os-tmpdir "^1.0.1"
-
-hosted-git-info@^2.1.4:
- version "2.7.1"
- resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047"
- integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==
+ parse-passwd "^1.0.0"
hpack.js@^2.1.6:
version "2.1.6"
@@ -2396,15 +3872,20 @@ hpack.js@^2.1.6:
readable-stream "^2.0.1"
wbuf "^1.1.0"
-html-comment-regex@^1.1.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7"
- integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==
+hsl-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e"
+ integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=
-html-entities@^1.2.0:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f"
- integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=
+hsla-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38"
+ integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg=
+
+html-entities@^1.3.1:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.4.0.tgz#cfbd1b01d2afaf9adca1b10ae7dffab98c71d2dc"
+ integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==
html-minifier@^3.2.3:
version "3.5.21"
@@ -2419,28 +3900,29 @@ html-minifier@^3.2.3:
relateurl "0.2.x"
uglify-js "3.4.x"
-html-webpack-inline-source-plugin@^0.0.9:
- version "0.0.9"
- resolved "https://registry.yarnpkg.com/html-webpack-inline-source-plugin/-/html-webpack-inline-source-plugin-0.0.9.tgz#e52dd3cf1164ac76ceaf39ba206f92e3597d054d"
- integrity sha1-5S3TzxFkrHbOrzm6IG+S41l9BU0=
+html-webpack-inline-source-plugin@^0.0.10:
+ version "0.0.10"
+ resolved "https://registry.yarnpkg.com/html-webpack-inline-source-plugin/-/html-webpack-inline-source-plugin-0.0.10.tgz#89bd5f761e4f16902aa76a44476eb52831c9f7f0"
+ integrity sha512-0ZNU57u7283vrXSF5a4VDnVOMWiSwypKIp1z/XfXWoVHLA1r3Xmyxx5+Lz+mnthz/UvxL1OAf41w5UIF68Jngw==
dependencies:
escape-string-regexp "^1.0.5"
slash "^1.0.0"
source-map-url "^0.4.0"
-html-webpack-plugin@^2.30.1:
- version "2.30.1"
- resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-2.30.1.tgz#7f9c421b7ea91ec460f56527d78df484ee7537d5"
- integrity sha1-f5xCG36pHsRg9WUn1430hO51N9U=
+html-webpack-plugin@3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b"
+ integrity sha1-sBq71yOsqqeze2r0SS69oD2d03s=
dependencies:
- bluebird "^3.4.7"
html-minifier "^3.2.3"
loader-utils "^0.2.16"
lodash "^4.17.3"
pretty-error "^2.0.2"
+ tapable "^1.0.0"
toposort "^1.0.0"
+ util.promisify "1.0.0"
-htmlparser2@^3.3.0:
+htmlparser2@^3.10.1:
version "3.10.1"
resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f"
integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==
@@ -2489,12 +3971,12 @@ http-errors@~1.7.2:
statuses ">= 1.5.0 < 2"
toidentifier "1.0.0"
-"http-parser-js@>=0.4.0 <0.4.11":
- version "0.4.10"
- resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4"
- integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=
+http-parser-js@>=0.5.1:
+ version "0.5.3"
+ resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9"
+ integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==
-http-proxy-middleware@^0.19.1:
+http-proxy-middleware@0.19.1:
version "0.19.1"
resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a"
integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==
@@ -2505,11 +3987,11 @@ http-proxy-middleware@^0.19.1:
micromatch "^3.1.10"
http-proxy@^1.17.0:
- version "1.17.0"
- resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a"
- integrity sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==
+ version "1.18.1"
+ resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549"
+ integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==
dependencies:
- eventemitter3 "^3.0.0"
+ eventemitter3 "^4.0.0"
follow-redirects "^1.0.0"
requires-port "^1.0.0"
@@ -2518,50 +4000,117 @@ https-browserify@^1.0.0:
resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=
-iconv-lite@0.4.24, iconv-lite@^0.4.4:
+human-signals@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3"
+ integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==
+
+husky@^4.2.5:
+ version "4.3.8"
+ resolved "https://registry.yarnpkg.com/husky/-/husky-4.3.8.tgz#31144060be963fd6850e5cc8f019a1dfe194296d"
+ integrity sha512-LCqqsB0PzJQ/AlCgfrfzRe3e3+NvmefAdKQhRYpxS4u6clblBoDdzzvHi8fmxKRzvMxPY/1WZWzomPZww0Anow==
+ dependencies:
+ chalk "^4.0.0"
+ ci-info "^2.0.0"
+ compare-versions "^3.6.0"
+ cosmiconfig "^7.0.0"
+ find-versions "^4.0.0"
+ opencollective-postinstall "^2.0.2"
+ pkg-dir "^5.0.0"
+ please-upgrade-node "^3.2.0"
+ slash "^3.0.0"
+ which-pm-runs "^1.0.0"
+
+iconv-lite@0.4.24:
version "0.4.24"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
dependencies:
safer-buffer ">= 2.1.2 < 3"
-icss-replace-symbols@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded"
- integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=
+iconv-lite@^0.6.2:
+ version "0.6.2"
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.2.tgz#ce13d1875b0c3a674bd6a04b7f76b01b1b6ded01"
+ integrity sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3.0.0"
+
+icss-utils@^4.0.0, icss-utils@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467"
+ integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==
+ dependencies:
+ postcss "^7.0.14"
ieee754@^1.1.4:
- version "1.1.13"
- resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
- integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
+ integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
-ignore-walk@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8"
- integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==
+iferr@^0.1.5:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501"
+ integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE=
+
+ignore@^4.0.6:
+ version "4.0.6"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
+ integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
+
+ignore@^5.1.1:
+ version "5.1.8"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57"
+ integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==
+
+immediate@~3.0.5:
+ version "3.0.6"
+ resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b"
+ integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=
+
+import-fresh@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546"
+ integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY=
dependencies:
- minimatch "^3.0.4"
+ caller-path "^2.0.0"
+ resolve-from "^3.0.0"
-import-local@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc"
- integrity sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==
+import-fresh@^3.0.0, import-fresh@^3.2.1:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
+ integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
dependencies:
- pkg-dir "^2.0.0"
- resolve-cwd "^2.0.0"
+ parent-module "^1.0.0"
+ resolve-from "^4.0.0"
-indent-string@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80"
- integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=
+import-local@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d"
+ integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==
dependencies:
- repeating "^2.0.0"
+ pkg-dir "^3.0.0"
+ resolve-cwd "^2.0.0"
+
+imurmurhash@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
+ integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
+
+indent-string@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251"
+ integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==
indexes-of@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607"
integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc=
+infer-owner@^1.0.3, infer-owner@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467"
+ integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==
+
inflight@^1.0.4:
version "1.0.6"
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
@@ -2570,7 +4119,7 @@ inflight@^1.0.4:
once "^1.3.0"
wrappy "1"
-inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3:
+inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3:
version "2.0.4"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@@ -2585,50 +4134,49 @@ inherits@2.0.3:
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
-ini@^1.3.4, ini@~1.3.0:
- version "1.3.5"
- resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
- integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==
+ini@^1.3.4, ini@^1.3.5:
+ version "1.3.8"
+ resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
+ integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
-internal-ip@1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-1.2.0.tgz#ae9fbf93b984878785d50a8de1b356956058cf5c"
- integrity sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=
+internal-ip@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907"
+ integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==
dependencies:
- meow "^3.3.0"
-
-interpret@^1.0.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296"
- integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==
+ default-gateway "^4.2.0"
+ ipaddr.js "^1.9.0"
-invariant@^2.2.2:
- version "2.2.4"
- resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
- integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==
- dependencies:
- loose-envify "^1.0.0"
+interpret@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e"
+ integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==
-invert-kv@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
- integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY=
+ip-regex@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9"
+ integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=
ip@^1.1.0, ip@^1.1.5:
version "1.1.5"
resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=
-ipaddr.js@1.9.0:
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65"
- integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==
+ipaddr.js@1.9.1, ipaddr.js@^1.9.0:
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
+ integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
is-absolute-url@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6"
integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=
+is-absolute-url@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698"
+ integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==
+
is-accessor-descriptor@^0.1.6:
version "0.1.6"
resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
@@ -2643,11 +4191,28 @@ is-accessor-descriptor@^1.0.0:
dependencies:
kind-of "^6.0.0"
+is-arguments@^1.0.4:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9"
+ integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==
+ dependencies:
+ call-bind "^1.0.0"
+
is-arrayish@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
+is-arrayish@^0.3.1:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
+ integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==
+
+is-bigint@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.1.tgz#6923051dfcbc764278540b9ce0e6b3213aa5ebc2"
+ integrity sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==
+
is-binary-path@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
@@ -2655,15 +4220,48 @@ is-binary-path@^1.0.0:
dependencies:
binary-extensions "^1.0.0"
+is-binary-path@~2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
+ integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
+ dependencies:
+ binary-extensions "^2.0.0"
+
+is-boolean-object@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.0.tgz#e2aaad3a3a8fca34c28f6eee135b156ed2587ff0"
+ integrity sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==
+ dependencies:
+ call-bind "^1.0.0"
+
is-buffer@^1.1.5:
version "1.1.6"
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
-is-callable@^1.1.4:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75"
- integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==
+is-callable@^1.1.4, is-callable@^1.2.3:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e"
+ integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==
+
+is-color-stop@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345"
+ integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=
+ dependencies:
+ css-color-names "^0.0.4"
+ hex-color-regex "^1.1.0"
+ hsl-regex "^1.0.0"
+ hsla-regex "^1.0.0"
+ rgb-regex "^1.0.1"
+ rgba-regex "^1.0.0"
+
+is-core-module@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a"
+ integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==
+ dependencies:
+ has "^1.0.3"
is-data-descriptor@^0.1.4:
version "0.1.4"
@@ -2680,9 +4278,9 @@ is-data-descriptor@^1.0.0:
kind-of "^6.0.0"
is-date-object@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
- integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e"
+ integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==
is-descriptor@^0.1.0:
version "0.1.6"
@@ -2724,25 +4322,16 @@ is-extglob@^2.1.0, is-extglob@^2.1.1:
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
-is-finite@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
- integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=
- dependencies:
- number-is-nan "^1.0.0"
-
-is-fullwidth-code-point@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
- integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
- dependencies:
- number-is-nan "^1.0.0"
-
is-fullwidth-code-point@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
+is-fullwidth-code-point@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
+ integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
+
is-glob@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
@@ -2750,13 +4339,23 @@ is-glob@^3.1.0:
dependencies:
is-extglob "^2.1.0"
-is-glob@^4.0.0:
+is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
dependencies:
is-extglob "^2.1.1"
+is-negative-zero@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24"
+ integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==
+
+is-number-object@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197"
+ integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==
+
is-number@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
@@ -2764,24 +4363,39 @@ is-number@^3.0.0:
dependencies:
kind-of "^3.0.2"
-is-path-cwd@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d"
- integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=
+is-number@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
+ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
-is-path-in-cwd@^1.0.0:
+is-obj@^1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52"
- integrity sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==
+ resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
+ integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8=
+
+is-obj@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982"
+ integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==
+
+is-path-cwd@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb"
+ integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==
+
+is-path-in-cwd@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb"
+ integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==
dependencies:
- is-path-inside "^1.0.0"
+ is-path-inside "^2.1.0"
-is-path-inside@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036"
- integrity sha1-jvW33lBDej/cprToZe96pVy0gDY=
+is-path-inside@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2"
+ integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==
dependencies:
- path-is-inside "^1.0.1"
+ path-is-inside "^1.0.2"
is-plain-obj@^1.0.0:
version "1.1.0"
@@ -2795,33 +4409,57 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4:
dependencies:
isobject "^3.0.1"
-is-regex@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
- integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=
+is-regex@^1.0.4, is-regex@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251"
+ integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==
dependencies:
- has "^1.0.1"
+ call-bind "^1.0.2"
+ has-symbols "^1.0.1"
-is-svg@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9"
- integrity sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=
- dependencies:
- html-comment-regex "^1.1.0"
+is-regexp@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069"
+ integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk=
-is-symbol@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38"
- integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==
+is-resolvable@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88"
+ integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==
+
+is-stream@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
+ integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
+
+is-stream@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3"
+ integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==
+
+is-string@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6"
+ integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==
+
+is-symbol@^1.0.2, is-symbol@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937"
+ integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==
dependencies:
- has-symbols "^1.0.0"
+ has-symbols "^1.0.1"
-is-utf8@^0.2.0:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
- integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
+is-unicode-supported@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7"
+ integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==
+
+is-whitespace@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/is-whitespace/-/is-whitespace-0.3.0.tgz#1639ecb1be036aec69a54cbb401cfbed7114ab7f"
+ integrity sha1-Fjnssb4DauxppUy7QBz77XEUq38=
-is-windows@^1.0.0, is-windows@^1.0.2:
+is-windows@^1.0.1, is-windows@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
@@ -2853,81 +4491,84 @@ isobject@^3.0.0, isobject@^3.0.1:
resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
-js-base64@^2.1.9:
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.1.tgz#1efa39ef2c5f7980bb1784ade4a8af2de3291121"
- integrity sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==
+jasmine-core@~3.7.0:
+ version "3.7.1"
+ resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-3.7.1.tgz#0401327f6249eac993d47bbfa18d4e8efacfb561"
+ integrity sha512-DH3oYDS/AUvvr22+xUBW62m1Xoy7tUlY1tsxKEJvl5JeJ7q8zd1K5bUwiOxdH+erj6l2vAMM3hV25Xs9/WrmuQ==
-js-beautify@^1.6.3:
- version "1.10.1"
- resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.10.1.tgz#bdfe738ddbcaa12e4fced5af2d7cfad59f60ac0a"
- integrity sha512-4y8SHOIRC+/YQ2gs3zJEKBUraQerq49FJYyXRpdzUGYQzCq8q9xtIh0YXial1S5KmonVui4aiUb6XaGyjE51XA==
+jasmine@^3.5.0:
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-3.7.0.tgz#d36638c0c815e6ad5666676e386d79e2ccb70835"
+ integrity sha512-wlzGQ+cIFzMEsI+wDqmOwvnjTvolLFwlcpYLCqSPPH0prOQaW3P+IzMhHYn934l1imNvw07oCyX+vGUv3wmtSQ==
+ dependencies:
+ glob "^7.1.6"
+ jasmine-core "~3.7.0"
+
+js-beautify@^1.6.12:
+ version "1.13.11"
+ resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.13.11.tgz#3fc59d74d4fcb03268a559220da26f5d8a2d5246"
+ integrity sha512-+3CW1fQqkV7aXIvprevNYfSrKrASQf02IstAZCVSNh+/IS5ciaOtE7erfjyowdMYZZmP2A7SMFkcJ28qCl84+A==
dependencies:
config-chain "^1.1.12"
editorconfig "^0.15.3"
glob "^7.1.3"
- mkdirp "~0.5.1"
- nopt "~4.0.1"
+ mkdirp "^1.0.4"
+ nopt "^5.0.0"
-"js-tokens@^3.0.0 || ^4.0.0":
+"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
-js-tokens@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
- integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls=
-
-js-yaml@^3.4.3:
- version "3.13.1"
- resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
- integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
+js-yaml@^3.13.1:
+ version "3.14.1"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
+ integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
dependencies:
argparse "^1.0.7"
esprima "^4.0.0"
-js-yaml@~3.7.0:
- version "3.7.0"
- resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80"
- integrity sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=
- dependencies:
- argparse "^1.0.7"
- esprima "^2.6.0"
-
-jsesc@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
- integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s=
+jsesc@^2.5.1:
+ version "2.5.2"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
+ integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
jsesc@~0.5.0:
version "0.5.0"
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
-json-loader@^0.5.4:
- version "0.5.7"
- resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d"
- integrity sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==
+json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
+ integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
-json-schema-traverse@^0.3.0:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340"
- integrity sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=
+json-parse-even-better-errors@^2.3.0:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
+ integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
+
+json-schema-traverse@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
+ integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
+
+json-schema-traverse@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
+ integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
-json-stable-stringify@^1.0.1:
+json-stable-stringify-without-jsonify@^1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
- integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=
- dependencies:
- jsonify "~0.0.0"
+ resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
+ integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
-json3@^3.3.2:
+json3@^3.3.3:
version "3.3.3"
resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81"
integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==
-json5@^0.5.0, json5@^0.5.1:
+json5@^0.5.0:
version "0.5.1"
resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=
@@ -2939,12 +4580,31 @@ json5@^1.0.1:
dependencies:
minimist "^1.2.0"
-jsonify@~0.0.0:
- version "0.0.0"
- resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
- integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=
+json5@^2.1.2:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3"
+ integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==
+ dependencies:
+ minimist "^1.2.5"
-killable@^1.0.0:
+jsonfile@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
+ integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=
+ optionalDependencies:
+ graceful-fs "^4.1.6"
+
+jszip@^3.5.0:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.6.0.tgz#839b72812e3f97819cc13ac4134ffced95dd6af9"
+ integrity sha512-jgnQoG9LKnWO3mnVNBnfhkh0QknICd1FGSrXcgrl67zioyJ4wgx25o9ZqwNtrROSflGBCGYnJfjrIyRIby1OoQ==
+ dependencies:
+ lie "~3.3.0"
+ pako "~1.0.2"
+ readable-stream "~2.3.6"
+ set-immediate-shim "~1.0.1"
+
+killable@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892"
integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==
@@ -2969,39 +4629,90 @@ kind-of@^5.0.0:
integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
kind-of@^6.0.0, kind-of@^6.0.2:
- version "6.0.2"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
- integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==
+ version "6.0.3"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
+ integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
-lazy-cache@^1.0.3:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
- integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4=
+kotlin-compiler@^1.3.61:
+ version "1.4.32"
+ resolved "https://registry.yarnpkg.com/kotlin-compiler/-/kotlin-compiler-1.4.32.tgz#1ffb9b8bd34344487e0751cfc008cc779eb98544"
+ integrity sha512-NyPopJ5K7ZYOViXCdFIHQE7R4V2XsX3f57N1OzEvUK78J0gev6sjUTDbYrfJ0ihryXcFl6xb5WvCui3BeJa6kg==
-lcid@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
- integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=
+kotlin@^1.3.72:
+ version "1.4.32"
+ resolved "https://registry.yarnpkg.com/kotlin/-/kotlin-1.4.32.tgz#b7a695b53e2d29f2ac397bf842be113fa8e3d4c4"
+ integrity sha512-TZcHTE/DlfBs+plrX5iw/df/ahb7iVHGOjysykl8Wb3VqxYXUvFCvsrIVVkY48a//4h5p7S+rS0VE32DSOtI3Q==
+
+last-call-webpack-plugin@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555"
+ integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==
dependencies:
- invert-kv "^1.0.0"
+ lodash "^4.17.5"
+ webpack-sources "^1.1.0"
-load-json-file@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
- integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=
+levn@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
+ integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
dependencies:
- graceful-fs "^4.1.2"
- parse-json "^2.2.0"
- pify "^2.0.0"
- pinkie-promise "^2.0.0"
- strip-bom "^2.0.0"
+ prelude-ls "^1.2.1"
+ type-check "~0.4.0"
+
+lie@~3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a"
+ integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==
+ dependencies:
+ immediate "~3.0.5"
-loader-runner@^2.3.0:
+lines-and-columns@^1.1.6:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00"
+ integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=
+
+lint-staged@>=10:
+ version "10.5.4"
+ resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.5.4.tgz#cd153b5f0987d2371fc1d2847a409a2fe705b665"
+ integrity sha512-EechC3DdFic/TdOPgj/RB3FicqE6932LTHCUm0Y2fsD9KGlLB+RwJl2q1IYBIvEsKzDOgn0D4gll+YxG5RsrKg==
+ dependencies:
+ chalk "^4.1.0"
+ cli-truncate "^2.1.0"
+ commander "^6.2.0"
+ cosmiconfig "^7.0.0"
+ debug "^4.2.0"
+ dedent "^0.7.0"
+ enquirer "^2.3.6"
+ execa "^4.1.0"
+ listr2 "^3.2.2"
+ log-symbols "^4.0.0"
+ micromatch "^4.0.2"
+ normalize-path "^3.0.0"
+ please-upgrade-node "^3.2.0"
+ string-argv "0.3.1"
+ stringify-object "^3.3.0"
+
+listr2@^3.2.2:
+ version "3.6.2"
+ resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.6.2.tgz#7260159f9108523eaa430d4a674db65b6c2d08cc"
+ integrity sha512-B2vlu7Zx/2OAMVUovJ7Tv1kQ2v2oXd0nZKzkSAcRCej269d8gkS/gupDEdNl23KQ3ZjVD8hQmifrrBFbx8F9LA==
+ dependencies:
+ chalk "^4.1.0"
+ cli-truncate "^2.1.0"
+ figures "^3.2.0"
+ indent-string "^4.0.0"
+ log-update "^4.0.0"
+ p-map "^4.0.0"
+ rxjs "^6.6.7"
+ through "^2.3.8"
+ wrap-ansi "^7.0.0"
+
+loader-runner@^2.4.0:
version "2.4.0"
resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357"
integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==
-loader-utils@^0.2.16, loader-utils@~0.2.2, loader-utils@~0.2.5:
+loader-utils@^0.2.16:
version "0.2.17"
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348"
integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=
@@ -3011,108 +4722,127 @@ loader-utils@^0.2.16, loader-utils@~0.2.2, loader-utils@~0.2.5:
json5 "^0.5.0"
object-assign "^4.0.1"
-loader-utils@^1.0.2, loader-utils@^1.1.0:
- version "1.2.3"
- resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7"
- integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==
+loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613"
+ integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==
dependencies:
big.js "^5.2.2"
- emojis-list "^2.0.0"
+ emojis-list "^3.0.0"
json5 "^1.0.1"
-locate-path@^2.0.0:
+loader-utils@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
- integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0"
+ integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==
dependencies:
- p-locate "^2.0.0"
- path-exists "^3.0.0"
+ big.js "^5.2.2"
+ emojis-list "^3.0.0"
+ json5 "^2.1.2"
-lodash._createcompounder@^3.0.0:
+locate-path@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/lodash._createcompounder/-/lodash._createcompounder-3.0.0.tgz#5dd2cb55372d6e70e0e2392fb2304d6631091075"
- integrity sha1-XdLLVTctbnDg4jkvsjBNZjEJEHU=
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
+ integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
dependencies:
- lodash.deburr "^3.0.0"
- lodash.words "^3.0.0"
-
-lodash._root@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692"
- integrity sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=
+ p-locate "^3.0.0"
+ path-exists "^3.0.0"
-lodash.camelcase@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-3.0.1.tgz#932c8b87f8a4377897c67197533282f97aeac298"
- integrity sha1-kyyLh/ikN3iXxnGXUzKC+Xrqwpg=
+locate-path@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
+ integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
dependencies:
- lodash._createcompounder "^3.0.0"
+ p-locate "^4.1.0"
-lodash.deburr@^3.0.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/lodash.deburr/-/lodash.deburr-3.2.0.tgz#6da8f54334a366a7cf4c4c76ef8d80aa1b365ed5"
- integrity sha1-baj1QzSjZqfPTEx2742Aqhs2XtU=
+locate-path@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
+ integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
dependencies:
- lodash._root "^3.0.0"
+ p-locate "^5.0.0"
+
+lodash.clonedeep@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
+ integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=
+
+lodash.debounce@^4.0.8:
+ version "4.0.8"
+ resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
+ integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168=
+
+lodash.flatten@^4.4.0:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f"
+ integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=
lodash.memoize@^4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=
+lodash.truncate@^4.4.2:
+ version "4.4.2"
+ resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193"
+ integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=
+
lodash.uniq@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
-lodash.words@^3.0.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/lodash.words/-/lodash.words-3.2.0.tgz#4e2a8649bc08745b17c695b1a3ce8fee596623b3"
- integrity sha1-TiqGSbwIdFsXxpWxo86P7llmI7M=
+lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.3, lodash@^4.17.5:
+ version "4.17.21"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
+ integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
+
+log-symbols@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503"
+ integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==
+ dependencies:
+ chalk "^4.1.0"
+ is-unicode-supported "^0.1.0"
+
+log-update@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1"
+ integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==
dependencies:
- lodash._root "^3.0.0"
+ ansi-escapes "^4.3.0"
+ cli-cursor "^3.1.0"
+ slice-ansi "^4.0.0"
+ wrap-ansi "^6.2.0"
-lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.3, lodash@^4.17.4:
- version "4.17.14"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.14.tgz#9ce487ae66c96254fe20b599f21b6816028078ba"
- integrity sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==
+loglevel@^1.6.8:
+ version "1.7.1"
+ resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197"
+ integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==
-loglevel@^1.4.1:
- version "1.6.3"
- resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.3.tgz#77f2eb64be55a404c9fd04ad16d57c1d6d6b1280"
- integrity sha512-LoEDv5pgpvWgPF4kNYuIp0qqSJVWak/dML0RY74xlzMZiT9w77teNAwKYKWBTYjlokMirg+o3jBwp+vlLrcfAA==
+loglevelnext@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/loglevelnext/-/loglevelnext-3.0.1.tgz#e3e4659c4061c09264f6812c33586dc55a009a04"
+ integrity sha512-JpjaJhIN1reaSb26SIxDGtE0uc67gPl19OMVHrr+Ggt6b/Vy60jmCtKgQBrygAH0bhRA2nkxgDvM+8QvR8r0YA==
long@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28"
integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==
-longest@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
- integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=
-
-loose-envify@^1.0.0:
+loose-envify@^1.2.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
dependencies:
js-tokens "^3.0.0 || ^4.0.0"
-loud-rejection@^1.0.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f"
- integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=
- dependencies:
- currently-unhandled "^0.4.1"
- signal-exit "^3.0.0"
-
lower-case@^1.1.1:
version "1.1.4"
resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac"
integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw=
-lru-cache@^4.0.1, lru-cache@^4.1.5:
+lru-cache@^4.1.2, lru-cache@^4.1.5:
version "4.1.5"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
@@ -3120,16 +4850,45 @@ lru-cache@^4.0.1, lru-cache@^4.1.5:
pseudomap "^1.0.2"
yallist "^2.1.2"
+lru-cache@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
+ integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
+ dependencies:
+ yallist "^3.0.2"
+
+lru-cache@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
+ integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
+ dependencies:
+ yallist "^4.0.0"
+
+lz-string@^1.4.4:
+ version "1.4.4"
+ resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26"
+ integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=
+
+make-dir@^2.0.0, make-dir@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
+ integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
+ dependencies:
+ pify "^4.0.1"
+ semver "^5.6.0"
+
+make-dir@^3.0.2, make-dir@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
+ integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
+ dependencies:
+ semver "^6.0.0"
+
map-cache@^0.2.2:
version "0.2.2"
resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=
-map-obj@^1.0.0, map-obj@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
- integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=
-
map-visit@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
@@ -3137,11 +4896,6 @@ map-visit@^1.0.0:
dependencies:
object-visit "^1.0.0"
-math-expression-evaluator@^1.2.14:
- version "1.2.17"
- resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac"
- integrity sha1-3oGf282E3M2PrlnGrreWFbnSZqw=
-
md5.js@^1.3.4:
version "1.3.5"
resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f"
@@ -3151,12 +4905,22 @@ md5.js@^1.3.4:
inherits "^2.0.1"
safe-buffer "^5.1.2"
+mdn-data@2.0.14:
+ version "2.0.14"
+ resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50"
+ integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==
+
+mdn-data@2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b"
+ integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==
+
media-typer@0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
-memory-fs@^0.4.0, memory-fs@~0.4.1:
+memory-fs@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552"
integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=
@@ -3164,33 +4928,42 @@ memory-fs@^0.4.0, memory-fs@~0.4.1:
errno "^0.1.3"
readable-stream "^2.0.1"
-meow@^3.3.0:
- version "3.7.0"
- resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
- integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=
- dependencies:
- camelcase-keys "^2.0.0"
- decamelize "^1.1.2"
- loud-rejection "^1.0.0"
- map-obj "^1.0.1"
- minimist "^1.1.3"
- normalize-package-data "^2.3.4"
- object-assign "^4.0.1"
- read-pkg-up "^1.0.1"
- redent "^1.0.0"
- trim-newlines "^1.0.0"
+memory-fs@^0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c"
+ integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==
+ dependencies:
+ errno "^0.1.3"
+ readable-stream "^2.0.1"
merge-descriptors@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=
+merge-source-map@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646"
+ integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==
+ dependencies:
+ source-map "^0.6.1"
+
+merge-stream@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
+ integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
+
+merge2@^1.2.3, merge2@^1.3.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
+ integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
+
methods@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
-micromatch@^3.1.10, micromatch@^3.1.4:
+micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4:
version "3.1.10"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
@@ -3209,6 +4982,14 @@ micromatch@^3.1.10, micromatch@^3.1.4:
snapdragon "^0.8.1"
to-regex "^3.0.2"
+micromatch@^4.0.0, micromatch@^4.0.2:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9"
+ integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==
+ dependencies:
+ braces "^3.0.1"
+ picomatch "^2.2.3"
+
miller-rabin@^4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d"
@@ -3217,29 +4998,49 @@ miller-rabin@^4.0.0:
bn.js "^4.0.0"
brorand "^1.0.1"
-mime-db@1.40.0, "mime-db@>= 1.40.0 < 2":
- version "1.40.0"
- resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32"
- integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==
+mime-db@1.47.0, "mime-db@>= 1.43.0 < 2":
+ version "1.47.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.47.0.tgz#8cb313e59965d3c05cfbf898915a267af46a335c"
+ integrity sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==
mime-types@~2.1.17, mime-types@~2.1.24:
- version "2.1.24"
- resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81"
- integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==
+ version "2.1.30"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.30.tgz#6e7be8b4c479825f85ed6326695db73f9305d62d"
+ integrity sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==
dependencies:
- mime-db "1.40.0"
+ mime-db "1.47.0"
-mime@1.6.0, mime@^1.5.0:
+mime@1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
+mime@^2.4.4:
+ version "2.5.2"
+ resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe"
+ integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==
+
+mimic-fn@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
+ integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
+
+mini-css-extract-plugin@^0.9.0:
+ version "0.9.0"
+ resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz#47f2cf07aa165ab35733b1fc97d4c46c0564339e"
+ integrity sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A==
+ dependencies:
+ loader-utils "^1.1.0"
+ normalize-url "1.9.1"
+ schema-utils "^1.0.0"
+ webpack-sources "^1.1.0"
+
minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
-minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
+minimalistic-crypto-utils@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
@@ -3251,30 +5052,62 @@ minimatch@^3.0.4:
dependencies:
brace-expansion "^1.1.7"
-minimist@0.0.8:
- version "0.0.8"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
- integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
+minimist@^1.2.0, minimist@^1.2.5:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
+ integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
-minimist@^1.1.3, minimist@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
- integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
+minipass-collect@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617"
+ integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==
+ dependencies:
+ minipass "^3.0.0"
-minipass@^2.2.1, minipass@^2.3.5:
- version "2.3.5"
- resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848"
- integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==
+minipass-flush@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373"
+ integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==
dependencies:
- safe-buffer "^5.1.2"
- yallist "^3.0.0"
+ minipass "^3.0.0"
-minizlib@^1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614"
- integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==
+minipass-pipeline@^1.2.2:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c"
+ integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==
+ dependencies:
+ minipass "^3.0.0"
+
+minipass@^3.0.0, minipass@^3.1.1:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd"
+ integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==
dependencies:
- minipass "^2.2.1"
+ yallist "^4.0.0"
+
+minizlib@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931"
+ integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==
+ dependencies:
+ minipass "^3.0.0"
+ yallist "^4.0.0"
+
+mississippi@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022"
+ integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==
+ dependencies:
+ concat-stream "^1.5.0"
+ duplexify "^3.4.2"
+ end-of-stream "^1.1.0"
+ flush-write-stream "^1.0.0"
+ from2 "^2.1.0"
+ parallel-transform "^1.1.0"
+ pump "^3.0.0"
+ pumpify "^1.3.3"
+ stream-each "^1.1.0"
+ through2 "^2.0.0"
mixin-deep@^1.2.0:
version "1.3.2"
@@ -3284,12 +5117,29 @@ mixin-deep@^1.2.0:
for-in "^1.0.2"
is-extendable "^1.0.1"
-mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:
- version "0.5.1"
- resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
- integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
+mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1:
+ version "0.5.5"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
+ integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
dependencies:
- minimist "0.0.8"
+ minimist "^1.2.5"
+
+mkdirp@^1.0.3, mkdirp@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
+ integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
+
+move-concurrently@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92"
+ integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=
+ dependencies:
+ aproba "^1.1.1"
+ copy-concurrently "^1.0.0"
+ fs-write-stream-atomic "^1.0.8"
+ mkdirp "^0.5.1"
+ rimraf "^2.5.4"
+ run-queue "^1.0.3"
ms@2.0.0:
version "2.0.0"
@@ -3301,11 +5151,16 @@ ms@2.1.1:
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
-ms@^2.1.1:
+ms@2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+ms@^2.1.1:
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
+ integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
+
multicast-dns-service-types@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901"
@@ -3320,9 +5175,14 @@ multicast-dns@^6.0.1:
thunky "^1.0.2"
nan@^2.12.1:
- version "2.14.0"
- resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c"
- integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==
+ version "2.14.2"
+ resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19"
+ integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==
+
+nanoid@^2.0.3:
+ version "2.1.11"
+ resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-2.1.11.tgz#ec24b8a758d591561531b4176a01e3ab4f0f0280"
+ integrity sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA==
nanomatch@^1.2.9:
version "1.2.13"
@@ -3341,24 +5201,25 @@ nanomatch@^1.2.9:
snapdragon "^0.8.1"
to-regex "^3.0.1"
-needle@^2.2.1:
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c"
- integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==
- dependencies:
- debug "^3.2.6"
- iconv-lite "^0.4.4"
- sax "^1.2.4"
+natural-compare@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
+ integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
negotiator@0.6.2:
version "0.6.2"
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
-neo-async@^2.5.0:
- version "2.6.1"
- resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c"
- integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==
+neo-async@^2.5.0, neo-async@^2.6.1:
+ version "2.6.2"
+ resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
+ integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
+
+nice-try@^1.0.4:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
+ integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
no-case@^2.2.0:
version "2.3.2"
@@ -3367,12 +5228,17 @@ no-case@^2.2.0:
dependencies:
lower-case "^1.1.1"
-node-forge@0.7.5:
- version "0.7.5"
- resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df"
- integrity sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==
+node-fetch@^2.3.0:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052"
+ integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==
+
+node-forge@^0.10.0:
+ version "0.10.0"
+ resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3"
+ integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==
-node-libs-browser@^2.0.0:
+node-libs-browser@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425"
integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==
@@ -3401,39 +5267,22 @@ node-libs-browser@^2.0.0:
util "^0.11.0"
vm-browserify "^1.0.1"
-node-pre-gyp@^0.12.0:
- version "0.12.0"
- resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149"
- integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A==
- dependencies:
- detect-libc "^1.0.2"
- mkdirp "^0.5.1"
- needle "^2.2.1"
- nopt "^4.0.1"
- npm-packlist "^1.1.6"
- npmlog "^4.0.2"
- rc "^1.2.7"
- rimraf "^2.6.1"
- semver "^5.3.0"
- tar "^4"
-
-nopt@^4.0.1, nopt@~4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d"
- integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=
- dependencies:
- abbrev "1"
- osenv "^0.1.4"
+node-modules-regexp@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40"
+ integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=
+
+node-releases@^1.1.71:
+ version "1.1.71"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb"
+ integrity sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==
-normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
- integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
+nopt@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88"
+ integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==
dependencies:
- hosted-git-info "^2.1.4"
- resolve "^1.10.0"
- semver "2 || 3 || 4 || 5"
- validate-npm-package-license "^3.0.1"
+ abbrev "1"
normalize-path@^2.1.1:
version "2.1.1"
@@ -3442,17 +5291,12 @@ normalize-path@^2.1.1:
dependencies:
remove-trailing-separator "^1.0.1"
-normalize-path@^3.0.0:
+normalize-path@^3.0.0, normalize-path@~3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
-normalize-range@^0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
- integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=
-
-normalize-url@^1.4.0:
+normalize-url@1.9.1:
version "1.9.1"
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c"
integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=
@@ -3462,46 +5306,32 @@ normalize-url@^1.4.0:
query-string "^4.1.0"
sort-keys "^1.0.0"
-npm-bundled@^1.0.1:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd"
- integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==
+normalize-url@^3.0.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559"
+ integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==
-npm-packlist@^1.1.6:
- version "1.4.4"
- resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.4.tgz#866224233850ac534b63d1a6e76050092b5d2f44"
- integrity sha512-zTLo8UcVYtDU3gdeaFu2Xu0n0EvelfHDGuqtNIn5RO7yQj4H1TqNdBc/yZjxnWA0PVB8D3Woyp0i5B43JwQ6Vw==
+npm-run-path@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
+ integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=
dependencies:
- ignore-walk "^3.0.1"
- npm-bundled "^1.0.1"
+ path-key "^2.0.0"
-npmlog@^4.0.2:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
- integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
+npm-run-path@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
+ integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==
dependencies:
- are-we-there-yet "~1.1.2"
- console-control-strings "~1.1.0"
- gauge "~2.7.3"
- set-blocking "~2.0.0"
+ path-key "^3.0.0"
-nth-check@~1.0.1:
+nth-check@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c"
integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==
dependencies:
boolbase "~1.0.0"
-num2fraction@^1.2.2:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede"
- integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=
-
-number-is-nan@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
- integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
-
object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
@@ -3516,7 +5346,20 @@ object-copy@^0.1.0:
define-property "^0.2.5"
kind-of "^3.0.3"
-object-keys@^1.0.12:
+object-inspect@^1.9.0:
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a"
+ integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==
+
+object-is@^1.0.1:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac"
+ integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+
+object-keys@^1.0.12, object-keys@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
@@ -3528,6 +5371,25 @@ object-visit@^1.0.0:
dependencies:
isobject "^3.0.0"
+object.assign@^4.1.0, object.assign@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940"
+ integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==
+ dependencies:
+ call-bind "^1.0.0"
+ define-properties "^1.1.3"
+ has-symbols "^1.0.1"
+ object-keys "^1.1.1"
+
+object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz#1bd63aeacf0d5d2d2f31b5e393b03a7c601a23f7"
+ integrity sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+ es-abstract "^1.18.0-next.2"
+
object.pick@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
@@ -3535,6 +5397,16 @@ object.pick@^1.3.0:
dependencies:
isobject "^3.0.1"
+object.values@^1.1.0:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.3.tgz#eaa8b1e17589f02f698db093f7c62ee1699742ee"
+ integrity sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+ es-abstract "^1.18.0-next.2"
+ has "^1.0.3"
+
obuf@^1.0.0, obuf@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
@@ -3552,21 +5424,53 @@ on-headers@~1.0.2:
resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f"
integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==
-once@^1.3.0:
+once@^1.3.0, once@^1.3.1, once@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
dependencies:
wrappy "1"
-opn@^5.1.0:
+onetime@^5.1.0:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
+ integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
+ dependencies:
+ mimic-fn "^2.1.0"
+
+opencollective-postinstall@^2.0.2:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259"
+ integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==
+
+opn@^5.5.0:
version "5.5.0"
resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc"
integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==
dependencies:
is-wsl "^1.1.0"
-original@>=0.0.5:
+optimize-css-assets-webpack-plugin@^5.0.3:
+ version "5.0.4"
+ resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.4.tgz#85883c6528aaa02e30bbad9908c92926bb52dc90"
+ integrity sha512-wqd6FdI2a5/FdoiCNNkEvLeA//lHHfG24Ln2Xm2qqdIk4aOlsR18jwpyOihqQ8849W3qu2DX8fOYxpvTMj+93A==
+ dependencies:
+ cssnano "^4.1.10"
+ last-call-webpack-plugin "^3.0.0"
+
+optionator@^0.9.1:
+ version "0.9.1"
+ resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499"
+ integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==
+ dependencies:
+ deep-is "^0.1.3"
+ fast-levenshtein "^2.0.6"
+ levn "^0.4.1"
+ prelude-ls "^1.2.1"
+ type-check "^0.4.0"
+ word-wrap "^1.2.3"
+
+original@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f"
integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==
@@ -3578,59 +5482,83 @@ os-browserify@^0.3.0:
resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=
-os-homedir@^1.0.0, os-homedir@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
- integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
+p-finally@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
+ integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
-os-locale@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9"
- integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=
+p-limit@^2.0.0, p-limit@^2.2.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
+ integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
dependencies:
- lcid "^1.0.0"
+ p-try "^2.0.0"
-os-tmpdir@^1.0.0, os-tmpdir@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
- integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
+p-limit@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
+ integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
+ dependencies:
+ yocto-queue "^0.1.0"
-osenv@^0.1.4:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410"
- integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==
+p-locate@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4"
+ integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==
dependencies:
- os-homedir "^1.0.0"
- os-tmpdir "^1.0.0"
+ p-limit "^2.0.0"
-p-limit@^1.1.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
- integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==
+p-locate@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
+ integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
dependencies:
- p-try "^1.0.0"
+ p-limit "^2.2.0"
-p-locate@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
- integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=
+p-locate@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
+ integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
dependencies:
- p-limit "^1.1.0"
+ p-limit "^3.0.2"
-p-map@^1.1.1:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b"
- integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==
+p-map@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175"
+ integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==
-p-try@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
- integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=
+p-map@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b"
+ integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==
+ dependencies:
+ aggregate-error "^3.0.0"
-pako@~1.0.5:
- version "1.0.10"
- resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732"
- integrity sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==
+p-retry@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328"
+ integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==
+ dependencies:
+ retry "^0.12.0"
+
+p-try@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
+ integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
+
+pako@~1.0.2, pako@~1.0.5:
+ version "1.0.11"
+ resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
+ integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==
+
+parallel-transform@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc"
+ integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==
+ dependencies:
+ cyclist "^1.0.1"
+ inherits "^2.0.3"
+ readable-stream "^2.1.5"
param-case@2.1.x:
version "2.1.1"
@@ -3639,24 +5567,46 @@ param-case@2.1.x:
dependencies:
no-case "^2.2.0"
-parse-asn1@^5.0.0:
- version "5.1.4"
- resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.4.tgz#37f6628f823fbdeb2273b4d540434a22f3ef1fcc"
- integrity sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==
+parent-module@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
+ integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
+ dependencies:
+ callsites "^3.0.0"
+
+parse-asn1@^5.0.0, parse-asn1@^5.1.5:
+ version "5.1.6"
+ resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4"
+ integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==
dependencies:
- asn1.js "^4.0.0"
+ asn1.js "^5.2.0"
browserify-aes "^1.0.0"
- create-hash "^1.1.0"
evp_bytestokey "^1.0.0"
pbkdf2 "^3.0.3"
safe-buffer "^5.1.1"
-parse-json@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
- integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=
+parse-json@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
+ integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=
dependencies:
- error-ex "^1.2.0"
+ error-ex "^1.3.1"
+ json-parse-better-errors "^1.0.1"
+
+parse-json@^5.0.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
+ integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ error-ex "^1.3.1"
+ json-parse-even-better-errors "^2.3.0"
+ lines-and-columns "^1.1.6"
+
+parse-passwd@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
+ integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=
parseurl@~1.3.2, parseurl@~1.3.3:
version "1.3.3"
@@ -3678,28 +5628,36 @@ path-dirname@^1.0.0:
resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=
-path-exists@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
- integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=
- dependencies:
- pinkie-promise "^2.0.0"
-
path-exists@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
-path-is-absolute@^1.0.0, path-is-absolute@^1.0.1:
+path-exists@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
+ integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
+
+path-is-absolute@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
-path-is-inside@^1.0.1:
+path-is-inside@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=
+path-key@^2.0.0, path-key@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
+ integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
+
+path-key@^3.0.0, path-key@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
+ integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
+
path-parse@^1.0.6:
version "1.0.6"
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
@@ -3710,19 +5668,15 @@ path-to-regexp@0.1.7:
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=
-path-type@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
- integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=
- dependencies:
- graceful-fs "^4.1.2"
- pify "^2.0.0"
- pinkie-promise "^2.0.0"
+path-type@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
+ integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
pbkdf2@^3.0.3:
- version "3.0.17"
- resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6"
- integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075"
+ integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==
dependencies:
create-hash "^1.1.2"
create-hmac "^1.1.4"
@@ -3730,15 +5684,20 @@ pbkdf2@^3.0.3:
safe-buffer "^5.0.1"
sha.js "^2.4.8"
+picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.3.tgz#465547f359ccc206d3c48e46a1bcb89bf7ee619d"
+ integrity sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==
+
pify@^2.0.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
-pify@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
- integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
+pify@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
+ integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
pinkie-promise@^2.0.0:
version "2.0.1"
@@ -3752,356 +5711,413 @@ pinkie@^2.0.0:
resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
-pkg-dir@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4"
- integrity sha1-ektQio1bstYp1EcFb/TpyTFM89Q=
+pirates@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87"
+ integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==
dependencies:
- find-up "^1.0.0"
+ node-modules-regexp "^1.0.0"
-pkg-dir@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b"
- integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=
+pkg-dir@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3"
+ integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==
dependencies:
- find-up "^2.1.0"
+ find-up "^3.0.0"
-portfinder@^1.0.9:
- version "1.0.21"
- resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.21.tgz#60e1397b95ac170749db70034ece306b9a27e324"
- integrity sha512-ESabpDCzmBS3ekHbmpAIiESq3udRsCBGiBZLsC+HgBKv2ezb0R4oG+7RnYEVZ/ZCfhel5Tx3UzdNWA0Lox2QCA==
+pkg-dir@^4.1.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
+ integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
dependencies:
- async "^1.5.2"
- debug "^2.2.0"
- mkdirp "0.5.x"
+ find-up "^4.0.0"
+
+pkg-dir@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-5.0.0.tgz#a02d6aebe6ba133a928f74aec20bafdfe6b8e760"
+ integrity sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==
+ dependencies:
+ find-up "^5.0.0"
+
+please-upgrade-node@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942"
+ integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==
+ dependencies:
+ semver-compare "^1.0.0"
+
+portfinder@^1.0.26:
+ version "1.0.28"
+ resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778"
+ integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==
+ dependencies:
+ async "^2.6.2"
+ debug "^3.1.1"
+ mkdirp "^0.5.5"
posix-character-classes@^0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
-postcss-calc@^5.2.0:
- version "5.3.1"
- resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e"
- integrity sha1-d7rnypKK2FcW4v2kLyYb98HWW14=
+postcss-calc@^7.0.1:
+ version "7.0.5"
+ resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.5.tgz#f8a6e99f12e619c2ebc23cf6c486fdc15860933e"
+ integrity sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==
dependencies:
- postcss "^5.0.2"
- postcss-message-helpers "^2.0.0"
- reduce-css-calc "^1.2.6"
+ postcss "^7.0.27"
+ postcss-selector-parser "^6.0.2"
+ postcss-value-parser "^4.0.2"
-postcss-colormin@^2.1.8:
- version "2.2.2"
- resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b"
- integrity sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=
+postcss-colormin@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381"
+ integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==
dependencies:
- colormin "^1.0.5"
- postcss "^5.0.13"
- postcss-value-parser "^3.2.3"
+ browserslist "^4.0.0"
+ color "^3.0.0"
+ has "^1.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
-postcss-convert-values@^2.3.4:
- version "2.6.1"
- resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d"
- integrity sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=
+postcss-convert-values@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f"
+ integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==
dependencies:
- postcss "^5.0.11"
- postcss-value-parser "^3.1.2"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
-postcss-discard-comments@^2.0.4:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d"
- integrity sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=
+postcss-discard-comments@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033"
+ integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==
dependencies:
- postcss "^5.0.14"
+ postcss "^7.0.0"
-postcss-discard-duplicates@^2.0.1:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932"
- integrity sha1-uavye4isGIFYpesSq8riAmO5GTI=
+postcss-discard-duplicates@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb"
+ integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==
dependencies:
- postcss "^5.0.4"
+ postcss "^7.0.0"
-postcss-discard-empty@^2.0.1:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5"
- integrity sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=
+postcss-discard-empty@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765"
+ integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==
dependencies:
- postcss "^5.0.14"
+ postcss "^7.0.0"
-postcss-discard-overridden@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58"
- integrity sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=
+postcss-discard-overridden@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57"
+ integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==
dependencies:
- postcss "^5.0.16"
+ postcss "^7.0.0"
-postcss-discard-unused@^2.2.1:
- version "2.2.3"
- resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433"
- integrity sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=
+postcss-merge-longhand@^4.0.11:
+ version "4.0.11"
+ resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24"
+ integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==
dependencies:
- postcss "^5.0.14"
- uniqs "^2.0.0"
+ css-color-names "0.0.4"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+ stylehacks "^4.0.0"
-postcss-filter-plugins@^2.0.0:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz#82245fdf82337041645e477114d8e593aa18b8ec"
- integrity sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ==
- dependencies:
- postcss "^5.0.4"
+postcss-merge-rules@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650"
+ integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==
+ dependencies:
+ browserslist "^4.0.0"
+ caniuse-api "^3.0.0"
+ cssnano-util-same-parent "^4.0.0"
+ postcss "^7.0.0"
+ postcss-selector-parser "^3.0.0"
+ vendors "^1.0.0"
-postcss-load-config@^1.1.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-1.2.0.tgz#539e9afc9ddc8620121ebf9d8c3673e0ce50d28a"
- integrity sha1-U56a/J3chiASHr+djDZz4M5Q0oo=
+postcss-minify-font-values@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6"
+ integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==
dependencies:
- cosmiconfig "^2.1.0"
- object-assign "^4.1.0"
- postcss-load-options "^1.2.0"
- postcss-load-plugins "^2.3.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
-postcss-load-options@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/postcss-load-options/-/postcss-load-options-1.2.0.tgz#b098b1559ddac2df04bc0bb375f99a5cfe2b6d8c"
- integrity sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw=
+postcss-minify-gradients@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471"
+ integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==
dependencies:
- cosmiconfig "^2.1.0"
- object-assign "^4.1.0"
+ cssnano-util-get-arguments "^4.0.0"
+ is-color-stop "^1.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
-postcss-load-plugins@^2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz#745768116599aca2f009fad426b00175049d8d92"
- integrity sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI=
- dependencies:
- cosmiconfig "^2.1.1"
- object-assign "^4.1.0"
+postcss-minify-params@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874"
+ integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==
+ dependencies:
+ alphanum-sort "^1.0.0"
+ browserslist "^4.0.0"
+ cssnano-util-get-arguments "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+ uniqs "^2.0.0"
-postcss-merge-idents@^2.1.5:
- version "2.1.7"
- resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270"
- integrity sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=
+postcss-minify-selectors@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8"
+ integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==
dependencies:
- has "^1.0.1"
- postcss "^5.0.10"
- postcss-value-parser "^3.1.1"
+ alphanum-sort "^1.0.0"
+ has "^1.0.0"
+ postcss "^7.0.0"
+ postcss-selector-parser "^3.0.0"
-postcss-merge-longhand@^2.0.1:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658"
- integrity sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=
+postcss-modules-extract-imports@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e"
+ integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==
dependencies:
- postcss "^5.0.4"
+ postcss "^7.0.5"
-postcss-merge-rules@^2.0.3:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721"
- integrity sha1-0d9d+qexrMO+VT8OnhDofGG19yE=
+postcss-modules-local-by-default@^3.0.2:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz#bb14e0cc78279d504dbdcbfd7e0ca28993ffbbb0"
+ integrity sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==
dependencies:
- browserslist "^1.5.2"
- caniuse-api "^1.5.2"
- postcss "^5.0.4"
- postcss-selector-parser "^2.2.2"
- vendors "^1.0.0"
-
-postcss-message-helpers@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e"
- integrity sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=
+ icss-utils "^4.1.1"
+ postcss "^7.0.32"
+ postcss-selector-parser "^6.0.2"
+ postcss-value-parser "^4.1.0"
-postcss-minify-font-values@^1.0.2:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69"
- integrity sha1-S1jttWZB66fIR0qzUmyv17vey2k=
+postcss-modules-scope@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee"
+ integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==
dependencies:
- object-assign "^4.0.1"
- postcss "^5.0.4"
- postcss-value-parser "^3.0.2"
+ postcss "^7.0.6"
+ postcss-selector-parser "^6.0.0"
-postcss-minify-gradients@^1.0.1:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1"
- integrity sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=
+postcss-modules-values@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10"
+ integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==
dependencies:
- postcss "^5.0.12"
- postcss-value-parser "^3.3.0"
+ icss-utils "^4.0.0"
+ postcss "^7.0.6"
-postcss-minify-params@^1.0.4:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3"
- integrity sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=
+postcss-normalize-charset@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4"
+ integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==
dependencies:
- alphanum-sort "^1.0.1"
- postcss "^5.0.2"
- postcss-value-parser "^3.0.2"
- uniqs "^2.0.0"
+ postcss "^7.0.0"
-postcss-minify-selectors@^2.0.4:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf"
- integrity sha1-ssapjAByz5G5MtGkllCBFDEXNb8=
+postcss-normalize-display-values@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a"
+ integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==
dependencies:
- alphanum-sort "^1.0.2"
- has "^1.0.1"
- postcss "^5.0.14"
- postcss-selector-parser "^2.0.0"
+ cssnano-util-get-match "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
-postcss-modules-extract-imports@^1.0.0:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz#dc87e34148ec7eab5f791f7cd5849833375b741a"
- integrity sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw==
+postcss-normalize-positions@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f"
+ integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==
dependencies:
- postcss "^6.0.1"
+ cssnano-util-get-arguments "^4.0.0"
+ has "^1.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
-postcss-modules-local-by-default@^1.0.1:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069"
- integrity sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=
+postcss-normalize-repeat-style@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c"
+ integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==
dependencies:
- css-selector-tokenizer "^0.7.0"
- postcss "^6.0.1"
+ cssnano-util-get-arguments "^4.0.0"
+ cssnano-util-get-match "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
-postcss-modules-scope@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90"
- integrity sha1-1upkmUx5+XtipytCb75gVqGUu5A=
+postcss-normalize-string@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c"
+ integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==
dependencies:
- css-selector-tokenizer "^0.7.0"
- postcss "^6.0.1"
+ has "^1.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
-postcss-modules-values@^1.1.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20"
- integrity sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=
+postcss-normalize-timing-functions@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9"
+ integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==
dependencies:
- icss-replace-symbols "^1.1.0"
- postcss "^6.0.1"
+ cssnano-util-get-match "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
-postcss-normalize-charset@^1.1.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1"
- integrity sha1-757nEhLX/nWceO0WL2HtYrXLk/E=
+postcss-normalize-unicode@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb"
+ integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==
dependencies:
- postcss "^5.0.5"
+ browserslist "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
-postcss-normalize-url@^3.0.7:
- version "3.0.8"
- resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222"
- integrity sha1-EI90s/L82viRov+j6kWSJ5/HgiI=
+postcss-normalize-url@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1"
+ integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==
dependencies:
is-absolute-url "^2.0.0"
- normalize-url "^1.4.0"
- postcss "^5.0.14"
- postcss-value-parser "^3.2.3"
+ normalize-url "^3.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
-postcss-ordered-values@^2.1.0:
- version "2.2.3"
- resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d"
- integrity sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=
+postcss-normalize-whitespace@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82"
+ integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==
dependencies:
- postcss "^5.0.4"
- postcss-value-parser "^3.0.1"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
-postcss-reduce-idents@^2.2.2:
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3"
- integrity sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=
+postcss-ordered-values@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee"
+ integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==
dependencies:
- postcss "^5.0.4"
- postcss-value-parser "^3.0.2"
+ cssnano-util-get-arguments "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
-postcss-reduce-initial@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea"
- integrity sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=
+postcss-reduce-initial@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df"
+ integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==
dependencies:
- postcss "^5.0.4"
+ browserslist "^4.0.0"
+ caniuse-api "^3.0.0"
+ has "^1.0.0"
+ postcss "^7.0.0"
-postcss-reduce-transforms@^1.0.3:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1"
- integrity sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=
+postcss-reduce-transforms@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29"
+ integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==
dependencies:
- has "^1.0.1"
- postcss "^5.0.8"
- postcss-value-parser "^3.0.1"
+ cssnano-util-get-match "^4.0.0"
+ has "^1.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
-postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2:
- version "2.2.3"
- resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90"
- integrity sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=
+postcss-selector-parser@^3.0.0:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270"
+ integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==
dependencies:
- flatten "^1.0.2"
+ dot-prop "^5.2.0"
indexes-of "^1.0.1"
uniq "^1.0.1"
-postcss-svgo@^2.1.1:
- version "2.1.6"
- resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d"
- integrity sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=
+postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2:
+ version "6.0.4"
+ resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz#56075a1380a04604c38b063ea7767a129af5c2b3"
+ integrity sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==
dependencies:
- is-svg "^2.0.0"
- postcss "^5.0.14"
- postcss-value-parser "^3.2.3"
- svgo "^0.7.0"
+ cssesc "^3.0.0"
+ indexes-of "^1.0.1"
+ uniq "^1.0.1"
+ util-deprecate "^1.0.2"
-postcss-unique-selectors@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d"
- integrity sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=
+postcss-svgo@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.3.tgz#343a2cdbac9505d416243d496f724f38894c941e"
+ integrity sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==
dependencies:
- alphanum-sort "^1.0.1"
- postcss "^5.0.4"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+ svgo "^1.0.0"
+
+postcss-unique-selectors@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac"
+ integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==
+ dependencies:
+ alphanum-sort "^1.0.0"
+ postcss "^7.0.0"
uniqs "^2.0.0"
-postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0:
+postcss-value-parser@^3.0.0:
version "3.3.1"
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281"
integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==
-postcss-zindex@^2.0.1:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22"
- integrity sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=
- dependencies:
- has "^1.0.1"
- postcss "^5.0.4"
- uniqs "^2.0.0"
-
-postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.21, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.16:
- version "5.2.18"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5"
- integrity sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==
- dependencies:
- chalk "^1.1.3"
- js-base64 "^2.1.9"
- source-map "^0.5.6"
- supports-color "^3.2.3"
+postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb"
+ integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==
-postcss@^6.0.1:
- version "6.0.23"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324"
- integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==
+postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6:
+ version "7.0.35"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24"
+ integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==
dependencies:
- chalk "^2.4.1"
+ chalk "^2.4.2"
source-map "^0.6.1"
- supports-color "^5.4.0"
+ supports-color "^6.1.0"
+
+prelude-ls@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
+ integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
prepend-http@^1.0.0:
version "1.0.4"
resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=
+prettier@^1.18.2:
+ version "1.19.1"
+ resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb"
+ integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==
+
pretty-error@^2.0.2:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3"
- integrity sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6"
+ integrity sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==
dependencies:
- renderkid "^2.0.1"
- utila "~0.4"
+ lodash "^4.17.20"
+ renderkid "^2.0.4"
-private@^0.1.6, private@^0.1.8:
- version "0.1.8"
- resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff"
- integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==
+pretty-format@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93"
+ integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==
+ dependencies:
+ "@jest/types" "^26.6.2"
+ ansi-regex "^5.0.0"
+ ansi-styles "^4.0.0"
+ react-is "^17.0.1"
+
+pretty@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/pretty/-/pretty-2.0.0.tgz#adbc7960b7bbfe289a557dc5f737619a220d06a5"
+ integrity sha1-rbx5YLe7/iiaVX3F9zdhmiINBqU=
+ dependencies:
+ condense-newlines "^0.2.1"
+ extend-shallow "^2.0.1"
+ js-beautify "^1.6.12"
process-nextick-args@~2.0.0:
version "2.0.1"
@@ -4113,15 +6129,25 @@ process@^0.11.10:
resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
+progress@^2.0.0:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
+ integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
+
+promise-inflight@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
+ integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM=
+
proto-list@~1.2.1:
version "1.2.4"
resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849"
integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=
-protobufjs@^6.8.0:
- version "6.8.8"
- resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.8.8.tgz#c8b4f1282fd7a90e6f5b109ed11c84af82908e7c"
- integrity sha512-AAmHtD5pXgZfi7GMpllpO3q1Xw1OYldr+dMUlAnffGTAhqkg72WdmSY71uKBF/JuyiKs8psYbtKrhi0ASCD8qw==
+protobufjs@^6.10.0:
+ version "6.10.2"
+ resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.10.2.tgz#b9cb6bd8ec8f87514592ba3fdfd28e93f33a469b"
+ integrity sha512-27yj+04uF6ya9l+qfpH187aqEzfCF4+Uit0I9ZBQVqK09hk/SQzKa2MUqUpXaVa7LOFRg1TSSr3lVxGOk6c0SQ==
dependencies:
"@protobufjs/aspromise" "^1.1.2"
"@protobufjs/base64" "^1.1.2"
@@ -4133,17 +6159,17 @@ protobufjs@^6.8.0:
"@protobufjs/path" "^1.1.2"
"@protobufjs/pool" "^1.1.0"
"@protobufjs/utf8" "^1.1.0"
- "@types/long" "^4.0.0"
- "@types/node" "^10.1.0"
+ "@types/long" "^4.0.1"
+ "@types/node" "^13.7.0"
long "^4.0.0"
proxy-addr@~2.0.5:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34"
- integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf"
+ integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==
dependencies:
forwarded "~0.1.2"
- ipaddr.js "1.9.0"
+ ipaddr.js "1.9.1"
prr@~1.0.1:
version "1.0.1"
@@ -4167,6 +6193,31 @@ public-encrypt@^4.0.0:
randombytes "^2.0.1"
safe-buffer "^5.1.2"
+pump@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909"
+ integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
+pump@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
+ integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
+pumpify@^1.3.3:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce"
+ integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==
+ dependencies:
+ duplexify "^3.6.0"
+ inherits "^2.0.3"
+ pump "^2.0.0"
+
punycode@1.3.2:
version "1.3.2"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
@@ -4177,6 +6228,11 @@ punycode@^1.2.4:
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
+punycode@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
+ integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
+
q@^1.1.2:
version "1.5.1"
resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
@@ -4206,11 +6262,16 @@ querystring@0.2.0:
integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
querystringify@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e"
- integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6"
+ integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==
-randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5:
+queue-microtask@^1.2.2:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
+ integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
+
+randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
@@ -4225,7 +6286,7 @@ randomfill@^1.0.3:
randombytes "^2.0.5"
safe-buffer "^5.1.0"
-range-parser@^1.0.3, range-parser@~1.2.1:
+range-parser@^1.2.1, range-parser@~1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
@@ -4240,37 +6301,15 @@ raw-body@2.4.0:
iconv-lite "0.4.24"
unpipe "1.0.0"
-rc@^1.2.7:
- version "1.2.8"
- resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
- integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
- dependencies:
- deep-extend "^0.6.0"
- ini "~1.3.0"
- minimist "^1.2.0"
- strip-json-comments "~2.0.1"
+react-is@^17.0.1:
+ version "17.0.2"
+ resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0"
+ integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
-read-pkg-up@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
- integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=
- dependencies:
- find-up "^1.0.0"
- read-pkg "^1.0.0"
-
-read-pkg@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
- integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=
- dependencies:
- load-json-file "^1.0.0"
- normalize-package-data "^2.3.2"
- path-type "^1.0.0"
-
-readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.3.3, readable-stream@^2.3.6:
- version "2.3.6"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
- integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==
+"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6:
+ version "2.3.7"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
+ integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
dependencies:
core-util-is "~1.0.0"
inherits "~2.0.3"
@@ -4280,10 +6319,10 @@ readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
-readable-stream@^3.0.6, readable-stream@^3.1.1:
- version "3.4.0"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc"
- integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==
+readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.6.0:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
+ integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
dependencies:
inherits "^2.0.3"
string_decoder "^1.1.1"
@@ -4298,48 +6337,36 @@ readdirp@^2.2.1:
micromatch "^3.1.10"
readable-stream "^2.0.2"
-redent@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde"
- integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=
- dependencies:
- indent-string "^2.1.0"
- strip-indent "^1.0.1"
-
-reduce-css-calc@^1.2.6:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716"
- integrity sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=
+readdirp@~3.5.0:
+ version "3.5.0"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e"
+ integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==
dependencies:
- balanced-match "^0.4.2"
- math-expression-evaluator "^1.2.14"
- reduce-function-call "^1.0.1"
+ picomatch "^2.2.1"
-reduce-function-call@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99"
- integrity sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=
+regenerate-unicode-properties@^8.2.0:
+ version "8.2.0"
+ resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec"
+ integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==
dependencies:
- balanced-match "^0.4.2"
+ regenerate "^1.4.0"
-regenerate@^1.2.1:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11"
- integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==
+regenerate@^1.4.0:
+ version "1.4.2"
+ resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a"
+ integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==
-regenerator-runtime@^0.11.0:
- version "0.11.1"
- resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
- integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==
+regenerator-runtime@^0.13.4:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55"
+ integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==
-regenerator-transform@^0.10.0:
- version "0.10.1"
- resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd"
- integrity sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==
+regenerator-transform@^0.14.2:
+ version "0.14.5"
+ resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4"
+ integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==
dependencies:
- babel-runtime "^6.18.0"
- babel-types "^6.19.0"
- private "^0.1.6"
+ "@babel/runtime" "^7.8.4"
regex-not@^1.0.0, regex-not@^1.0.2:
version "1.0.2"
@@ -4349,33 +6376,40 @@ regex-not@^1.0.0, regex-not@^1.0.2:
extend-shallow "^3.0.2"
safe-regex "^1.1.0"
-regexpu-core@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b"
- integrity sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=
- dependencies:
- regenerate "^1.2.1"
- regjsgen "^0.2.0"
- regjsparser "^0.1.4"
-
-regexpu-core@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240"
- integrity sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=
+regexp.prototype.flags@^1.2.0:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26"
+ integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==
dependencies:
- regenerate "^1.2.1"
- regjsgen "^0.2.0"
- regjsparser "^0.1.4"
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
-regjsgen@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7"
- integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=
+regexpp@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2"
+ integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==
+
+regexpu-core@^4.7.1:
+ version "4.7.1"
+ resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6"
+ integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==
+ dependencies:
+ regenerate "^1.4.0"
+ regenerate-unicode-properties "^8.2.0"
+ regjsgen "^0.5.1"
+ regjsparser "^0.6.4"
+ unicode-match-property-ecmascript "^1.0.4"
+ unicode-match-property-value-ecmascript "^1.2.0"
+
+regjsgen@^0.5.1:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733"
+ integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==
-regjsparser@^0.1.4:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c"
- integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=
+regjsparser@^0.6.4:
+ version "0.6.9"
+ resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.9.tgz#b489eef7c9a2ce43727627011429cf833a7183e6"
+ integrity sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==
dependencies:
jsesc "~0.5.0"
@@ -4389,48 +6423,41 @@ remove-trailing-separator@^1.0.1:
resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8=
-renderkid@^2.0.1:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.3.tgz#380179c2ff5ae1365c522bf2fcfcff01c5b74149"
- integrity sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA==
+renderkid@^2.0.4:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.5.tgz#483b1ac59c6601ab30a7a596a5965cabccfdd0a5"
+ integrity sha512-ccqoLg+HLOHq1vdfYNm4TBeaCDIi1FLt3wGojTDSvdewUv65oTmI3cnT2E4hRjl1gzKZIPK+KZrXzlUYKnR+vQ==
dependencies:
- css-select "^1.1.0"
+ css-select "^2.0.2"
dom-converter "^0.2"
- htmlparser2 "^3.3.0"
+ htmlparser2 "^3.10.1"
+ lodash "^4.17.20"
strip-ansi "^3.0.0"
- utila "^0.4.0"
repeat-element@^1.1.2:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce"
- integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9"
+ integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==
-repeat-string@^1.5.2, repeat-string@^1.6.1:
+repeat-string@^1.6.1:
version "1.6.1"
resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
-repeating@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
- integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=
- dependencies:
- is-finite "^1.0.0"
-
require-directory@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
-require-from-string@^1.1.0:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418"
- integrity sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=
+require-from-string@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
+ integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==
-require-main-filename@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
- integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=
+require-main-filename@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
+ integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
requires-port@^1.0.0:
version "1.0.0"
@@ -4444,39 +6471,81 @@ resolve-cwd@^2.0.0:
dependencies:
resolve-from "^3.0.0"
+resolve-dir@^1.0.0, resolve-dir@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43"
+ integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=
+ dependencies:
+ expand-tilde "^2.0.0"
+ global-modules "^1.0.0"
+
resolve-from@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
integrity sha1-six699nWiBvItuZTM17rywoYh0g=
+resolve-from@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
+ integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
+
resolve-url@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
-resolve@^1.10.0, resolve@^1.3.3:
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.1.tgz#ea10d8110376982fef578df8fc30b9ac30a07a3e"
- integrity sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==
+resolve@^1.14.2:
+ version "1.20.0"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975"
+ integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==
dependencies:
+ is-core-module "^2.2.0"
path-parse "^1.0.6"
+restore-cursor@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e"
+ integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==
+ dependencies:
+ onetime "^5.1.0"
+ signal-exit "^3.0.2"
+
ret@~0.1.10:
version "0.1.15"
resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
-right-align@^0.1.1:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
- integrity sha1-YTObci/mo1FWiSENJOFMlhSGE+8=
+retry@^0.12.0:
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b"
+ integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=
+
+reusify@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
+ integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
+
+rgb-regex@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1"
+ integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE=
+
+rgba-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3"
+ integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=
+
+rimraf@^2.5.4, rimraf@^2.6.3:
+ version "2.7.1"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
+ integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
dependencies:
- align-text "^0.1.1"
+ glob "^7.1.3"
-rimraf@^2.2.8, rimraf@^2.6.1:
- version "2.6.3"
- resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
- integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
+rimraf@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
+ integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
dependencies:
glob "^7.1.3"
@@ -4488,15 +6557,36 @@ ripemd160@^2.0.0, ripemd160@^2.0.1:
hash-base "^3.0.0"
inherits "^2.0.1"
+run-parallel@^1.1.9:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
+ integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
+ dependencies:
+ queue-microtask "^1.2.2"
+
+run-queue@^1.0.0, run-queue@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47"
+ integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=
+ dependencies:
+ aproba "^1.1.1"
+
+rxjs@^6.6.7:
+ version "6.6.7"
+ resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9"
+ integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==
+ dependencies:
+ tslib "^1.9.0"
+
safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
version "5.1.2"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
-safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519"
- integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==
+safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
+ integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
safe-regex@^1.1.0:
version "1.1.0"
@@ -4505,39 +6595,86 @@ safe-regex@^1.1.0:
dependencies:
ret "~0.1.10"
-"safer-buffer@>= 2.1.2 < 3":
+"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.1.0:
version "2.1.2"
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
-sax@^1.2.4, sax@~1.2.1:
+sax@~1.2.4:
version "1.2.4"
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
-schema-utils@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.3.0.tgz#f5877222ce3e931edae039f17eb3716e7137f8cf"
- integrity sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=
+schema-utils@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770"
+ integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==
+ dependencies:
+ ajv "^6.1.0"
+ ajv-errors "^1.0.0"
+ ajv-keywords "^3.1.0"
+
+schema-utils@^2.6.5, schema-utils@^2.7.0:
+ version "2.7.1"
+ resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7"
+ integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==
dependencies:
- ajv "^5.0.0"
+ "@types/json-schema" "^7.0.5"
+ ajv "^6.12.4"
+ ajv-keywords "^3.5.2"
+
+schema-utils@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.0.0.tgz#67502f6aa2b66a2d4032b4279a2944978a0913ef"
+ integrity sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==
+ dependencies:
+ "@types/json-schema" "^7.0.6"
+ ajv "^6.12.5"
+ ajv-keywords "^3.5.2"
select-hose@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=
-selfsigned@^1.9.1:
- version "1.10.4"
- resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.4.tgz#cdd7eccfca4ed7635d47a08bf2d5d3074092e2cd"
- integrity sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw==
+selfsigned@^1.10.8:
+ version "1.10.8"
+ resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.8.tgz#0d17208b7d12c33f8eac85c41835f27fc3d81a30"
+ integrity sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==
dependencies:
- node-forge "0.7.5"
+ node-forge "^0.10.0"
+
+semver-compare@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc"
+ integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w=
+
+semver-regex@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-3.1.2.tgz#34b4c0d361eef262e07199dbef316d0f2ab11807"
+ integrity sha512-bXWyL6EAKOJa81XG1OZ/Yyuq+oT0b2YLlxx7c+mrdYPaPbnj6WgVULXhinMIeZGufuUBu/eVRqXEhiv4imfwxA==
+
+semver@7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
+ integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==
-"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.6.0:
- version "5.7.0"
- resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b"
- integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==
+semver@^5.5.0, semver@^5.6.0:
+ version "5.7.1"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
+ integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
+
+semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0:
+ version "6.3.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
+ integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
+
+semver@^7.2.1, semver@^7.3.4:
+ version "7.3.5"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7"
+ integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==
+ dependencies:
+ lru-cache "^6.0.0"
send@0.17.1:
version "0.17.1"
@@ -4558,6 +6695,18 @@ send@0.17.1:
range-parser "~1.2.1"
statuses "~1.5.0"
+serialize-javascript@^1.7.0:
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.9.1.tgz#cfc200aef77b600c47da9bb8149c943e798c2fdb"
+ integrity sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==
+
+serialize-javascript@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa"
+ integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==
+ dependencies:
+ randombytes "^2.1.0"
+
serve-index@^1.9.1:
version "1.9.1"
resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239"
@@ -4581,11 +6730,16 @@ serve-static@1.14.1:
parseurl "~1.3.3"
send "0.17.1"
-set-blocking@^2.0.0, set-blocking@~2.0.0:
+set-blocking@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
+set-immediate-shim@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
+ integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=
+
set-value@^2.0.0, set-value@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"
@@ -4619,6 +6773,13 @@ sha.js@^2.4.0, sha.js@^2.4.8:
inherits "^2.0.1"
safe-buffer "^5.0.1"
+shallow-clone@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3"
+ integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==
+ dependencies:
+ kind-of "^6.0.2"
+
shebang-command@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
@@ -4626,26 +6787,68 @@ shebang-command@^1.2.0:
dependencies:
shebang-regex "^1.0.0"
+shebang-command@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
+ integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
+ dependencies:
+ shebang-regex "^3.0.0"
+
shebang-regex@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
+shebang-regex@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
+ integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
+
sigmund@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590"
integrity sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=
-signal-exit@^3.0.0:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
- integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
+signal-exit@^3.0.0, signal-exit@^3.0.2:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
+ integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
+
+simple-swizzle@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
+ integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=
+ dependencies:
+ is-arrayish "^0.3.1"
slash@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=
+slash@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
+ integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
+
+slice-ansi@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787"
+ integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==
+ dependencies:
+ ansi-styles "^4.0.0"
+ astral-regex "^2.0.0"
+ is-fullwidth-code-point "^3.0.0"
+
+slice-ansi@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b"
+ integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==
+ dependencies:
+ ansi-styles "^4.0.0"
+ astral-regex "^2.0.0"
+ is-fullwidth-code-point "^3.0.0"
+
snapdragon-node@^2.0.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
@@ -4676,25 +6879,26 @@ snapdragon@^0.8.1:
source-map-resolve "^0.5.0"
use "^3.1.0"
-sockjs-client@1.1.5:
- version "1.1.5"
- resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.5.tgz#1bb7c0f7222c40f42adf14f4442cbd1269771a83"
- integrity sha1-G7fA9yIsQPQq3xT0RCy9Eml3GoM=
+sockjs-client@^1.5.0:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.5.1.tgz#256908f6d5adfb94dabbdbd02c66362cca0f9ea6"
+ integrity sha512-VnVAb663fosipI/m6pqRXakEOw7nvd7TUgdr3PlR/8V2I95QIdwT8L4nMxhyU8SmDBHYXU1TOElaKOmKLfYzeQ==
dependencies:
- debug "^2.6.6"
- eventsource "0.1.6"
- faye-websocket "~0.11.0"
- inherits "^2.0.1"
- json3 "^3.3.2"
- url-parse "^1.1.8"
+ debug "^3.2.6"
+ eventsource "^1.0.7"
+ faye-websocket "^0.11.3"
+ inherits "^2.0.4"
+ json3 "^3.3.3"
+ url-parse "^1.5.1"
-sockjs@0.3.19:
- version "0.3.19"
- resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d"
- integrity sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==
+sockjs@^0.3.21:
+ version "0.3.21"
+ resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.21.tgz#b34ffb98e796930b60a0cfa11904d6a339a7d417"
+ integrity sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==
dependencies:
- faye-websocket "^0.10.0"
- uuid "^3.0.1"
+ faye-websocket "^0.11.3"
+ uuid "^3.4.0"
+ websocket-driver "^0.7.4"
sort-keys@^1.0.0:
version "1.1.2"
@@ -4703,75 +6907,57 @@ sort-keys@^1.0.0:
dependencies:
is-plain-obj "^1.0.0"
-source-list-map@^0.1.4:
- version "0.1.8"
- resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106"
- integrity sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=
-
source-list-map@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34"
integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==
+source-map-loader@^1.0.1:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-1.1.3.tgz#7dbc2fe7ea09d3e43c51fd9fc478b7f016c1f820"
+ integrity sha512-6YHeF+XzDOrT/ycFJNI53cgEsp/tHTMl37hi7uVyqFAlTXW109JazaQCkbc+jjoL2637qkH1amLi+JzrIpt5lA==
+ dependencies:
+ abab "^2.0.5"
+ iconv-lite "^0.6.2"
+ loader-utils "^2.0.0"
+ schema-utils "^3.0.0"
+ source-map "^0.6.1"
+ whatwg-mimetype "^2.3.0"
+
source-map-resolve@^0.5.0:
- version "0.5.2"
- resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259"
- integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==
+ version "0.5.3"
+ resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a"
+ integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==
dependencies:
- atob "^2.1.1"
+ atob "^2.1.2"
decode-uri-component "^0.2.0"
resolve-url "^0.2.1"
source-map-url "^0.4.0"
urix "^0.1.0"
-source-map-support@^0.4.15:
- version "0.4.18"
- resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f"
- integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==
+source-map-support@^0.5.16, source-map-support@~0.5.12:
+ version "0.5.19"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61"
+ integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==
dependencies:
- source-map "^0.5.6"
+ buffer-from "^1.0.0"
+ source-map "^0.6.0"
source-map-url@^0.4.0:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
- integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56"
+ integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==
-source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1:
+source-map@^0.5.0, source-map@^0.5.6:
version "0.5.7"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
-source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1:
+source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
-spdx-correct@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4"
- integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==
- dependencies:
- spdx-expression-parse "^3.0.0"
- spdx-license-ids "^3.0.0"
-
-spdx-exceptions@^2.1.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977"
- integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==
-
-spdx-expression-parse@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0"
- integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==
- dependencies:
- spdx-exceptions "^2.1.0"
- spdx-license-ids "^3.0.0"
-
-spdx-license-ids@^3.0.0:
- version "3.0.5"
- resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654"
- integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==
-
spdy-transport@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31"
@@ -4784,10 +6970,10 @@ spdy-transport@^3.0.0:
readable-stream "^3.0.6"
wbuf "^1.7.3"
-spdy@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.0.tgz#81f222b5a743a329aa12cea6a390e60e9b613c52"
- integrity sha512-ot0oEGT/PGUpzf/6uk4AWLqkq+irlqHXkrdbk51oWONh3bxQmBuljxPNl66zlRRcIJStWq0QkLUCPOPjgjvU0Q==
+spdy@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b"
+ integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==
dependencies:
debug "^4.1.0"
handle-thing "^2.0.0"
@@ -4807,6 +6993,30 @@ sprintf-js@~1.0.2:
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
+ssri@^6.0.1:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5"
+ integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==
+ dependencies:
+ figgy-pudding "^3.5.1"
+
+ssri@^8.0.1:
+ version "8.0.1"
+ resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af"
+ integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==
+ dependencies:
+ minipass "^3.1.1"
+
+stable@^0.1.8:
+ version "0.1.8"
+ resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
+ integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
+
+stackframe@^1.1.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.2.0.tgz#52429492d63c62eb989804c11552e3d22e779303"
+ integrity sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA==
+
static-extend@^0.1.1:
version "0.1.2"
resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
@@ -4828,6 +7038,14 @@ stream-browserify@^2.0.1:
inherits "~2.0.1"
readable-stream "^2.0.2"
+stream-each@^1.1.0:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae"
+ integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==
+ dependencies:
+ end-of-stream "^1.1.0"
+ stream-shift "^1.0.0"
+
stream-http@^2.7.2:
version "2.8.3"
resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc"
@@ -4839,21 +7057,22 @@ stream-http@^2.7.2:
to-arraybuffer "^1.0.0"
xtend "^4.0.0"
+stream-shift@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d"
+ integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==
+
strict-uri-encode@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=
-string-width@^1.0.1, string-width@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
- integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
- dependencies:
- code-point-at "^1.0.0"
- is-fullwidth-code-point "^1.0.0"
- strip-ansi "^3.0.0"
+string-argv@0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da"
+ integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==
-"string-width@^1.0.2 || 2":
+string-width@^2.0.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
@@ -4861,12 +7080,46 @@ string-width@^1.0.1, string-width@^1.0.2:
is-fullwidth-code-point "^2.0.0"
strip-ansi "^4.0.0"
+string-width@^3.0.0, string-width@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
+ integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
+ dependencies:
+ emoji-regex "^7.0.1"
+ is-fullwidth-code-point "^2.0.0"
+ strip-ansi "^5.1.0"
+
+string-width@^4.1.0, string-width@^4.2.0:
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5"
+ integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==
+ dependencies:
+ emoji-regex "^8.0.0"
+ is-fullwidth-code-point "^3.0.0"
+ strip-ansi "^6.0.0"
+
+string.prototype.trimend@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80"
+ integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+
+string.prototype.trimstart@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed"
+ integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+
string_decoder@^1.0.0, string_decoder@^1.1.1:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d"
- integrity sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
+ integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
dependencies:
- safe-buffer "~5.1.0"
+ safe-buffer "~5.2.0"
string_decoder@~1.1.1:
version "1.1.1"
@@ -4875,6 +7128,15 @@ string_decoder@~1.1.1:
dependencies:
safe-buffer "~5.1.0"
+stringify-object@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629"
+ integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==
+ dependencies:
+ get-own-enumerable-property-symbols "^3.0.0"
+ is-obj "^1.0.1"
+ is-regexp "^1.0.0"
+
strip-ansi@^3.0.0, strip-ansi@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
@@ -4889,109 +7151,197 @@ strip-ansi@^4.0.0:
dependencies:
ansi-regex "^3.0.0"
-strip-bom@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
- integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=
+strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
+ integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
dependencies:
- is-utf8 "^0.2.0"
+ ansi-regex "^4.1.0"
-strip-indent@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2"
- integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=
+strip-ansi@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532"
+ integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==
dependencies:
- get-stdin "^4.0.1"
+ ansi-regex "^5.0.0"
-strip-json-comments@~2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
- integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
+strip-eof@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
+ integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=
-style-loader@^0.19.0:
- version "0.19.1"
- resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.19.1.tgz#591ffc80bcefe268b77c5d9ebc0505d772619f85"
- integrity sha512-IRE+ijgojrygQi3rsqT0U4dd+UcPCqcVvauZpCnQrGAlEe+FUIyrK93bUDScamesjP08JlQNsFJU+KmPedP5Og==
+strip-final-newline@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
+ integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
+
+strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
+ integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
+
+style-loader@^1.2.1:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.3.0.tgz#828b4a3b3b7e7aa5847ce7bae9e874512114249e"
+ integrity sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q==
dependencies:
- loader-utils "^1.0.2"
- schema-utils "^0.3.0"
+ loader-utils "^2.0.0"
+ schema-utils "^2.7.0"
+
+stylehacks@^4.0.0:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5"
+ integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==
+ dependencies:
+ browserslist "^4.0.0"
+ postcss "^7.0.0"
+ postcss-selector-parser "^3.0.0"
supports-color@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
-supports-color@^3.1.0, supports-color@^3.2.3:
- version "3.2.3"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6"
- integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=
- dependencies:
- has-flag "^1.0.0"
-
-supports-color@^5.1.0, supports-color@^5.3.0, supports-color@^5.4.0:
+supports-color@^5.3.0:
version "5.5.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
dependencies:
has-flag "^3.0.0"
-svgo@^0.7.0:
- version "0.7.2"
- resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5"
- integrity sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=
+supports-color@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3"
+ integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==
+ dependencies:
+ has-flag "^3.0.0"
+
+supports-color@^7.1.0:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
+ integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
dependencies:
- coa "~1.0.1"
- colors "~1.1.2"
- csso "~2.3.1"
- js-yaml "~3.7.0"
+ has-flag "^4.0.0"
+
+svgo@^1.0.0:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167"
+ integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==
+ dependencies:
+ chalk "^2.4.1"
+ coa "^2.0.2"
+ css-select "^2.0.0"
+ css-select-base-adapter "^0.1.1"
+ css-tree "1.0.0-alpha.37"
+ csso "^4.0.2"
+ js-yaml "^3.13.1"
mkdirp "~0.5.1"
- sax "~1.2.1"
- whet.extend "~0.9.9"
+ object.values "^1.1.0"
+ sax "~1.2.4"
+ stable "^0.1.8"
+ unquote "~1.1.1"
+ util.promisify "~1.0.0"
+
+table@^6.0.4:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/table/-/table-6.1.0.tgz#676a0cfb206008b59e783fcd94ef8ba7d67d966c"
+ integrity sha512-T4G5KMmqIk6X87gLKWyU5exPpTjLjY5KyrFWaIjv3SvgaIUGXV7UEzGEnZJdTA38/yUS6f9PlKezQ0bYXG3iIQ==
+ dependencies:
+ ajv "^8.0.1"
+ is-boolean-object "^1.1.0"
+ is-number-object "^1.0.4"
+ is-string "^1.0.5"
+ lodash.clonedeep "^4.5.0"
+ lodash.flatten "^4.4.0"
+ lodash.truncate "^4.4.2"
+ slice-ansi "^4.0.0"
+ string-width "^4.2.0"
+
+tapable@^1.0.0, tapable@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
+ integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
-tapable@^0.2.7, tapable@~0.2.5:
- version "0.2.9"
- resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.9.tgz#af2d8bbc9b04f74ee17af2b4d9048f807acd18a8"
- integrity sha512-2wsvQ+4GwBvLPLWsNfLCDYGsW6xb7aeC6utq2Qh0PFwgEy7K7dsma9Jsmb2zSQj7GvYAyUGSntLtsv++GmgL1A==
+tar@^6.0.2:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.0.tgz#d1724e9bcc04b977b18d5c573b333a2207229a83"
+ integrity sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==
+ dependencies:
+ chownr "^2.0.0"
+ fs-minipass "^2.0.0"
+ minipass "^3.0.0"
+ minizlib "^2.1.1"
+ mkdirp "^1.0.3"
+ yallist "^4.0.0"
+
+terser-webpack-plugin@^1.4.3:
+ version "1.4.5"
+ resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b"
+ integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==
+ dependencies:
+ cacache "^12.0.2"
+ find-cache-dir "^2.1.0"
+ is-wsl "^1.1.0"
+ schema-utils "^1.0.0"
+ serialize-javascript "^4.0.0"
+ source-map "^0.6.1"
+ terser "^4.1.2"
+ webpack-sources "^1.4.0"
+ worker-farm "^1.7.0"
-tar@^4:
- version "4.4.10"
- resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.10.tgz#946b2810b9a5e0b26140cf78bea6b0b0d689eba1"
- integrity sha512-g2SVs5QIxvo6OLp0GudTqEf05maawKUxXru104iaayWA09551tFCTI8f1Asb4lPfkBr91k07iL4c11XO3/b0tA==
+terser@^4.1.2:
+ version "4.8.0"
+ resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17"
+ integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==
dependencies:
- chownr "^1.1.1"
- fs-minipass "^1.2.5"
- minipass "^2.3.5"
- minizlib "^1.2.1"
- mkdirp "^0.5.0"
- safe-buffer "^5.1.2"
- yallist "^3.0.3"
+ commander "^2.20.0"
+ source-map "~0.6.1"
+ source-map-support "~0.5.12"
-thunky@^1.0.2:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.3.tgz#f5df732453407b09191dae73e2a8cc73f381a826"
- integrity sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow==
+text-table@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
+ integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
-time-stamp@^2.0.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-2.2.0.tgz#917e0a66905688790ec7bbbde04046259af83f57"
- integrity sha512-zxke8goJQpBeEgD82CXABeMh0LSJcj7CXEd0OHOg45HgcofF7pxNwZm9+RknpxpDhwN4gFpySkApKfFYfRQnUA==
+through2@^2.0.0:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
+ integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==
+ dependencies:
+ readable-stream "~2.3.6"
+ xtend "~4.0.1"
+
+through@^2.3.8:
+ version "2.3.8"
+ resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
+ integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
+
+thunky@^1.0.2:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d"
+ integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==
timers-browserify@^2.0.4:
- version "2.0.10"
- resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae"
- integrity sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==
+ version "2.0.12"
+ resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee"
+ integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==
dependencies:
setimmediate "^1.0.4"
+timsort@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4"
+ integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=
+
to-arraybuffer@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=
-to-fast-properties@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47"
- integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=
+to-fast-properties@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
+ integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
to-object-path@^0.3.0:
version "0.3.0"
@@ -5008,6 +7358,13 @@ to-regex-range@^2.1.0:
is-number "^3.0.0"
repeat-string "^1.6.1"
+to-regex-range@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
+ integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
+ dependencies:
+ is-number "^7.0.0"
+
to-regex@^3.0.1, to-regex@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
@@ -5028,21 +7385,49 @@ toposort@^1.0.0:
resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029"
integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk=
-trim-newlines@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
- integrity sha1-WIeWa7WCpFA6QetST301ARgVphM=
+ts-loader@^8.0.3:
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-8.1.0.tgz#d6292487df279c7cc79b6d3b70bb9d31682b693e"
+ integrity sha512-YiQipGGAFj2zBfqLhp28yUvPP9jUGqHxRzrGYuc82Z2wM27YIHbElXiaZDc93c3x0mz4zvBmS6q/DgExpdj37A==
+ dependencies:
+ chalk "^4.1.0"
+ enhanced-resolve "^4.0.0"
+ loader-utils "^2.0.0"
+ micromatch "^4.0.0"
+ semver "^7.3.4"
-trim-right@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
- integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=
+tslib@^1.9.0, tslib@^1.9.3:
+ version "1.14.1"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
+ integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
tty-browserify@0.0.0:
version "0.0.0"
resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=
+type-check@^0.4.0, type-check@~0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
+ integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
+ dependencies:
+ prelude-ls "^1.2.1"
+
+type-fest@^0.20.2:
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
+ integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
+
+type-fest@^0.21.3:
+ version "0.21.3"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37"
+ integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==
+
+type-fest@^0.8.1:
+ version "0.8.1"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
+ integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
+
type-is@~1.6.17, type-is@~1.6.18:
version "1.6.18"
resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
@@ -5051,6 +7436,16 @@ type-is@~1.6.17, type-is@~1.6.18:
media-typer "0.3.0"
mime-types "~2.1.24"
+typedarray@^0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
+ integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
+
+typescript@^4.0.2:
+ version "4.2.4"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.2.4.tgz#8610b59747de028fda898a8aef0e103f156d0961"
+ integrity sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==
+
uglify-js@3.4.x:
version "3.4.10"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f"
@@ -5059,20 +7454,58 @@ uglify-js@3.4.x:
commander "~2.19.0"
source-map "~0.6.1"
-uglify-js@^2.8.27:
- version "2.8.29"
- resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd"
- integrity sha1-KcVzMUgFe7Th913zW3qcty5qWd0=
+uglify-js@^3.6.0:
+ version "3.13.4"
+ resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.13.4.tgz#592588bb9f47ae03b24916e2471218d914955574"
+ integrity sha512-kv7fCkIXyQIilD5/yQy8O+uagsYIOt5cZvs890W40/e/rvjMSzJw81o9Bg0tkURxzZBROtDQhW2LFjOGoK3RZw==
+
+uglifyjs-webpack-plugin@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-2.2.0.tgz#e75bc80e7f1937f725954c9b4c5a1e967ea9d0d7"
+ integrity sha512-mHSkufBmBuJ+KHQhv5H0MXijtsoA1lynJt1lXOaotja8/I0pR4L9oGaPIZw+bQBOFittXZg9OC1sXSGO9D9ZYg==
dependencies:
- source-map "~0.5.1"
- yargs "~3.10.0"
- optionalDependencies:
- uglify-to-browserify "~1.0.0"
+ cacache "^12.0.2"
+ find-cache-dir "^2.1.0"
+ is-wsl "^1.1.0"
+ schema-utils "^1.0.0"
+ serialize-javascript "^1.7.0"
+ source-map "^0.6.1"
+ uglify-js "^3.6.0"
+ webpack-sources "^1.4.0"
+ worker-farm "^1.7.0"
-uglify-to-browserify@~1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
- integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc=
+unbox-primitive@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471"
+ integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==
+ dependencies:
+ function-bind "^1.1.1"
+ has-bigints "^1.0.1"
+ has-symbols "^1.0.2"
+ which-boxed-primitive "^1.0.2"
+
+unicode-canonical-property-names-ecmascript@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818"
+ integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==
+
+unicode-match-property-ecmascript@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c"
+ integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==
+ dependencies:
+ unicode-canonical-property-names-ecmascript "^1.0.4"
+ unicode-property-aliases-ecmascript "^1.0.4"
+
+unicode-match-property-value-ecmascript@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531"
+ integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==
+
+unicode-property-aliases-ecmascript@^1.0.4:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4"
+ integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==
union-value@^1.0.0:
version "1.0.1"
@@ -5094,11 +7527,35 @@ uniqs@^2.0.0:
resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02"
integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI=
+unique-filename@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230"
+ integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==
+ dependencies:
+ unique-slug "^2.0.0"
+
+unique-slug@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c"
+ integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==
+ dependencies:
+ imurmurhash "^0.1.4"
+
+universalify@^0.1.0:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
+ integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
+
unpipe@1.0.0, unpipe@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
+unquote@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544"
+ integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=
+
unset-value@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
@@ -5108,24 +7565,31 @@ unset-value@^1.0.0:
isobject "^3.0.0"
upath@^1.1.1:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068"
- integrity sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894"
+ integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==
upper-case@^1.1.1:
version "1.1.3"
resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598"
integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=
+uri-js@^4.2.2:
+ version "4.4.1"
+ resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
+ integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
+ dependencies:
+ punycode "^2.1.0"
+
urix@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
-url-parse@^1.1.8, url-parse@^1.4.3:
- version "1.4.7"
- resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278"
- integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==
+url-parse@^1.4.3, url-parse@^1.5.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.1.tgz#d5fa9890af8a5e1f274a2c98376510f6425f6e3b"
+ integrity sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==
dependencies:
querystringify "^2.1.1"
requires-port "^1.0.0"
@@ -5143,11 +7607,29 @@ use@^3.1.0:
resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
-util-deprecate@^1.0.1, util-deprecate@~1.0.1:
+util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
+util.promisify@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030"
+ integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==
+ dependencies:
+ define-properties "^1.1.2"
+ object.getownpropertydescriptors "^2.0.3"
+
+util.promisify@~1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee"
+ integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.17.2"
+ has-symbols "^1.0.1"
+ object.getownpropertydescriptors "^2.1.0"
+
util@0.10.3:
version "0.10.3"
resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
@@ -5162,7 +7644,7 @@ util@^0.11.0:
dependencies:
inherits "2.0.3"
-utila@^0.4.0, utila@~0.4:
+utila@~0.4:
version "0.4.0"
resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c"
integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=
@@ -5172,18 +7654,15 @@ utils-merge@1.0.1:
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
-uuid@^3.0.1:
- version "3.3.2"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"
- integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==
+uuid@^3.3.2, uuid@^3.4.0:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
+ integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
-validate-npm-package-license@^3.0.1:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
- integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
- dependencies:
- spdx-correct "^3.0.0"
- spdx-expression-parse "^3.0.0"
+v8-compile-cache@^2.0.3, v8-compile-cache@^2.1.1:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee"
+ integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==
vary@~1.1.2:
version "1.1.2"
@@ -5191,80 +7670,138 @@ vary@~1.1.2:
integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
vendors@^1.0.0:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.3.tgz#a6467781abd366217c050f8202e7e50cc9eef8c0"
- integrity sha512-fOi47nsJP5Wqefa43kyWSg80qF+Q3XA6MUkgi7Hp1HQaKDQW4cQrK2D0P7mmbFtsV1N89am55Yru/nyEwRubcw==
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e"
+ integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==
vm-browserify@^1.0.1:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.0.tgz#bd76d6a23323e2ca8ffa12028dc04559c75f9019"
- integrity sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw==
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0"
+ integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==
-vue-hot-reload-api@^2.1.0:
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.3.tgz#2756f46cb3258054c5f4723de8ae7e87302a1ccf"
- integrity sha512-KmvZVtmM26BQOMK1rwUZsrqxEGeKiYSZGA7SNWE6uExx8UX/cj9hq2MRV/wWC3Cq6AoeDGk57rL9YMFRel/q+g==
+vue-clickaway@^2.2.2:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/vue-clickaway/-/vue-clickaway-2.2.2.tgz#cecf6839575e8b2afc5d3edb3efb616d293dbb44"
+ integrity sha512-25SpjXKetL06GLYoLoC8pqAV6Cur9cQ//2g35GRFBV4FgoljbZZjTINR8g2NuVXXDMLSUXaKx5dutgO4PaDE7A==
+ dependencies:
+ loose-envify "^1.2.0"
+
+vue-context@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/vue-context/-/vue-context-5.2.0.tgz#d027f626af50e717c2afd57859dec30a851167de"
+ integrity sha512-XH3SwDanAcE7ppzVEkXqpMyzkFKUDp8TDh4vBE9UPbT6OHwLIwtANH6ZAakq8q2iV+hGtDDfwYgX12IbZjyNnw==
+ dependencies:
+ vue-clickaway "^2.2.2"
+
+vue-eslint-parser@^7.0.0:
+ version "7.6.0"
+ resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-7.6.0.tgz#01ea1a2932f581ff244336565d712801f8f72561"
+ integrity sha512-QXxqH8ZevBrtiZMZK0LpwaMfevQi9UL7lY6Kcp+ogWHC88AuwUPwwCIzkOUc1LR4XsYAt/F9yHXAB/QoD17QXA==
+ dependencies:
+ debug "^4.1.1"
+ eslint-scope "^5.0.0"
+ eslint-visitor-keys "^1.1.0"
+ espree "^6.2.1"
+ esquery "^1.4.0"
+ lodash "^4.17.15"
+
+vue-github-button@^1.2.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/vue-github-button/-/vue-github-button-1.3.0.tgz#a4da317a3b93d05824768b3916a0d22fa91603be"
+ integrity sha512-Cc92t+GBLwBPhwtHSvKXjbx07U3+6xdi+eR+s9c734tHbndipCLenJjLVkgErNhKZ0EvDjRyuu8Hu69gg9/TxQ==
+ dependencies:
+ github-buttons "^2.8.0"
+
+vue-github-buttons@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/vue-github-buttons/-/vue-github-buttons-3.1.0.tgz#eaea2ba0b7e0df5a7fd1c61ba37dabf7553dd79a"
+ integrity sha512-x0b9bdhP5xZOD5kQ9+nnCzvKqVyHb4moqN2l06mjYB/k2WRdW5jiAWlneUgoPFwPvcqM40vrTDXVvBrS0MMlEQ==
+ dependencies:
+ format-thousands "^1.1.1"
+ node-fetch "^2.3.0"
+ tslib "^1.9.3"
+
+vue-hot-reload-api@^2.3.0:
+ version "2.3.4"
+ resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz#532955cc1eb208a3d990b3a9f9a70574657e08f2"
+ integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==
-vue-loader@^12.1.0:
- version "12.2.2"
- resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-12.2.2.tgz#2b3a764f27018f975bc78cb8b1f55137548ee2d7"
- integrity sha512-DD+sYaWQ1esYL/tEwJpoEGE/PFUu32fp7iOuMf4Sra3dgxqr4haTOkVam2VY0/5D4LG8eAcB94ruXKeQW2/ikw==
+vue-loader@^15.9.3:
+ version "15.9.6"
+ resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.9.6.tgz#f4bb9ae20c3a8370af3ecf09b8126d38ffdb6b8b"
+ integrity sha512-j0cqiLzwbeImIC6nVIby2o/ABAWhlppyL/m5oJ67R5MloP0hj/DtFgb0Zmq3J9CG7AJ+AXIvHVnJAPBvrLyuDg==
dependencies:
- consolidate "^0.14.0"
+ "@vue/component-compiler-utils" "^3.1.0"
hash-sum "^1.0.2"
- js-beautify "^1.6.3"
loader-utils "^1.1.0"
- lru-cache "^4.0.1"
- postcss "^5.0.21"
- postcss-load-config "^1.1.0"
- postcss-selector-parser "^2.0.0"
- resolve "^1.3.3"
- source-map "^0.5.6"
- vue-hot-reload-api "^2.1.0"
- vue-style-loader "^3.0.0"
- vue-template-es2015-compiler "^1.2.2"
+ vue-hot-reload-api "^2.3.0"
+ vue-style-loader "^4.1.0"
-vue-material@0.8.1:
- version "0.8.1"
- resolved "https://registry.yarnpkg.com/vue-material/-/vue-material-0.8.1.tgz#8f54666f52ef07b546ca0da93fbcd71574c599b2"
- integrity sha512-r7mi6g+VuM/eUvIal4kHRqEzcnK9FIB37QX+9T6ZER66dWOPn+BPs5J1F3k50/QtSovs/qU/dRg1ZhenHU7ISQ==
+vue-material@^1.0.0-beta-11:
+ version "1.0.0-beta-15"
+ resolved "https://registry.yarnpkg.com/vue-material/-/vue-material-1.0.0-beta-15.tgz#949025464f8fe2ff3b9be2ba1365d9eab770ad8a"
+ integrity sha512-nNC1mF1BQNKsyEjRXPYxweYlIOcVE9rK4LeeyppOU6h4vgQnZuNmlGIRnl6fUe8dj+x7c5x5/qydLhJRabPMng==
dependencies:
- vue "^2.4.4"
+ opencollective-postinstall "^2.0.2"
+ vue-github-button "^1.2.0"
+ vue-github-buttons "^3.1.0"
+ vue-toc "0.0.1"
-vue-style-loader@^3.0.0:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/vue-style-loader/-/vue-style-loader-3.1.2.tgz#6b66ad34998fc9520c2f1e4d5fa4091641c1597a"
- integrity sha512-ICtVdK/p+qXWpdSs2alWtsXt9YnDoYjQe0w5616j9+/EhjoxZkbun34uWgsMFnC1MhrMMwaWiImz3K2jK1Yp2Q==
+vue-style-loader@^4.1.0, vue-style-loader@^4.1.2:
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/vue-style-loader/-/vue-style-loader-4.1.3.tgz#6d55863a51fa757ab24e89d9371465072aa7bc35"
+ integrity sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==
dependencies:
hash-sum "^1.0.2"
loader-utils "^1.0.2"
-vue-template-compiler@^2.3.3:
- version "2.6.10"
- resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.10.tgz#323b4f3495f04faa3503337a82f5d6507799c9cc"
- integrity sha512-jVZkw4/I/HT5ZMvRnhv78okGusqe0+qH2A0Em0Cp8aq78+NK9TII263CDVz2QXZsIT+yyV/gZc/j/vlwa+Epyg==
+vue-template-compiler@^2.6.11:
+ version "2.6.12"
+ resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.12.tgz#947ed7196744c8a5285ebe1233fe960437fcc57e"
+ integrity sha512-OzzZ52zS41YUbkCBfdXShQTe69j1gQDZ9HIX8miuC9C3rBCk9wIRjLiZZLrmX9V+Ftq/YEyv1JaVr5Y/hNtByg==
dependencies:
de-indent "^1.0.2"
he "^1.1.0"
-vue-template-es2015-compiler@^1.2.2:
+vue-template-es2015-compiler@^1.9.0:
version "1.9.1"
resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825"
integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==
-vue@^2.3.3, vue@^2.4.4:
- version "2.6.10"
- resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.10.tgz#a72b1a42a4d82a721ea438d1b6bf55e66195c637"
- integrity sha512-ImThpeNU9HbdZL3utgMCq0oiMzAkt1mcgy3/E6zWC/G6AaQoeuFdsl9nDhTDU3X1R6FK7nsIUuRACVcjI+A2GQ==
+vue-toc@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/vue-toc/-/vue-toc-0.0.1.tgz#6a4dfa9c144445679705cd7b991a1a73ac080cc0"
+ integrity sha512-RZfVgLzk/kpEmk05ptvU/+x3TVo4Ai4BBARvV4iCurR9bJsAqnnrqwjEBKnEG+s6NT0yQ6EY0JMGViyOUGysDw==
+ dependencies:
+ vue "^2.6.10"
+
+vue@^2.3.3, vue@^2.6.10:
+ version "2.6.12"
+ resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.12.tgz#f5ebd4fa6bd2869403e29a896aed4904456c9123"
+ integrity sha512-uhmLFETqPPNyuLLbsKz6ioJ4q7AZHzD8ZVFNATNyICSZouqP2Sz0rotWQC8UNBF6VGSCs5abnKJoStA6JbCbfg==
-watchpack@^1.3.1:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00"
- integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==
+vuex@^3.4.0:
+ version "3.6.2"
+ resolved "https://registry.yarnpkg.com/vuex/-/vuex-3.6.2.tgz#236bc086a870c3ae79946f107f16de59d5895e71"
+ integrity sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw==
+
+watchpack-chokidar2@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957"
+ integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==
+ dependencies:
+ chokidar "^2.1.8"
+
+watchpack@^1.7.4:
+ version "1.7.5"
+ resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453"
+ integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==
dependencies:
- chokidar "^2.0.2"
graceful-fs "^4.1.2"
neo-async "^2.5.0"
+ optionalDependencies:
+ chokidar "^3.4.1"
+ watchpack-chokidar2 "^2.0.1"
wbuf@^1.1.0, wbuf@^1.7.3:
version "1.7.3"
@@ -5273,198 +7810,300 @@ wbuf@^1.1.0, wbuf@^1.7.3:
dependencies:
minimalistic-assert "^1.0.0"
-webpack-dev-middleware@1.12.2:
- version "1.12.2"
- resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz#f8fc1120ce3b4fc5680ceecb43d777966b21105e"
- integrity sha512-FCrqPy1yy/sN6U/SaEZcHKRXGlqU0DUaEBL45jkUYoB8foVb6wCnbIJ1HKIx+qUFTW+3JpVcCJCxZ8VATL4e+A==
- dependencies:
- memory-fs "~0.4.1"
- mime "^1.5.0"
- path-is-absolute "^1.0.0"
- range-parser "^1.0.3"
- time-stamp "^2.0.0"
+webpack-cli@^3.3.12:
+ version "3.3.12"
+ resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.12.tgz#94e9ada081453cd0aa609c99e500012fd3ad2d4a"
+ integrity sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag==
+ dependencies:
+ chalk "^2.4.2"
+ cross-spawn "^6.0.5"
+ enhanced-resolve "^4.1.1"
+ findup-sync "^3.0.0"
+ global-modules "^2.0.0"
+ import-local "^2.0.0"
+ interpret "^1.4.0"
+ loader-utils "^1.4.0"
+ supports-color "^6.1.0"
+ v8-compile-cache "^2.1.1"
+ yargs "^13.3.2"
+
+webpack-dev-middleware@^3.7.2:
+ version "3.7.3"
+ resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz#0639372b143262e2b84ab95d3b91a7597061c2c5"
+ integrity sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==
+ dependencies:
+ memory-fs "^0.4.1"
+ mime "^2.4.4"
+ mkdirp "^0.5.1"
+ range-parser "^1.2.1"
+ webpack-log "^2.0.0"
-webpack-dev-server@^2.4.5:
- version "2.11.5"
- resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.11.5.tgz#416fbdea0e04eebe44a626e791d5a2eb37fe8c48"
- integrity sha512-7TdOKKt7G3sWEhPKV0zP+nD0c4V9YKUJ3wDdBwQsZNo58oZIRoVIu66pg7PYkBW8A74msP9C2kLwmxGHndz/pw==
+webpack-dev-server@^3.11.0:
+ version "3.11.2"
+ resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz#695ebced76a4929f0d5de7fd73fafe185fe33708"
+ integrity sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ==
dependencies:
ansi-html "0.0.7"
- array-includes "^3.0.3"
bonjour "^3.5.0"
- chokidar "^2.1.2"
- compression "^1.7.3"
- connect-history-api-fallback "^1.3.0"
- debug "^3.1.0"
- del "^3.0.0"
- express "^4.16.2"
- html-entities "^1.2.0"
- http-proxy-middleware "^0.19.1"
- import-local "^1.0.0"
- internal-ip "1.2.0"
+ chokidar "^2.1.8"
+ compression "^1.7.4"
+ connect-history-api-fallback "^1.6.0"
+ debug "^4.1.1"
+ del "^4.1.1"
+ express "^4.17.1"
+ html-entities "^1.3.1"
+ http-proxy-middleware "0.19.1"
+ import-local "^2.0.0"
+ internal-ip "^4.3.0"
ip "^1.1.5"
- killable "^1.0.0"
- loglevel "^1.4.1"
- opn "^5.1.0"
- portfinder "^1.0.9"
- selfsigned "^1.9.1"
+ is-absolute-url "^3.0.3"
+ killable "^1.0.1"
+ loglevel "^1.6.8"
+ opn "^5.5.0"
+ p-retry "^3.0.1"
+ portfinder "^1.0.26"
+ schema-utils "^1.0.0"
+ selfsigned "^1.10.8"
+ semver "^6.3.0"
serve-index "^1.9.1"
- sockjs "0.3.19"
- sockjs-client "1.1.5"
- spdy "^4.0.0"
- strip-ansi "^3.0.0"
- supports-color "^5.1.0"
- webpack-dev-middleware "1.12.2"
- yargs "6.6.0"
+ sockjs "^0.3.21"
+ sockjs-client "^1.5.0"
+ spdy "^4.0.2"
+ strip-ansi "^3.0.1"
+ supports-color "^6.1.0"
+ url "^0.11.0"
+ webpack-dev-middleware "^3.7.2"
+ webpack-log "^2.0.0"
+ ws "^6.2.1"
+ yargs "^13.3.2"
-webpack-sources@^1.0.1:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz#2a28dcb9f1f45fe960d8f1493252b5ee6530fa85"
- integrity sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==
+webpack-log@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f"
+ integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==
+ dependencies:
+ ansi-colors "^3.0.0"
+ uuid "^3.3.2"
+
+webpack-log@^3.0.1:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-3.0.2.tgz#edf64fe4cabffeb04a03ca44d89f9908a4a9d238"
+ integrity sha512-ijm2zgqTY2omtlxRNrtDqxAQOrfAGMxWg9fQB/kuFSeZjx/OkYnfYLqsjf/JkrWOHINMzqxaJDXaog6Mx9KaHg==
+ dependencies:
+ chalk "^2.4.2"
+ loglevelnext "^3.0.1"
+ nanoid "^2.0.3"
+
+webpack-merge@^5.0.9:
+ version "5.7.3"
+ resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.7.3.tgz#2a0754e1877a25a8bbab3d2475ca70a052708213"
+ integrity sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA==
+ dependencies:
+ clone-deep "^4.0.1"
+ wildcard "^2.0.0"
+
+webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3:
+ version "1.4.3"
+ resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933"
+ integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==
dependencies:
source-list-map "^2.0.0"
source-map "~0.6.1"
-webpack@^2.6.1:
- version "2.7.0"
- resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.7.0.tgz#b2a1226804373ffd3d03ea9c6bd525067034f6b1"
- integrity sha512-MjAA0ZqO1ba7ZQJRnoCdbM56mmFpipOPUv/vQpwwfSI42p5PVDdoiuK2AL2FwFUVgT859Jr43bFZXRg/LNsqvg==
- dependencies:
- acorn "^5.0.0"
- acorn-dynamic-import "^2.0.0"
- ajv "^4.7.0"
- ajv-keywords "^1.1.1"
- async "^2.1.2"
- enhanced-resolve "^3.3.0"
- interpret "^1.0.0"
- json-loader "^0.5.4"
- json5 "^0.5.1"
- loader-runner "^2.3.0"
- loader-utils "^0.2.16"
- memory-fs "~0.4.1"
- mkdirp "~0.5.0"
- node-libs-browser "^2.0.0"
- source-map "^0.5.3"
- supports-color "^3.1.0"
- tapable "~0.2.5"
- uglify-js "^2.8.27"
- watchpack "^1.3.1"
- webpack-sources "^1.0.1"
- yargs "^6.0.0"
-
-websocket-driver@>=0.5.1:
- version "0.7.3"
- resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.3.tgz#a2d4e0d4f4f116f1e6297eba58b05d430100e9f9"
- integrity sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==
- dependencies:
- http-parser-js ">=0.4.0 <0.4.11"
+webpack@^4.43.0:
+ version "4.46.0"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542"
+ integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/helper-module-context" "1.9.0"
+ "@webassemblyjs/wasm-edit" "1.9.0"
+ "@webassemblyjs/wasm-parser" "1.9.0"
+ acorn "^6.4.1"
+ ajv "^6.10.2"
+ ajv-keywords "^3.4.1"
+ chrome-trace-event "^1.0.2"
+ enhanced-resolve "^4.5.0"
+ eslint-scope "^4.0.3"
+ json-parse-better-errors "^1.0.2"
+ loader-runner "^2.4.0"
+ loader-utils "^1.2.3"
+ memory-fs "^0.4.1"
+ micromatch "^3.1.10"
+ mkdirp "^0.5.3"
+ neo-async "^2.6.1"
+ node-libs-browser "^2.2.1"
+ schema-utils "^1.0.0"
+ tapable "^1.1.3"
+ terser-webpack-plugin "^1.4.3"
+ watchpack "^1.7.4"
+ webpack-sources "^1.4.1"
+
+websocket-driver@>=0.5.1, websocket-driver@^0.7.4:
+ version "0.7.4"
+ resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760"
+ integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==
+ dependencies:
+ http-parser-js ">=0.5.1"
safe-buffer ">=5.1.0"
websocket-extensions ">=0.1.1"
websocket-extensions@>=0.1.1:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29"
- integrity sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42"
+ integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==
+
+whatwg-mimetype@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf"
+ integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==
-whet.extend@~0.9.9:
- version "0.9.9"
- resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1"
- integrity sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=
+which-boxed-primitive@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6"
+ integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==
+ dependencies:
+ is-bigint "^1.0.1"
+ is-boolean-object "^1.1.0"
+ is-number-object "^1.0.4"
+ is-string "^1.0.5"
+ is-symbol "^1.0.3"
+
+which-module@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
+ integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
-which-module@^1.0.0:
+which-pm-runs@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f"
- integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=
+ resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb"
+ integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=
-which@^1.2.9:
+which@^1.2.14, which@^1.2.9, which@^1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
dependencies:
isexe "^2.0.0"
-wide-align@^1.1.0:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
- integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==
+which@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
+ integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
dependencies:
- string-width "^1.0.2 || 2"
+ isexe "^2.0.0"
-window-size@0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
- integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=
+wildcard@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec"
+ integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==
-wordwrap@0.0.2:
- version "0.0.2"
- resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
- integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=
+word-wrap@^1.2.3:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
+ integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
-wrap-ansi@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
- integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=
+worker-farm@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8"
+ integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==
dependencies:
- string-width "^1.0.1"
- strip-ansi "^3.0.1"
+ errno "~0.1.7"
+
+wrap-ansi@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09"
+ integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==
+ dependencies:
+ ansi-styles "^3.2.0"
+ string-width "^3.0.0"
+ strip-ansi "^5.0.0"
+
+wrap-ansi@^6.2.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53"
+ integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
+wrap-ansi@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
+ integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
wrappy@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
-xtend@^4.0.0:
+ws@^6.2.1:
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb"
+ integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==
+ dependencies:
+ async-limiter "~1.0.0"
+
+xtend@^4.0.0, xtend@~4.0.1:
version "4.0.2"
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
-y18n@^3.2.1:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
- integrity sha1-bRX7qITAhnnA136I53WegR4H+kE=
+y18n@^4.0.0:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf"
+ integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==
yallist@^2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
-yallist@^3.0.0, yallist@^3.0.3:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9"
- integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==
+yallist@^3.0.2:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
+ integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
-yargs-parser@^4.2.0:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c"
- integrity sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=
- dependencies:
- camelcase "^3.0.0"
-
-yargs@6.6.0, yargs@^6.0.0:
- version "6.6.0"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208"
- integrity sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=
- dependencies:
- camelcase "^3.0.0"
- cliui "^3.2.0"
- decamelize "^1.1.1"
- get-caller-file "^1.0.1"
- os-locale "^1.4.0"
- read-pkg-up "^1.0.1"
+yallist@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
+ integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
+
+yaml@^1.10.0:
+ version "1.10.2"
+ resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
+ integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
+
+yargs-parser@^13.1.2:
+ version "13.1.2"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38"
+ integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==
+ dependencies:
+ camelcase "^5.0.0"
+ decamelize "^1.2.0"
+
+yargs@^13.3.2:
+ version "13.3.2"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd"
+ integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==
+ dependencies:
+ cliui "^5.0.0"
+ find-up "^3.0.0"
+ get-caller-file "^2.0.1"
require-directory "^2.1.1"
- require-main-filename "^1.0.1"
+ require-main-filename "^2.0.0"
set-blocking "^2.0.0"
- string-width "^1.0.2"
- which-module "^1.0.0"
- y18n "^3.2.1"
- yargs-parser "^4.2.0"
-
-yargs@~3.10.0:
- version "3.10.0"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"
- integrity sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=
- dependencies:
- camelcase "^1.0.2"
- cliui "^2.1.0"
- decamelize "^1.0.0"
- window-size "0.1.0"
+ string-width "^3.0.0"
+ which-module "^2.0.0"
+ y18n "^4.0.0"
+ yargs-parser "^13.1.2"
+
+yocto-queue@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
+ integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
diff --git a/vendor_snapshot/update.py b/vendor_snapshot/update.py
index 5697fe239..9a4bb26a1 100644
--- a/vendor_snapshot/update.py
+++ b/vendor_snapshot/update.py
@@ -14,7 +14,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
-"""Installs vendor snapshot under prebuilts/vendor/v{version}."""
+"""Unzips and installs the vendor snapshot."""
import argparse
import glob
@@ -30,33 +30,38 @@ import json
INDENT = ' ' * 4
+
def get_notice_path(module_name):
- return os.path.join('NOTICE_FILES', module_name+'.txt')
+ return os.path.join('NOTICE_FILES', module_name + '.txt')
+
def get_target_arch(json_rel_path):
return json_rel_path.split('/')[0]
+
def get_arch(json_rel_path):
return json_rel_path.split('/')[1].split('-')[1]
+
def get_variation(json_rel_path):
return json_rel_path.split('/')[2]
# convert .bp prop dictionary to .bp prop string
def gen_bp_prop(prop, ind):
bp = ''
- for key in prop:
+ for key in sorted(prop):
val = prop[key]
# Skip empty list or dict, rather than printing empty prop like
# "key: []," or "key: {},"
- if type(val) == list or type(val) == dict:
- if len(val) == 0:
- continue
+ if type(val) == list and len(val) == 0:
+ continue
+ if type(val) == dict and gen_bp_prop(val, '') == '':
+ continue
- bp += ind + key + ": "
+ bp += ind + key + ': '
if type(val) == bool:
- bp += "true,\n" if val else "false,\n"
+ bp += 'true,\n' if val else 'false,\n'
elif type(val) == str:
bp += '"%s",\n' % val
elif type(val) == list:
@@ -72,6 +77,7 @@ def gen_bp_prop(prop, ind):
raise TypeError('unsupported type %s for gen_bp_prop' % type(val))
return bp
+
# Remove non-existent dirs from given list. Emits warning for such dirs.
def remove_invalid_dirs(paths, bp_dir, module_name):
ret = []
@@ -79,26 +85,44 @@ def remove_invalid_dirs(paths, bp_dir, module_name):
if os.path.isdir(os.path.join(bp_dir, path)):
ret.append(path)
else:
- logging.warning(
- 'Dir "%s" of module "%s" does not exist' % (path, module_name))
+ logging.warning('Dir "%s" of module "%s" does not exist', path,
+ module_name)
return ret
+
JSON_TO_BP = {
- 'ModuleName': 'name',
+ 'ModuleName': 'name',
'RelativeInstallPath': 'relative_install_path',
- 'ExportedDirs': 'export_include_dirs',
- 'ExportedSystemDirs': 'export_system_include_dirs',
- 'ExportedFlags': 'export_flags',
- 'SanitizeMinimalDep': 'sanitize_minimal_dep',
- 'SanitizeUbsanDep': 'sanitize_ubsan_dep',
- 'Symlinks': 'symlinks',
- 'InitRc': 'init_rc',
- 'VintfFragments': 'vintf_fragments',
- 'SharedLibs': 'shared_libs',
- 'RuntimeLibs': 'runtime_libs',
- 'Required': 'required',
+ 'ExportedDirs': 'export_include_dirs',
+ 'ExportedSystemDirs': 'export_system_include_dirs',
+ 'ExportedFlags': 'export_flags',
+ 'Sanitize': 'sanitize',
+ 'SanitizeMinimalDep': 'sanitize_minimal_dep',
+ 'SanitizeUbsanDep': 'sanitize_ubsan_dep',
+ 'Symlinks': 'symlinks',
+ 'InitRc': 'init_rc',
+ 'VintfFragments': 'vintf_fragments',
+ 'SharedLibs': 'shared_libs',
+ 'RuntimeLibs': 'runtime_libs',
+ 'Required': 'required',
+}
+
+SANITIZER_VARIANT_PROPS = {
+ 'export_include_dirs',
+ 'export_system_include_dirs',
+ 'export_flags',
+ 'sanitize_minimal_dep',
+ 'sanitize_ubsan_dep',
+ 'src',
+}
+
+EXPORTED_FLAGS_PROPS = {
+ 'export_include_dirs',
+ 'export_system_include_dirs',
+ 'export_flags',
}
+
# Converts parsed json dictionary (which is intermediate) to Android.bp prop
# dictionary. This validates paths such as include directories and init_rc
# files while converting.
@@ -121,20 +145,49 @@ def convert_json_to_bp_prop(json_path, bp_dir):
if key in JSON_TO_BP:
ret[JSON_TO_BP[key]] = prop[key]
else:
- logging.warning(
- 'Unknown prop "%s" of module "%s"' % (key, module_name))
+ logging.warning('Unknown prop "%s" of module "%s"', key,
+ module_name)
return ret
-def gen_bp_module(variation, name, version, target_arch, arch_props, bp_dir):
+def is_64bit_arch(arch):
+ return '64' in arch # arm64, x86_64
+
+def remove_keys_from_dict(keys, d):
+ # May contain subdictionaries (e.g. cfi), so recursively erase
+ for k in list(d.keys()):
+ if k in keys:
+ del d[k]
+ elif type(d[k]) == dict:
+ remove_keys_from_dict(keys, d[k])
+
+def reexport_vndk_header(name, arch_props):
+ remove_keys_from_dict(EXPORTED_FLAGS_PROPS, arch_props)
+ for arch in arch_props:
+ arch_props[arch]['shared_libs'] = [name]
+ arch_props[arch]['export_shared_lib_headers'] = [name]
+
+def gen_bp_module(image, variation, name, version, target_arch, vndk_list, arch_props, bp_dir):
+ # Generate Android.bp module for given snapshot.
+ # If a vndk library with the same name exists, reuses exported flags of the vndk library,
+ # instead of the snapshot's own flags.
prop = {
# These three are common for all snapshot modules.
'version': str(version),
'target_arch': target_arch,
- 'vendor': True,
+ image: True,
'arch': {},
}
+ reexport_vndk_name = name
+ if reexport_vndk_name == "libc++_static":
+ reexport_vndk_name = "libc++"
+
+ if reexport_vndk_name in vndk_list:
+ if variation == 'shared':
+ logging.error("Module %s is both vendor snapshot shared and vndk" % name)
+ reexport_vndk_header(reexport_vndk_name, arch_props)
+
# Factor out common prop among architectures to minimize Android.bp.
common_prop = None
for arch in arch_props:
@@ -144,55 +197,134 @@ def gen_bp_module(variation, name, version, target_arch, arch_props, bp_dir):
common_prop[k] = arch_props[arch][k]
continue
for k in list(common_prop.keys()):
- if not k in arch_props[arch] or common_prop[k] != arch_props[arch][k]:
+ if k not in arch_props[arch] or common_prop[k] != arch_props[arch][k]:
del common_prop[k]
- # Forcing src to be arch_props prevents 32-bit only modules to be used as
- # 64-bit modules, and vice versa.
- if 'src' in common_prop:
- del common_prop['src']
+ # Some keys has to be arch_props to prevent 32-bit only modules from being
+ # used as 64-bit modules, and vice versa.
+ for arch_prop_key in ['src', 'cfi']:
+ if arch_prop_key in common_prop:
+ del common_prop[arch_prop_key]
prop.update(common_prop)
+ has32 = has64 = False
+ stem32 = stem64 = ''
+
for arch in arch_props:
for k in common_prop:
if k in arch_props[arch]:
del arch_props[arch][k]
prop['arch'][arch] = arch_props[arch]
- bp = 'vendor_snapshot_%s {\n' % variation
+ has64 |= is_64bit_arch(arch)
+ has32 |= not is_64bit_arch(arch)
+
+ # Record stem for snapshots.
+ # We don't check existence of 'src'; src must exist for executables
+ if variation == 'binary':
+ if is_64bit_arch(arch):
+ stem64 = os.path.basename(arch_props[arch]['src'])
+ else:
+ stem32 = os.path.basename(arch_props[arch]['src'])
+
+ # header snapshots doesn't need compile_multilib. The other snapshots,
+ # shared/static/object/binary snapshots, do need them
+ if variation != 'header':
+ if has32 and has64:
+ prop['compile_multilib'] = 'both'
+ elif has32:
+ prop['compile_multilib'] = '32'
+ elif has64:
+ prop['compile_multilib'] = '64'
+ else:
+ raise RuntimeError("Module %s doesn't have prebuilts." % name)
+
+ # For binary snapshots, prefer 64bit if their stem collide and installing
+ # both is impossible
+ if variation == 'binary' and stem32 == stem64:
+ prop['compile_multilib'] = 'first'
+
+ bp = '%s_snapshot_%s {\n' % (image, variation)
bp += gen_bp_prop(prop, INDENT)
bp += '}\n\n'
return bp
-def get_args():
- parser = argparse.ArgumentParser()
- parser.add_argument(
- 'snapshot_version',
- type=int,
- help='Vendor snapshot version to install, e.g. "30".')
- parser.add_argument(
- '-v',
- '--verbose',
- action='count',
- default=0,
- help='Increase output verbosity, e.g. "-v", "-vv".')
- return parser.parse_args()
+def get_vndk_list(vndk_dir, target_arch):
+ """Generates vndk_libs list, e.g. ['libbase', 'libc++', ...]
+ This list is retrieved from vndk_dir/target_arch/configs/module_names.txt.
+ If it doesn't exist, print an error message and return an empty list.
+ """
+
+ module_names_path = os.path.join(vndk_dir, target_arch, 'configs/module_names.txt')
+
+ try:
+ with open(module_names_path, 'r') as f:
+ """The format of module_names.txt is a list of "{so_name} {module_name}", e.g.
+
+ lib1.so lib1
+ lib2.so lib2
+ ...
+
+ We extract the module name part.
+ """
+ return [l.split()[1] for l in f.read().strip('\n').split('\n')]
+ except IOError as e:
+ logging.error('Failed to read %s: %s' % (module_names_path, e.strerror))
+ except IndexError as e:
+ logging.error('Failed to parse %s: invalid format' % module_names_path)
+
+ return []
+
+def gen_bp_list_module(image, snapshot_version, vndk_list, target_arch, arch_props):
+ """Generates a {image}_snapshot module which contains lists of snapshots.
+ For vendor snapshot, vndk list is also included, extracted from vndk_dir.
+ """
+
+ bp = '%s_snapshot {\n' % image
+
+ bp_props = dict()
+ bp_props['name'] = '%s_snapshot' % image
+ bp_props['version'] = str(snapshot_version)
+ if image == 'vendor':
+ bp_props['vndk_libs'] = vndk_list
+
+ variant_to_property = {
+ 'shared': 'shared_libs',
+ 'static': 'static_libs',
+ 'header': 'header_libs',
+ 'binary': 'binaries',
+ 'object': 'objects',
+ }
-def main():
- """Program entry point."""
- args = get_args()
- verbose_map = (logging.WARNING, logging.INFO, logging.DEBUG)
- verbosity = min(args.verbose, 2)
- logging.basicConfig(
- format='%(levelname)-8s [%(filename)s:%(lineno)d] %(message)s',
- level=verbose_map[verbosity])
- install_dir = os.path.join('prebuilts', 'vendor', 'v'+str(args.snapshot_version))
+ # arch_bp_prop[arch][variant_prop] = list
+ # e.g. arch_bp_prop['x86']['shared_libs'] == ['libfoo', 'libbar', ...]
+ arch_bp_prop = dict()
+
+ # Gather module lists per arch.
+ # arch_props structure: arch_props[variant][module_name][arch]
+ # e.g. arch_props['shared']['libc++']['x86']
+ for variant in arch_props:
+ variant_name = variant_to_property[variant]
+ for name in arch_props[variant]:
+ for arch in arch_props[variant][name]:
+ if arch not in arch_bp_prop:
+ arch_bp_prop[arch] = dict()
+ if variant_name not in arch_bp_prop[arch]:
+ arch_bp_prop[arch][variant_name] = []
+ arch_bp_prop[arch][variant_name].append(name)
+
+ bp_props['arch'] = arch_bp_prop
+ bp += gen_bp_prop(bp_props, INDENT)
+ bp += '}\n\n'
+ return bp
+
+def build_props(install_dir):
# props[target_arch]["static"|"shared"|"binary"|"header"][name][arch] : json
props = dict()
# {target_arch}/{arch}/{variation}/{module}.json
- for root, _, files in os.walk(install_dir):
+ for root, _, files in os.walk(install_dir, followlinks = True):
for file_name in sorted(files):
if not file_name.endswith('.json'):
continue
@@ -216,33 +348,502 @@ def main():
if variation != 'header':
prop['src'] = os.path.relpath(
- rel_path[:-5], # removing .json
+ rel_path[:-5], # removing .json
target_arch)
module_name = prop['name']
- notice_path = 'NOTICE_FILES/' + module_name + ".txt"
+
+ # Is this sanitized variant?
+ if 'sanitize' in prop:
+ sanitizer_type = prop['sanitize']
+ # module_name is {name}.{sanitizer_type}; trim sanitizer_type
+ module_name = module_name[:-len(sanitizer_type) - 1]
+ # Only leave props for the sanitize variant
+ for k in list(prop.keys()):
+ if not k in SANITIZER_VARIANT_PROPS:
+ del prop[k]
+ prop = {'name': module_name, sanitizer_type: prop}
+
+ notice_path = 'NOTICE_FILES/' + module_name + '.txt'
if os.path.exists(os.path.join(bp_dir, notice_path)):
prop['notice'] = notice_path
variation_dict = props[target_arch][variation]
if not module_name in variation_dict:
variation_dict[module_name] = dict()
- variation_dict[module_name][arch] = prop
+ if not arch in variation_dict[module_name]:
+ variation_dict[module_name][arch] = prop
+ else:
+ variation_dict[module_name][arch].update(prop)
+
+ return props
+
- for target_arch in props:
+def gen_bp_files(image, vndk_dir, install_dir, snapshot_version):
+ """Generates Android.bp for each archtecture.
+ Android.bp will contain a {image}_snapshot module having lists of VNDK and
+ vendor snapshot libraries, and {image}_snapshot_{variant} modules which are
+ prebuilt libraries of the snapshot.
+
+ Args:
+ image: string, name of partition (e.g. 'vendor', 'recovery')
+ vndk_dir: string, directory to which vndk snapshot is installed
+ install_dir: string, directory to which the snapshot will be installed
+ snapshot_version: int, version of the snapshot
+ """
+ props = build_props(install_dir)
+
+ for target_arch in sorted(props):
androidbp = ''
bp_dir = os.path.join(install_dir, target_arch)
- for variation in props[target_arch]:
- for name in props[target_arch][variation]:
- androidbp += gen_bp_module(
+ vndk_list = []
+ if image == 'vendor':
+ vndk_list = get_vndk_list(vndk_dir, target_arch)
+
+ # Generate snapshot modules.
+ for variation in sorted(props[target_arch]):
+ for name in sorted(props[target_arch][variation]):
+ androidbp += gen_bp_module(image, variation, name,
+ snapshot_version, target_arch,
+ vndk_list,
+ props[target_arch][variation][name],
+ bp_dir)
+
+ # Generate {image}_snapshot module which contains the list of modules.
+ androidbp += gen_bp_list_module(image, snapshot_version, vndk_list,
+ target_arch, props[target_arch])
+ with open(os.path.join(bp_dir, 'Android.bp'), 'w') as f:
+ logging.info('Generating Android.bp to: {}'.format(f.name))
+ f.write(androidbp)
+
+
+def find_all_installed_files(install_dir):
+ installed_files = dict()
+ for root, _, files in os.walk(install_dir, followlinks = True):
+ for file_name in sorted(files):
+ if file_name.endswith('.json'):
+ continue
+ if file_name.endswith('Android.bp'):
+ continue
+ full_path = os.path.join(root, file_name)
+ size = os.stat(full_path).st_size
+ installed_files[full_path] = size
+
+ logging.debug('')
+ for f in sorted(installed_files.keys()):
+ logging.debug(f)
+ logging.debug('')
+ logging.debug('found {} installed files'.format(len(installed_files)))
+ logging.debug('')
+ return installed_files
+
+
+def find_files_in_props(target_arch, arch_install_dir, variation, name, props, file_to_info):
+ logging.debug('{} {} {} {} {}'.format(
+ target_arch, arch_install_dir, variation, name, props))
+
+ def add_info(file, name, variation, arch, is_cfi, is_header):
+ info = (name, variation, arch, is_cfi, is_header)
+ info_list = file_to_info.get(file)
+ if not info_list:
+ info_list = []
+ file_to_info[file] = info_list
+ info_list.append(info)
+
+ def find_file_in_list(dict, key, is_cfi):
+ list = dict.get(key)
+ logging.debug(' {} {}'.format(key, list))
+ if list:
+ for item in list:
+ item_path = os.path.join(arch_install_dir, item)
+ add_info(item_path, name, variation, arch, is_cfi, False)
+
+ def find_file_in_dirs(dict, key, is_cfi, is_header):
+ dirs = dict.get(key)
+ logging.debug(' {} {}'.format(key, dirs))
+ if dirs:
+ for dir in dirs:
+ dir_path = os.path.join(arch_install_dir, dir)
+ logging.debug(' scanning {}'.format(dir_path))
+ for root, _, files in os.walk(dir_path, followlinks = True):
+ for file_name in sorted(files):
+ item_path = os.path.join(root, file_name)
+ add_info(item_path, name, variation, arch, is_cfi, is_header)
+
+ def find_file_in_dict(dict, is_cfi):
+ logging.debug(' arch {}'.format(arch))
+ logging.debug(' name {}'.format( name))
+ logging.debug(' is_cfi {}'.format(is_cfi))
+
+ src = dict.get('src')
+ logging.debug(' src {}'.format(src))
+ if src:
+ src_path = os.path.join(arch_install_dir, src)
+ add_info(src_path, name, variation, arch, is_cfi, False)
+
+ notice = dict.get('notice')
+ logging.debug(' notice {}'.format(notice))
+ if notice:
+ notice_path = os.path.join(arch_install_dir, notice)
+ add_info(notice_path, name, variation, arch, is_cfi, False)
+
+ find_file_in_list(dict, 'init_rc', is_cfi)
+ find_file_in_list(dict, 'vintf_fragments', is_cfi)
+
+ find_file_in_dirs(dict, 'export_include_dirs', is_cfi, True)
+ find_file_in_dirs(dict, 'export_system_include_dirs', is_cfi, True)
+
+ for arch in sorted(props):
+ name = props[arch]['name']
+ find_file_in_dict(props[arch], False)
+ cfi = props[arch].get('cfi')
+ if cfi:
+ find_file_in_dict(cfi, True)
+
+
+def find_all_props_files(install_dir):
+
+ # This function builds a database of filename to module. This means that we
+ # need to dive into the json to find the files that the vendor snapshot
+ # provides, and link these back to modules that provide them.
+
+ file_to_info = dict()
+
+ props = build_props(install_dir)
+ for target_arch in sorted(props):
+ arch_install_dir = os.path.join(install_dir, target_arch)
+ for variation in sorted(props[target_arch]):
+ for name in sorted(props[target_arch][variation]):
+ find_files_in_props(
+ target_arch,
+ arch_install_dir,
variation,
name,
- args.snapshot_version,
- target_arch,
props[target_arch][variation][name],
- bp_dir)
- with open(os.path.join(bp_dir, 'Android.bp'), 'w') as f:
- f.write(androidbp)
+ file_to_info)
+
+ logging.debug('')
+ for f in sorted(file_to_info.keys()):
+ logging.debug(f)
+ logging.debug('')
+ logging.debug('found {} props files'.format(len(file_to_info)))
+ logging.debug('')
+ return file_to_info
+
+
+def get_ninja_inputs(ninja_binary, ninja_build_file, modules):
+ """Returns the set of input file path strings for the given modules.
+
+ Uses the `ninja -t inputs` tool.
+
+ Args:
+ ninja_binary: The path to a ninja binary.
+ ninja_build_file: The path to a .ninja file from a build.
+ modules: The list of modules to scan for inputs.
+ """
+ inputs = set()
+ cmd = [
+ ninja_binary,
+ "-f",
+ ninja_build_file,
+ "-t",
+ "inputs",
+ "-d",
+ ] + list(modules)
+ logging.debug('invoke ninja {}'.format(cmd))
+ inputs = inputs.union(set(
+ subprocess.check_output(cmd).decode().strip("\n").split("\n")))
+
+ return inputs
+
+
+def check_module_usage(install_dir, ninja_binary, image, ninja_file, goals,
+ output):
+ all_installed_files = find_all_installed_files(install_dir)
+ all_props_files = find_all_props_files(install_dir)
+
+ ninja_inputs = get_ninja_inputs(ninja_binary, ninja_file, goals)
+ logging.debug('')
+ logging.debug('ninja inputs')
+ for ni in ninja_inputs:
+ logging.debug(ni)
+
+ logging.debug('found {} ninja_inputs for goals {}'.format(
+ len(ninja_inputs), goals))
+
+ # Intersect the file_to_info dict with the ninja_inputs to determine
+ # which items from the vendor snapshot are actually used by the goals.
+
+ total_size = 0
+ used_size = 0
+ used_file_to_info = dict()
+
+ for file, size in all_installed_files.items():
+ total_size += size
+ if file in ninja_inputs:
+ logging.debug('used: {}'.format(file))
+ used_size += size
+ info = all_props_files.get(file)
+
+ if info:
+ used_file_to_info[file] = info
+ else:
+ logging.warning('No info for file {}'.format(file))
+ used_file_to_info[file] = 'no info'
+
+ logging.debug('Total size {}'.format(total_size))
+ logging.debug('Used size {}'.format(used_size))
+ logging.debug('')
+ logging.debug('used items')
+
+ used_modules = set()
+
+ for f, i in sorted(used_file_to_info.items()):
+ logging.debug('{} {}'.format(f, i))
+ for m in i:
+ (name, variation, arch, is_cfi, is_header) = m
+ if not is_header:
+ used_modules.add(name)
+
+ with open(output, 'w') as f:
+ f.write('%s_SNAPSHOT_MODULES := \\\n' % image.upper())
+ for m in sorted(used_modules):
+ f.write(' %s \\\n' % m)
+
+def check_call(cmd):
+ logging.debug('Running `{}`'.format(' '.join(cmd)))
+ subprocess.check_call(cmd)
+
+
+def fetch_artifact(branch, build, target, pattern, destination):
+ """Fetches build artifacts from Android Build server.
+
+ Args:
+ branch: string, branch to pull build artifacts from
+ build: string, build number to pull build artifacts from
+ target: string, target name to pull build artifacts from
+ pattern: string, pattern of build artifact file name
+ destination: string, destination to pull build artifact to
+ """
+ fetch_artifact_path = '/google/data/ro/projects/android/fetch_artifact'
+ cmd = [
+ fetch_artifact_path, '--branch', branch, '--target', target, '--bid',
+ build, pattern, destination
+ ]
+ check_call(cmd)
+
+def install_artifacts(image, branch, build, target, local_dir, symlink,
+ install_dir):
+ """Installs vendor snapshot build artifacts to {install_dir}/v{version}.
+
+ 1) Fetch build artifacts from Android Build server or from local_dir
+ 2) Unzip or create symlinks to build artifacts
+
+ Args:
+ image: string, img file for which the snapshot was created (vendor,
+ recovery, etc.)
+ branch: string or None, branch name of build artifacts
+ build: string or None, build number of build artifacts
+ target: string or None, target name of build artifacts
+ local_dir: string or None, local dir to pull artifacts from
+ symlink: boolean, whether to use symlinks instead of unzipping the
+ vendor snapshot zip
+ install_dir: string, directory to install vendor snapshot
+ temp_artifact_dir: string, temp directory to hold build artifacts fetched
+ from Android Build server. For 'local' option, is set to None.
+ """
+ artifact_pattern = image + '-*.zip'
+
+ def unzip_artifacts(artifact_dir):
+ artifacts = glob.glob(os.path.join(artifact_dir, artifact_pattern))
+ for artifact in artifacts:
+ logging.info('Unzipping Vendor snapshot: {}'.format(artifact))
+ check_call(['unzip', '-qn', artifact, '-d', install_dir])
+
+ if branch and build and target:
+ with tempfile.TemporaryDirectory() as tmpdir:
+ logging.info(
+ 'Fetching {pattern} from {branch} (bid: {build}, target: {target})'
+ .format(
+ pattern=artifact_pattern,
+ branch=branch,
+ build=build,
+ target=target))
+ fetch_artifact(branch, build, target, artifact_pattern, tmpdir)
+ unzip_artifacts(tmpdir)
+ elif local_dir:
+ if symlink:
+ # This assumes local_dir is the location of vendor-snapshot in the
+ # build (e.g., out/soong/vendor-snapshot).
+ #
+ # Create the first level as proper directories and the next level
+ # as symlinks.
+ for item1 in os.listdir(local_dir):
+ dest_dir = os.path.join(install_dir, item1)
+ src_dir = os.path.join(local_dir, item1)
+ if os.path.isdir(src_dir):
+ check_call(['mkdir', '-p', dest_dir])
+ # Create symlinks.
+ for item2 in os.listdir(src_dir):
+ src_item = os.path.join(src_dir, item2)
+ logging.info('Creating symlink from {} in {}'.format(
+ src_item, dest_dir))
+ os.symlink(src_item, os.path.join(dest_dir, item2))
+ else:
+ logging.info('Fetching local VNDK snapshot from {}'.format(
+ local_dir))
+ unzip_artifacts(local_dir)
+ else:
+ raise RuntimeError('Neither local nor remote fetch information given.')
+
+def get_args():
+ parser = argparse.ArgumentParser()
+ parser.add_argument(
+ 'snapshot_version',
+ type=int,
+ help='Vendor snapshot version to install, e.g. "30".')
+ parser.add_argument(
+ '--image',
+ help=('Image whose snapshot is being updated (e.g., vendor, '
+ 'recovery , ramdisk, etc.)'),
+ default='vendor')
+ parser.add_argument('--branch', help='Branch to pull build from.')
+ parser.add_argument('--build', help='Build number to pull.')
+ parser.add_argument('--target', help='Target to pull.')
+ parser.add_argument(
+ '--local',
+ help=('Fetch local vendor snapshot artifacts from specified local '
+ 'directory instead of Android Build server. '
+ 'Example: --local /path/to/local/dir'))
+ parser.add_argument(
+ '--symlink',
+ action='store_true',
+ help='Use symlinks instead of unzipping vendor snapshot zip')
+ parser.add_argument(
+ '--install-dir',
+ required=True,
+ help=(
+ 'Base directory to which vendor snapshot artifacts are installed. '
+ 'Example: --install-dir vendor/<company name>/vendor_snapshot/v30'))
+ parser.add_argument(
+ '--overwrite',
+ action='store_true',
+ help=(
+ 'If provided, does not ask before overwriting the install-dir.'))
+ parser.add_argument(
+ '--check-module-usage',
+ action='store_true',
+ help='Check which modules are used.')
+ parser.add_argument(
+ '--check-module-usage-goal',
+ action='append',
+ help='Goal(s) for which --check-module-usage is calculated.')
+ parser.add_argument(
+ '--check-module-usage-ninja-file',
+ help='Ninja file for which --check-module-usage is calculated.')
+ parser.add_argument(
+ '--check-module-usage-output',
+ help='File to which to write the check-module-usage results.')
+ parser.add_argument(
+ '--vndk-dir',
+ help='Path to installed vndk snapshot directory. Needed to retrieve '
+ 'the list of VNDK. prebuilts/vndk/v{ver} will be used by default.')
+
+ parser.add_argument(
+ '-v',
+ '--verbose',
+ action='count',
+ default=0,
+ help='Increase output verbosity, e.g. "-v", "-vv".')
+ return parser.parse_args()
+
+
+def main():
+ """Program entry point."""
+ args = get_args()
+
+ verbose_map = (logging.WARNING, logging.INFO, logging.DEBUG)
+ verbosity = min(args.verbose, 2)
+ logging.basicConfig(
+ format='%(levelname)-8s [%(filename)s:%(lineno)d] %(message)s',
+ level=verbose_map[verbosity])
+
+ if not args.install_dir:
+ raise ValueError('Please provide --install-dir option.')
+ install_dir = os.path.expanduser(args.install_dir)
+
+ if args.check_module_usage:
+ ninja_binary = './prebuilts/build-tools/linux-x86/bin/ninja'
+
+ if not args.check_module_usage_goal:
+ raise ValueError('Please provide --check-module-usage-goal option.')
+ if not args.check_module_usage_ninja_file:
+ raise ValueError(
+ 'Please provide --check-module-usage-ninja-file option.')
+ if not args.check_module_usage_output:
+ raise ValueError(
+ 'Please provide --check-module-usage-output option.')
+
+ check_module_usage(install_dir, ninja_binary, args.image,
+ args.check_module_usage_ninja_file,
+ args.check_module_usage_goal,
+ args.check_module_usage_output)
+ return
+
+ local = None
+ if args.local:
+ local = os.path.expanduser(args.local)
+
+ if local:
+ if args.build or args.branch or args.target:
+ raise ValueError(
+ 'When --local option is set, --branch, --build or --target cannot be '
+ 'specified.')
+ elif not os.path.isdir(local):
+ raise RuntimeError(
+ 'The specified local directory, {}, does not exist.'.format(
+ local))
+ else:
+ if not (args.build and args.branch and args.target):
+ raise ValueError(
+ 'Please provide --branch, --build and --target. Or set --local '
+ 'option.')
+
+ snapshot_version = args.snapshot_version
+
+ if os.path.exists(install_dir):
+ def remove_dir():
+ logging.info('Removing {}'.format(install_dir))
+ check_call(['rm', '-rf', install_dir])
+ if args.overwrite:
+ remove_dir()
+ else:
+ resp = input('Directory {} already exists. IT WILL BE REMOVED.\n'
+ 'Are you sure? (yes/no): '.format(install_dir))
+ if resp == 'yes':
+ remove_dir()
+ elif resp == 'no':
+ logging.info('Cancelled snapshot install.')
+ return
+ else:
+ raise ValueError('Did not understand: ' + resp)
+ check_call(['mkdir', '-p', install_dir])
+
+ if args.vndk_dir:
+ vndk_dir = os.path.expanduser(args.vndk_dir)
+ else:
+ vndk_dir = 'prebuilts/vndk/v%d' % snapshot_version
+ logging.debug('Using %s for vndk directory' % vndk_dir)
+
+ install_artifacts(
+ image=args.image,
+ branch=args.branch,
+ build=args.build,
+ target=args.target,
+ local_dir=local,
+ symlink=args.symlink,
+ install_dir=install_dir)
+ gen_bp_files(args.image, vndk_dir, install_dir, snapshot_version)
if __name__ == '__main__':
main()
diff --git a/vndk/Android.bp b/vndk/Android.bp
index 5a94875ff..7f849503a 100644
--- a/vndk/Android.bp
+++ b/vndk/Android.bp
@@ -14,6 +14,10 @@
// limitations under the License.
//
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
subdirs = [
"tools",
]
diff --git a/vndk/snapshot/check_gpl_license.py b/vndk/snapshot/check_gpl_license.py
index fcee1f88c..4451c9b27 100644
--- a/vndk/snapshot/check_gpl_license.py
+++ b/vndk/snapshot/check_gpl_license.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
#
# Copyright (C) 2017 The Android Open Source Project
#
@@ -136,33 +136,58 @@ class GPLChecker(object):
rev=revision, proj=git_project_path))
return True
- if not _check_rev_list(revision):
- # VNDK snapshots built from a *-release branch will have merge
- # CLs in the manifest because the *-dev branch is merged to the
- # *-release branch periodically. In order to extract the
- # revision relevant to the source of the git_project_path,
- # we fetch the *-release branch and get the revision of the
- # parent commit with FETCH_HEAD^2.
+ def _get_2nd_parent_if_merge_commit(revision):
+ """Checks if the commit is merge commit.
+
+ Returns:
+ revision: string, the 2nd parent which is the merged commit.
+ If the commit is not a merge commit, returns None.
+ """
logging.info(
'Checking if the parent of revision {rev} exists in {proj}'.
format(rev=revision, proj=git_project_path))
try:
- cmd = ['git', '-C', path, 'fetch', self._remote_git, revision]
- utils.check_call(cmd)
- cmd = ['git', '-C', path, 'rev-parse', 'FETCH_HEAD^2']
+ cmd = [
+ 'git', '-C', path, 'rev-parse', '--verify',
+ '{}^2'.format(revision)]
parent_revision = utils.check_output(cmd).strip()
except subprocess.CalledProcessError as error:
logging.error(
'Failed to get parent of revision {rev} from "{remote}": '
'{err}'.format(
rev=revision, remote=self._remote_git, err=error))
- logging.error('Try --remote to manually set remote name')
- raise
+ logging.error('{} is not a merge commit and must be included '
+ 'in the current branch'.format(revision))
+ return None
else:
- if not _check_rev_list(parent_revision):
- return False
+ return parent_revision
- return True
+ if _check_rev_list(revision):
+ return True
+
+ # VNDK snapshots built from a *-release branch will have merge
+ # CLs in the manifest because the *-dev branch is merged to the
+ # *-release branch periodically. In order to extract the
+ # revision relevant to the source of the git_project_path,
+ # we find the parent of the merge commit.
+ try:
+ cmd = ['git', '-C', path, 'fetch', self._remote_git, revision]
+ utils.check_call(cmd)
+ except subprocess.CalledProcessError as error:
+ logging.error(
+ 'Failed to fetch revision {rev} from "{remote}": '
+ '{err}'.format(
+ rev=revision, remote=self._remote_git, err=error))
+ logging.error('Try --remote to manually set remote name')
+ raise
+
+ parent_revision = _get_2nd_parent_if_merge_commit(revision)
+ while True:
+ if not parent_revision:
+ return False
+ if _check_rev_list(parent_revision):
+ return True
+ parent_revision = _get_2nd_parent_if_merge_commit(parent_revision)
def check_gpl_projects(self):
"""Checks that all GPL projects have released sources.
@@ -231,8 +256,9 @@ def get_args():
parser = argparse.ArgumentParser()
parser.add_argument(
'vndk_version',
- type=int,
- help='VNDK snapshot version to check, e.g. "27".')
+ type=utils.vndk_version_int,
+ help='VNDK snapshot version to check, e.g. "{}".'.format(
+ utils.MINIMUM_VNDK_VERSION))
parser.add_argument('-b', '--branch', help='Branch to pull manifest from.')
parser.add_argument('--build', help='Build number to pull manifest from.')
parser.add_argument(
diff --git a/vndk/snapshot/gen_buildfiles.py b/vndk/snapshot/gen_buildfiles.py
index b2c110f56..336a9f988 100644
--- a/vndk/snapshot/gen_buildfiles.py
+++ b/vndk/snapshot/gen_buildfiles.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
#
# Copyright (C) 2017 The Android Open Source Project
#
@@ -60,20 +60,41 @@ class GenBuildFile(object):
"""
INDENT = ' '
ETC_MODULES = [
- 'ld.config.txt',
'llndk.libraries.txt',
'vndksp.libraries.txt',
'vndkcore.libraries.txt',
- 'vndkprivate.libraries.txt'
+ 'vndkprivate.libraries.txt',
+ 'vndkproduct.libraries.txt',
]
+ """Some vendor prebuilts reference libprotobuf-cpp-lite.so and
+ libprotobuf-cpp-full.so and expect the 3.0.0-beta3 version.
+ The new version of protobuf will be installed as
+ /vendor/lib64/libprotobuf-cpp-lite-3.9.1.so. The VNDK doesn't
+ help here because we compile old devices against the current
+ branch and not an old VNDK snapshot. We need to continue to
+ provide a vendor libprotobuf-cpp-lite.so until all products in
+ the current branch get updated prebuilts or are obsoleted.
+
+ VENDOR_COMPAT is a dictionary that has VNDK versions as keys and
+ the list of (library name string, shared libs list) as values.
+ """
+ VENDOR_COMPAT = {
+ 28: [
+ ('libprotobuf-cpp-lite',
+ ['libc++', 'libc', 'libdl', 'liblog', 'libm', 'libz']),
+ ('libprotobuf-cpp-full',
+ ['libc++', 'libc', 'libdl', 'liblog', 'libm', 'libz']),
+ ]
+ }
+
def __init__(self, install_dir, vndk_version):
"""GenBuildFile constructor.
Args:
install_dir: string, absolute path to the prebuilts/vndk/v{version}
directory where the build files will be generated.
- vndk_version: int, VNDK snapshot version (e.g., 27, 28)
+ vndk_version: int, VNDK snapshot version (e.g. 30)
"""
self._install_dir = install_dir
self._vndk_version = vndk_version
@@ -81,12 +102,16 @@ class GenBuildFile(object):
self._snapshot_archs = utils.get_snapshot_archs(install_dir)
self._root_bpfile = os.path.join(install_dir, utils.ROOT_BP_PATH)
self._common_bpfile = os.path.join(install_dir, utils.COMMON_BP_PATH)
+ self._llndk = self._parse_lib_list(
+ os.path.basename(self._etc_paths['llndk.libraries.txt']))
self._vndk_core = self._parse_lib_list(
os.path.basename(self._etc_paths['vndkcore.libraries.txt']))
self._vndk_sp = self._parse_lib_list(
os.path.basename(self._etc_paths['vndksp.libraries.txt']))
self._vndk_private = self._parse_lib_list(
os.path.basename(self._etc_paths['vndkprivate.libraries.txt']))
+ self._vndk_product = self._parse_lib_list(
+ os.path.basename(self._etc_paths['vndkproduct.libraries.txt']))
self._modules_with_notice = self._get_modules_with_notice()
def _get_etc_paths(self):
@@ -118,6 +143,8 @@ class GenBuildFile(object):
abs_path_of_txt = os.path.join(self._install_dir, txt_path)
with open(abs_path_of_txt, 'r') as f:
lib_map[arch] = f.read().strip().split('\n')
+ if lib_map[arch] == ['']:
+ lib_map[arch].clear()
return lib_map
def _get_modules_with_notice(self):
@@ -125,26 +152,28 @@ class GenBuildFile(object):
notice_paths = glob.glob(
os.path.join(self._install_dir, utils.NOTICE_FILES_DIR_PATH,
'*.txt'))
- return [os.path.splitext(os.path.basename(p))[0] for p in notice_paths]
+ return sorted(os.path.splitext(os.path.basename(p))[0] for p in notice_paths)
def generate_root_android_bp(self):
"""Autogenerates Android.bp."""
logging.info('Generating Android.bp for snapshot v{}'.format(
self._vndk_version))
- etc_buildrules = []
+ prebuilt_buildrules = []
for prebuilt in self.ETC_MODULES:
- # ld.config.VER.txt is not installed as a prebuilt but is built and
- # installed from thesource tree at the time the VNDK snapshot is
- # installed to the system.img.
- if prebuilt == 'ld.config.txt':
- continue
- etc_buildrules.append(self._gen_etc_prebuilt(prebuilt))
+ prebuilt_buildrules.append(self._gen_etc_prebuilt(prebuilt))
+
+ if self._vndk_version in self.VENDOR_COMPAT:
+ prebuilt_buildrules.append('// Defining prebuilt libraries '
+ 'for the compatibility of old vendor modules')
+ for vendor_compat_lib_info in self.VENDOR_COMPAT[self._vndk_version]:
+ prebuilt_buildrules.append(
+ self._gen_prebuilt_library_shared(vendor_compat_lib_info))
with open(self._root_bpfile, 'w') as bpfile:
bpfile.write(self._gen_autogen_msg('/'))
bpfile.write('\n')
- bpfile.write('\n'.join(etc_buildrules))
+ bpfile.write('\n'.join(prebuilt_buildrules))
bpfile.write('\n')
logging.info('Successfully generated {}'.format(self._root_bpfile))
@@ -197,9 +226,7 @@ class GenBuildFile(object):
pass
variant_subpath = arch
- # For O-MR1 snapshot (v27), 32-bit binder prebuilts are not
- # isolated in separate 'binder32' subdirectory.
- if is_binder32 and self._vndk_version >= 28:
+ if is_binder32:
variant_subpath = os.path.join(arch, utils.BINDER32)
variant_path = os.path.join(self._install_dir, variant_subpath)
bpfile_path = os.path.join(variant_path, 'Android.bp')
@@ -207,24 +234,36 @@ class GenBuildFile(object):
vndk_core_buildrules = self._gen_vndk_shared_prebuilts(
self._vndk_core[arch],
arch,
+ is_llndk=False,
is_vndk_sp=False,
is_binder32=is_binder32,
module_names=module_names)
vndk_sp_buildrules = self._gen_vndk_shared_prebuilts(
self._vndk_sp[arch],
arch,
+ is_llndk=False,
is_vndk_sp=True,
is_binder32=is_binder32,
module_names=module_names)
+ include_llndk = self._vndk_version > 30
+ if include_llndk:
+ llndk_buildrules = self._gen_vndk_shared_prebuilts(
+ self._llndk[arch],
+ arch,
+ is_llndk=True,
+ is_vndk_sp=False,
+ is_binder32=is_binder32,
+ module_names=module_names)
with open(bpfile_path, 'w') as bpfile:
bpfile.write(self._gen_autogen_msg('/'))
bpfile.write('\n')
- bpfile.write(self._gen_bp_phony(arch, is_binder32, module_names))
- bpfile.write('\n')
bpfile.write('\n'.join(vndk_core_buildrules))
bpfile.write('\n')
bpfile.write('\n'.join(vndk_sp_buildrules))
+ if include_llndk:
+ bpfile.write('\n')
+ bpfile.write('\n'.join(llndk_buildrules))
variant_include_path = os.path.join(variant_path, 'include')
include_path = os.path.join(self._install_dir, arch, 'include')
@@ -234,16 +273,6 @@ class GenBuildFile(object):
logging.info('Successfully generated {}'.format(bpfile_path))
- if self._vndk_version == 27:
- # For O-MR1 snapshot (v27), 32-bit binder prebuilts are not
- # isolated in separate 'binder32' subdirectory.
- for arch in self._snapshot_archs:
- if arch in ('arm', 'x86'):
- gen_for_variant(arch, is_binder32=True)
- else:
- gen_for_variant(arch)
- return
-
for arch in self._snapshot_archs:
if os.path.isdir(
os.path.join(self._install_dir, arch, utils.BINDER32)):
@@ -319,6 +348,56 @@ class GenBuildFile(object):
'}}\n'.format(ind=self.INDENT))
return prebuilt_etc
+ def _gen_prebuilt_library_shared(self, prebuilt_lib_info):
+ """Generates cc_prebuilt_library_shared modules for the old vendor
+ compatibility.
+
+ Some vendor modules still require old version of libraries that is not
+ available from the current source tree. To provide the old copy of the
+ libraries, use the vndk snapshot.
+
+ Args:
+ prebuilt_lib_info: pair of (string, list of strings), name of the
+ prebuilt library and the list of shared libs for it.
+ """
+ lib_name = prebuilt_lib_info[0]
+ shared_libs = prebuilt_lib_info[1]
+
+ shared_libs_prop = ''
+ if shared_libs:
+ shared_libs_prop = ('{ind}shared_libs: [\n'.format(ind=self.INDENT))
+ for lib in shared_libs:
+ shared_libs_prop += ('{ind}{ind}"{lib}",\n'.format(
+ ind=self.INDENT, lib=lib))
+ shared_libs_prop += ('{ind}],\n'.format(ind=self.INDENT))
+
+ cc_prebuilt_libraries = ('cc_prebuilt_library_shared {{\n'
+ '{ind}name: "{name}-vendorcompat",\n'
+ '{ind}stem: "{name}",\n'
+ '{ind}vendor: true,\n'
+ '{ind}// These are already stripped, and '
+ 'restripping them just issues diagnostics.\n'
+ '{ind}strip: {{\n'
+ '{ind}{ind}none: true,\n'
+ '{ind}}},\n'
+ '{shared_libs}'
+ '{ind}target: {{\n'.format(
+ ind=self.INDENT,
+ name=lib_name,
+ shared_libs=shared_libs_prop))
+ src_paths = utils.find(self._install_dir, [lib_name+'.so'])
+ for src in src_paths:
+ dirs = src.split(os.path.sep)
+ if len(dirs) < 3 or not dirs[1].startswith('arch-{}-'.format(dirs[0])):
+ continue
+ cc_prebuilt_libraries += ('{ind}{ind}android_{arch}: {{\n'
+ '{ind}{ind}{ind}srcs: ["{src}"],\n'
+ '{ind}{ind}}},\n'.format(
+ ind=self.INDENT, arch=dirs[0], src=src))
+ cc_prebuilt_libraries += ('{ind}}},\n'
+ '}}\n'.format(ind=self.INDENT))
+ return cc_prebuilt_libraries
+
def _gen_notice_filegroup(self, module):
"""Generates a notice filegroup build rule for a given module.
@@ -343,57 +422,10 @@ class GenBuildFile(object):
return 'vndk-v{ver}-{module}-notice'.format(
ver=self._vndk_version, module=module)
- def _gen_bp_phony(self, arch, is_binder32, module_names):
- """Generates build rule for phony package 'vndk_v{ver}_{arch}'.
-
- Args:
- arch: string, VNDK snapshot arch (e.g. 'arm64')
- is_binder32: bool, True if binder interface is 32-bit
- module_names: dict, module names for given prebuilts
- """
-
- required = []
- for prebuilts in (self._vndk_core[arch], self._vndk_sp[arch]):
- for prebuilt in prebuilts:
- required.append(
- self._get_versioned_name(
- prebuilt,
- arch,
- is_binder32=is_binder32,
- module_names=module_names))
-
- for prebuilt in self.ETC_MODULES:
- required.append(
- self._get_versioned_name(
- prebuilt,
- None,
- is_etc=True,
- is_binder32=is_binder32,
- module_names=module_names))
-
- required_str = ['"{}",'.format(prebuilt) for prebuilt in required]
- required_formatted = '\n{ind}{ind}'.format(
- ind=self.INDENT).join(required_str)
- required_buildrule = ('{ind}required: [\n'
- '{ind}{ind}{required_formatted}\n'
- '{ind}],\n'.format(
- ind=self.INDENT,
- required_formatted=required_formatted))
- binder_suffix = '_{}'.format(utils.BINDER32) if is_binder32 else ''
-
- return ('phony {{\n'
- '{ind}name: "vndk_v{ver}_{arch}{binder_suffix}",\n'
- '{required_buildrule}'
- '}}\n'.format(
- ind=self.INDENT,
- ver=self._vndk_version,
- arch=arch,
- binder_suffix=binder_suffix,
- required_buildrule=required_buildrule))
-
def _gen_vndk_shared_prebuilts(self,
prebuilts,
arch,
+ is_llndk,
is_vndk_sp,
is_binder32,
module_names):
@@ -402,6 +434,7 @@ class GenBuildFile(object):
Args:
prebuilts: list of VNDK shared prebuilts
arch: string, VNDK snapshot arch (e.g. 'arm64')
+ is_llndk: bool, True if the prebuilts are LLNDK stubs
is_vndk_sp: bool, True if prebuilts are VNDK_SP libs
is_binder32: bool, True if binder interface is 32-bit
module_names: dict, module names for given prebuilts
@@ -409,26 +442,31 @@ class GenBuildFile(object):
build_rules = []
for prebuilt in prebuilts:
- build_rules.append(
- self._gen_vndk_shared_prebuilt(
- prebuilt,
- arch,
- is_vndk_sp=is_vndk_sp,
- is_binder32=is_binder32,
- module_names=module_names))
+ bp_module = self._gen_vndk_shared_prebuilt(
+ prebuilt,
+ arch,
+ is_llndk=is_llndk,
+ is_vndk_sp=is_vndk_sp,
+ is_binder32=is_binder32,
+ module_names=module_names)
+ if bp_module:
+ build_rules.append(bp_module)
return build_rules
def _gen_vndk_shared_prebuilt(self,
prebuilt,
arch,
+ is_llndk,
is_vndk_sp,
is_binder32,
module_names):
- """Returns build rule for given prebuilt.
+ """Returns build rule for given prebuilt, or an empty string if the
+ prebuilt is invalid (e.g. srcs doesn't exist).
Args:
prebuilt: string, name of prebuilt object
arch: string, VNDK snapshot arch (e.g. 'arm64')
+ is_llndk: bool, True if prebuilt is a LLNDK stub
is_vndk_sp: bool, True if prebuilt is a VNDK_SP lib
is_binder32: bool, True if binder interface is 32-bit
module_names: dict, module names for given prebuilts
@@ -447,7 +485,7 @@ class GenBuildFile(object):
notice_filegroup=self._get_notice_filegroup_name(prebuilt))
return notice
- def get_arch_props(prebuilt, arch):
+ def get_arch_props(prebuilt, arch, src_paths):
"""Returns build rule for arch specific srcs.
e.g.,
@@ -471,12 +509,9 @@ class GenBuildFile(object):
Args:
prebuilt: string, name of prebuilt object
arch: string, VNDK snapshot arch (e.g. 'arm64')
+ src_paths: list of string paths, prebuilt source paths
"""
arch_props = '{ind}arch: {{\n'.format(ind=self.INDENT)
- src_paths = utils.find(src_root, [prebuilt])
- # filter out paths under 'binder32' subdirectory
- src_paths = filter(lambda src: not src.startswith(utils.BINDER32),
- src_paths)
def list_to_prop_value(l, name):
if len(l) == 0:
@@ -538,25 +573,53 @@ class GenBuildFile(object):
return arch_props
src_root = os.path.join(self._install_dir, arch)
- # For O-MR1 snapshot (v27), 32-bit binder prebuilts are not
- # isolated in separate 'binder32' subdirectory.
- if is_binder32 and self._vndk_version >= 28:
+ if is_binder32:
src_root = os.path.join(src_root, utils.BINDER32)
+ src_paths = utils.find(src_root, [prebuilt])
+ # filter out paths under 'binder32' subdirectory
+ src_paths = list(filter(lambda src: not src.startswith(utils.BINDER32),
+ src_paths))
+ # This prebuilt is invalid if no srcs are found.
+ if not src_paths:
+ logging.info('No srcs found for {}; skipping'.format(prebuilt))
+ return ""
+
if prebuilt in module_names:
name = module_names[prebuilt]
else:
name = os.path.splitext(prebuilt)[0]
- vendor_available = str(
- prebuilt not in self._vndk_private[arch]).lower()
- vndk_sp = ''
- if is_vndk_sp:
- vndk_sp = '{ind}{ind}support_system_process: true,\n'.format(
+ product_available = ''
+ # if vndkproduct.libraries.txt is empty, make the VNDKs available to product by default.
+ if not self._vndk_product[arch] or prebuilt in self._vndk_product[arch] or is_llndk:
+ product_available = '{ind}product_available: true,\n'.format(
ind=self.INDENT)
+ vndk_props = ''
+ if not is_llndk:
+ vndk_sp = ''
+ if is_vndk_sp:
+ vndk_sp = '{ind}{ind}support_system_process: true,\n'.format(
+ ind=self.INDENT)
+
+ vndk_private = ''
+ if prebuilt in self._vndk_private[arch]:
+ vndk_private = '{ind}{ind}private: true,\n'.format(
+ ind=self.INDENT)
+
+ vndk_props = ('{ind}vndk: {{\n'
+ '{ind}{ind}enabled: true,\n'
+ '{vndk_sp}'
+ '{vndk_private}'
+ '{ind}}},\n'.format(
+ ind=self.INDENT,
+ product_available=product_available,
+ vndk_sp=vndk_sp,
+ vndk_private=vndk_private))
+
notice = get_notice_file(prebuilt)
- arch_props = get_arch_props(prebuilt, arch)
+ arch_props = get_arch_props(prebuilt, arch, src_paths)
binder32bit = ''
if is_binder32:
@@ -567,11 +630,9 @@ class GenBuildFile(object):
'{ind}version: "{ver}",\n'
'{ind}target_arch: "{target_arch}",\n'
'{binder32bit}'
- '{ind}vendor_available: {vendor_available},\n'
- '{ind}vndk: {{\n'
- '{ind}{ind}enabled: true,\n'
- '{vndk_sp}'
- '{ind}}},\n'
+ '{ind}vendor_available: true,\n'
+ '{product_available}'
+ '{vndk_props}'
'{notice}'
'{arch_props}'
'}}\n'.format(
@@ -580,8 +641,8 @@ class GenBuildFile(object):
ver=self._vndk_version,
target_arch=arch,
binder32bit=binder32bit,
- vendor_available=vendor_available,
- vndk_sp=vndk_sp,
+ product_available=product_available,
+ vndk_props=vndk_props,
notice=notice,
arch_props=arch_props))
@@ -590,8 +651,9 @@ def get_args():
parser = argparse.ArgumentParser()
parser.add_argument(
'vndk_version',
- type=int,
- help='VNDK snapshot version to install, e.g. "27".')
+ type=utils.vndk_version_int,
+ help='VNDK snapshot version to install, e.g. "{}".'.format(
+ utils.MINIMUM_VNDK_VERSION))
parser.add_argument(
'-v',
'--verbose',
diff --git a/vndk/snapshot/update.py b/vndk/snapshot/update.py
index 3c8bb6aa2..7c105bbd0 100644
--- a/vndk/snapshot/update.py
+++ b/vndk/snapshot/update.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
#
# Copyright (C) 2017 The Android Open Source Project
#
@@ -116,45 +116,36 @@ def gather_notice_files(install_dir):
def post_processe_files_if_needed(vndk_version):
- """For O-MR1, replaces unversioned VNDK directories with versioned ones.
- Also, renames ld.config.txt, llndk.libraries.txt and vndksp.libraries.txt
+ """Renames vndkcore.libraries.txt and vndksp.libraries.txt
files to have version suffix.
-
- Unversioned VNDK directories: /system/${LIB}/vndk[-sp]
- Versioned VNDK directories: /system/${LIB}/vndk[-sp]-27
+ Create empty vndkproduct.libraries.txt file if not exist.
Args:
vndk_version: int, version of VNDK snapshot
"""
def add_version_suffix(file_name):
- logging.info('Rename {} to have version suffix'.format(vndk_version))
+ logging.info('Rename {} to have version suffix'.format(file_name))
target_files = glob.glob(
os.path.join(utils.CONFIG_DIR_PATH_PATTERN, file_name))
for target_file in target_files:
name, ext = os.path.splitext(target_file)
os.rename(target_file, name + '.' + str(vndk_version) + ext)
- if vndk_version == 27:
- logging.info('Revising ld.config.txt for O-MR1...')
- re_pattern = '(system\/\${LIB}\/vndk(?:-sp)?)([:/]|$)'
- VNDK_INSTALL_DIR_RE = re.compile(re_pattern, flags=re.MULTILINE)
- ld_config_txt_paths = glob.glob(
- os.path.join(utils.CONFIG_DIR_PATH_PATTERN, 'ld.config*'))
- for ld_config_file in ld_config_txt_paths:
- with open(ld_config_file, 'r') as file:
- revised = VNDK_INSTALL_DIR_RE.sub(r'\1-27\2', file.read())
- with open(ld_config_file, 'w') as file:
- file.write(revised)
-
- files_to_add_version_suffix = ('ld.config.txt',
- 'llndk.libraries.txt',
- 'vndksp.libraries.txt')
- for file_to_rename in files_to_add_version_suffix:
- add_version_suffix(file_to_rename)
-
- files_to_enforce_version_suffix = ('vndkcore.libraries.txt',
- 'vndkprivate.libraries.txt')
- for file_to_rename in files_to_enforce_version_suffix:
+ def create_empty_file_if_not_exist(file_name):
+ target_dirs = glob.glob(utils.CONFIG_DIR_PATH_PATTERN)
+ for dir in target_dirs:
+ path = os.path.join(dir, file_name)
+ if os.path.isfile(path):
+ continue
+ logging.info('Creating empty file: {}'.format(path))
+ open(path, 'a').close()
+
+ files_to_add_version_suffix = ('vndkcore.libraries.txt',
+ 'vndkprivate.libraries.txt')
+ files_to_create_if_not_exist = ('vndkproduct.libraries.txt',)
+ for file_to_rename in files_to_add_version_suffix:
add_version_suffix(file_to_rename)
+ for file_to_create in files_to_create_if_not_exist:
+ create_empty_file_if_not_exist(file_to_create)
def update_buildfiles(buildfile_generator):
@@ -191,8 +182,9 @@ def get_args():
parser = argparse.ArgumentParser()
parser.add_argument(
'vndk_version',
- type=int,
- help='VNDK snapshot version to install, e.g. "27".')
+ type=utils.vndk_version_int,
+ help='VNDK snapshot version to install, e.g. "{}".'.format(
+ utils.MINIMUM_VNDK_VERSION))
parser.add_argument('-b', '--branch', help='Branch to pull build from.')
parser.add_argument('--build', help='Build number to pull.')
parser.add_argument(
diff --git a/vndk/snapshot/utils.py b/vndk/snapshot/utils.py
index 7fed12819..7d3a94a37 100644
--- a/vndk/snapshot/utils.py
+++ b/vndk/snapshot/utils.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
#
# Copyright (C) 2017 The Android Open Source Project
#
@@ -16,6 +16,7 @@
#
"""Utility functions for VNDK snapshot."""
+import argparse
import glob
import logging
import os
@@ -35,6 +36,7 @@ MODULE_PATHS_FILE_NAME = 'module_paths.txt'
NOTICE_FILES_DIR_NAME = 'NOTICE_FILES'
NOTICE_FILES_DIR_PATH = os.path.join(COMMON_DIR_PATH, NOTICE_FILES_DIR_NAME)
BINDER32 = 'binder32'
+MINIMUM_VNDK_VERSION = 28
def set_logging_config(verbose_level):
@@ -52,11 +54,24 @@ def check_call(cmd):
def check_output(cmd):
logging.debug('Running `{}`'.format(' '.join(cmd)))
- output = subprocess.check_output(cmd)
+ output = subprocess.check_output(cmd, encoding='utf-8')
logging.debug('Output: `{}`'.format(output))
return output
+def vndk_version_int(vndk_version):
+ """Used for a type keyword argument in the argparse.
+ It checks if vndk version is in the supported versions.
+ """
+ version_int = int(vndk_version)
+ if version_int < MINIMUM_VNDK_VERSION:
+ raise argparse.ArgumentTypeError(
+ 'The VNDK version {input} is not supported. '
+ 'It must be no smaller than {min_vndk}.'.format(
+ input=version_int, min_vndk=MINIMUM_VNDK_VERSION))
+ return version_int
+
+
def get_android_build_top():
ANDROID_BUILD_TOP = os.getenv('ANDROID_BUILD_TOP')
if not ANDROID_BUILD_TOP:
@@ -94,7 +109,7 @@ def get_snapshot_archs(install_dir):
basename = os.path.basename(file)
if os.path.isdir(file) and basename != COMMON_DIR_NAME:
archs.append(basename)
- return archs
+ return sorted(archs)
def prebuilt_arch_from_path(path):
diff --git a/vndk/tools/Android.bp b/vndk/tools/Android.bp
index 9ba43917d..28c6574ac 100644
--- a/vndk/tools/Android.bp
+++ b/vndk/tools/Android.bp
@@ -14,6 +14,10 @@
// limitations under the License.
//
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
subdirs = [
"header-checker",
"vtable-dumper",
diff --git a/vndk/tools/build_mixed b/vndk/tools/build_mixed
index f16b95753..bcd007bc2 100755
--- a/vndk/tools/build_mixed
+++ b/vndk/tools/build_mixed
@@ -5,9 +5,9 @@ usage () {
echo "Usage: $0 [-v <vendor_version>] [-m <modify_system_image_path>]"
echo " [-t <prebuilt_otatools_path>] [-p <override_vbmeta_image_path>]"
echo " [-b <override_boot_image_path>]"
- echo " [-s] system_build_dir device_build_dir out_dir"
+ echo " [-s] [-d] system_build_dir device_build_dir out_dir"
echo
- echo "Options -v, -m, -t, -p, -b, -s must precede positional arguments."
+ echo "Options -v, -m, -t, -p, -b, -s, -d must precede positional arguments."
echo
echo "vendor_version is the version of the vendor image when Keymaster v3"
echo " related modifications to the system image is necessary. Optional."
@@ -28,8 +28,10 @@ usage () {
echo " product.img when -s option is declared."
echo " By default, only system.img is flashed to the target device for"
echo " independent system update. No parameter required. Optional"
+ echo "-d is used to skip vbmeta.img replacement in its entirety and the"
+ echo " one from the device build (if exists) is left untouched"
echo "system_build_dir is the path to the system build"
- echo " eg. aosp_arm64_ab-userdebug."
+ echo " eg. aosp_arm64-userdebug."
echo "device_build_dir is the path to the device build"
echo " eg. sailfish-user."
echo "out_dir is the path to where the new build will be placed."
@@ -53,7 +55,7 @@ cleanup_and_exit () {
trap cleanup_and_exit EXIT
-while getopts :v:m:p:b:t:s opt; do
+while getopts :v:m:p:b:t:sd opt; do
case "$opt" in
v)
readonly VENDOR_VERSION="$OPTARG"
@@ -73,6 +75,9 @@ while getopts :v:m:p:b:t:s opt; do
s)
readonly INCLUDE_PRODUCT=true
;;
+ d)
+ readonly SKIP_VBMETA_REPLACE=true
+ ;;
\?)
exit_badparam "Invalid options: -"$OPTARG""
;;
@@ -279,11 +284,16 @@ if [[ "$INCLUDE_PRODUCT" == true ]]; then
fi
fi
-# Only override vbmeta if it is already present since fastboot update will try
-# to flash whatever is in the archive.
-if [[ -f "$DEVICE_IMAGES_DIR"/vbmeta.img ]]; then
- readonly VBMETA_IMAGE_PATH="${OVERRIDE_VBMETA_IMAGE_PATH:-"$SYSTEM_IMAGES_DIR"/vbmeta.img}"
- cp "$VBMETA_IMAGE_PATH" "$DEVICE_IMAGES_DIR"/
+if [[ "$SKIP_VBMETA_REPLACE" == true ]]; then
+ # Totally skip the vbmeta.img replacement
+ echo "Skip vbmeta.img replacement."
+else
+ # Only override vbmeta if it is already present since fastboot update will try
+ # to flash whatever is in the archive.
+ if [[ -f "$DEVICE_IMAGES_DIR"/vbmeta.img ]]; then
+ readonly VBMETA_IMAGE_PATH="${OVERRIDE_VBMETA_IMAGE_PATH:-"$SYSTEM_IMAGES_DIR"/vbmeta.img}"
+ cp "$VBMETA_IMAGE_PATH" "$DEVICE_IMAGES_DIR"/
+ fi
fi
# Override boot.img with the provided boot image file since fastboot update cmd
diff --git a/vndk/tools/definition-tool/datasets/Android.bp b/vndk/tools/definition-tool/datasets/Android.bp
index a5cf84865..e7f646fed 100644
--- a/vndk/tools/definition-tool/datasets/Android.bp
+++ b/vndk/tools/definition-tool/datasets/Android.bp
@@ -14,6 +14,15 @@
// limitations under the License.
//
+package {
+ // See: http://go/android-license-faq
+ // A large-scale-change added 'default_applicable_licenses' to import
+ // all of the 'license_kinds' from "development_license"
+ // to get the below license kinds:
+ // legacy_restricted
+ default_applicable_licenses: ["development_license"],
+}
+
filegroup {
name: "vndk_lib_extra_lists",
srcs: [
diff --git a/vndk/tools/definition-tool/datasets/vndk-lib-extra-list-31.txt b/vndk/tools/definition-tool/datasets/vndk-lib-extra-list-31.txt
new file mode 100644
index 000000000..0ce0dc223
--- /dev/null
+++ b/vndk/tools/definition-tool/datasets/vndk-lib-extra-list-31.txt
@@ -0,0 +1,46 @@
+FWK-ONLY-RS: libft2.so
+FWK-ONLY-RS: libmediandk.so
+
+LLNDK: libclang_rt.asan-aarch64-android.so
+LLNDK: libclang_rt.asan-arm-android.so
+LLNDK: libclang_rt.asan-i686-android.so
+LLNDK: libclang_rt.asan-mips-android.so
+LLNDK: libclang_rt.asan-mips64-android.so
+LLNDK: libclang_rt.asan-x86_64-android.so
+
+VNDK-core: libclang_rt.scudo-aarch64-android.so
+VNDK-core: libclang_rt.scudo-arm-android.so
+VNDK-core: libclang_rt.scudo-i686-android.so
+VNDK-core: libclang_rt.scudo-x86_64-android.so
+
+VNDK-core: libclang_rt.scudo_minimal-aarch64-android.so
+VNDK-core: libclang_rt.scudo_minimal-arm-android.so
+VNDK-core: libclang_rt.scudo_minimal-i686-android.so
+VNDK-core: libclang_rt.scudo_minimal-x86_64-android.so
+
+VNDK-core: libclang_rt.ubsan_standalone-aarch64-android.so
+VNDK-core: libclang_rt.ubsan_standalone-arm-android.so
+VNDK-core: libclang_rt.ubsan_standalone-i686-android.so
+VNDK-core: libclang_rt.ubsan_standalone-mips-android.so
+VNDK-core: libclang_rt.ubsan_standalone-mips64-android.so
+VNDK-core: libclang_rt.ubsan_standalone-x86_64-android.so
+
+LLNDK-private: ld-android.so
+LLNDK-private: libandroid_runtime_lazy.so
+LLNDK-private: libc_malloc_debug.so
+LLNDK-private: libdl_android.so
+LLNDK-private: libnetd_client.so
+LLNDK-private: libtextclassifier_hash.so
+
+# Same-Process HAL implementations
+SP-HAL: [regex]^.*/android\.hardware\.graphics\.mapper@\d+\.\d+-impl\.so$
+SP-HAL: [regex]^.*/android\.hardware\.renderscript@1\.0-impl\.so$
+SP-HAL: [regex]^.*/gralloc\..*\.so$
+SP-HAL: [regex]^/vendor/.*/libEGL_.*\.so$
+SP-HAL: [regex]^/vendor/.*/libGLES_.*\.so$
+SP-HAL: [regex]^/vendor/.*/libGLESv1_CM_.*\.so$
+SP-HAL: [regex]^/vendor/.*/libGLESv2_.*\.so$
+SP-HAL: [regex]^/vendor/.*/libGLESv3_.*\.so$
+SP-HAL: [regex]^/vendor/.*/libPVRRS\.so$
+SP-HAL: [regex]^/vendor/.*/libRSDriver.*\.so$
+SP-HAL: [regex]^/vendor/.*/vulkan.*\.so$
diff --git a/vndk/tools/definition-tool/datasets/vndk-lib-extra-list-current.txt b/vndk/tools/definition-tool/datasets/vndk-lib-extra-list-current.txt
index 38d4bce4a..0ce0dc223 100644
--- a/vndk/tools/definition-tool/datasets/vndk-lib-extra-list-current.txt
+++ b/vndk/tools/definition-tool/datasets/vndk-lib-extra-list-current.txt
@@ -26,6 +26,7 @@ VNDK-core: libclang_rt.ubsan_standalone-mips64-android.so
VNDK-core: libclang_rt.ubsan_standalone-x86_64-android.so
LLNDK-private: ld-android.so
+LLNDK-private: libandroid_runtime_lazy.so
LLNDK-private: libc_malloc_debug.so
LLNDK-private: libdl_android.so
LLNDK-private: libnetd_client.so
diff --git a/vndk/tools/definition-tool/vndk_definition_tool.py b/vndk/tools/definition-tool/vndk_definition_tool.py
index 3873324b5..c0be45c07 100755
--- a/vndk/tools/definition-tool/vndk_definition_tool.py
+++ b/vndk/tools/definition-tool/vndk_definition_tool.py
@@ -1893,7 +1893,7 @@ class VNDKLibDir(list):
if vendor_dirs:
versions.update(collect_versions(vendor_dirs))
- # Sanity check: Versions must not be 'sp' or start with 'sp-'.
+ # Validate: Versions must not be 'sp' or start with 'sp-'.
bad_versions = [version for version in versions
if version == 'sp' or version.startswith('sp-')]
if bad_versions:
diff --git a/vndk/tools/elfcheck/Android.bp b/vndk/tools/elfcheck/Android.bp
new file mode 100644
index 000000000..3cd6279d7
--- /dev/null
+++ b/vndk/tools/elfcheck/Android.bp
@@ -0,0 +1,49 @@
+// Copyright (C) 2020 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+blueprint_go_binary {
+ name: "bpflatten",
+ srcs: [
+ "bpflatten/main.go",
+ ],
+ deps: [
+ "blueprint-parser",
+ ],
+}
+
+sh_binary_host {
+ name: "fix_android_bp_prebuilt",
+ src: "fix_android_bp_prebuilt.sh",
+}
+
+python_binary_host {
+ name: "fix_android_mk_prebuilt",
+ srcs: [
+ "elfcheck/*.py",
+ "fix_android_mk_prebuilt.py",
+ ],
+ version: {
+ py2: {
+ enabled: false,
+ },
+ py3: {
+ enabled: true,
+ embedded_launcher: true,
+ },
+ },
+}
diff --git a/vndk/tools/elfcheck/bpflatten/main.go b/vndk/tools/elfcheck/bpflatten/main.go
new file mode 100644
index 000000000..c4450b190
--- /dev/null
+++ b/vndk/tools/elfcheck/bpflatten/main.go
@@ -0,0 +1,229 @@
+// Copyright (C) 2020 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package main
+
+import (
+ "encoding/json"
+ "flag"
+ "fmt"
+ "io"
+ "os"
+ "strings"
+
+ "github.com/google/blueprint/parser"
+)
+
+type FlatModule struct {
+ Type string
+ Name string
+ PropertyMap map[string]interface{}
+}
+
+func expandScalarTypeExpression(value parser.Expression) (scalar interface{}, isScalar bool) {
+ if s, ok := value.(*parser.Bool); ok {
+ return s.Value, true
+ } else if s, ok := value.(*parser.String); ok {
+ return s.Value, true
+ } else if s, ok := value.(*parser.Int64); ok {
+ return s.Value, true
+ }
+ return nil, false
+}
+
+func populatePropertyMap(propMap map[string]interface{}, prefix string, m *parser.Map) {
+ for _, prop := range m.Properties {
+ name := prop.Name
+ if prefix != "" {
+ name = prefix + "." + name
+ }
+ value := prop.Value.Eval()
+ if s, isScalar := expandScalarTypeExpression(value); isScalar {
+ propMap[name] = s
+ } else if list, ok := value.(*parser.List); ok {
+ var l []interface{}
+ for _, v := range list.Values {
+ if s, isScalar := expandScalarTypeExpression(v.Eval()); isScalar {
+ l = append(l, s)
+ }
+ }
+ propMap[name] = l
+ } else if mm, ok := value.(*parser.Map); ok {
+ populatePropertyMap(propMap, name, mm)
+ }
+ }
+}
+
+var anonymousModuleCount int
+
+func flattenModule(module *parser.Module) (flattened FlatModule) {
+ flattened.Type = module.Type
+ if prop, found := module.GetProperty("name"); found {
+ if value, ok := prop.Value.Eval().(*parser.String); ok {
+ flattened.Name = value.Value
+ }
+ } else {
+ flattened.Name = fmt.Sprintf("anonymous@<%d>", anonymousModuleCount)
+ anonymousModuleCount++
+ }
+ flattened.PropertyMap = make(map[string]interface{})
+ populatePropertyMap(flattened.PropertyMap, "", &module.Map)
+ return flattened
+}
+
+func processFile(filename string, in io.Reader) ([]FlatModule, error) {
+ if in == nil {
+ if file, err := os.Open(filename); err != nil {
+ return nil, err
+ } else {
+ defer file.Close()
+ in = file
+ }
+ }
+
+ ast, errs := parser.ParseAndEval(filename, in, &parser.Scope{})
+ if len(errs) > 0 {
+ for _, err := range errs {
+ fmt.Fprintln(os.Stderr, err)
+ }
+ return nil, fmt.Errorf("%d parsing errors", len(errs))
+ }
+
+ var modules []FlatModule
+ for _, def := range ast.Defs {
+ if module, ok := def.(*parser.Module); ok {
+ modules = append(modules, flattenModule(module))
+ }
+ }
+ return modules, nil
+}
+
+func quoteBashString(s string) string {
+ return strings.ReplaceAll(s, "$", "\\$")
+}
+
+func printBash(flatModules []FlatModule, w io.Writer) {
+ var moduleNameList []string
+ if len(flatModules) == 0 {
+ // Early bail out if we have nothing to output
+ return
+ }
+ fmt.Fprintf(w, "declare -a MODULE_NAMES\n")
+ fmt.Fprintf(w, "declare -A MODULE_TYPE_DICT\n")
+ fmt.Fprintf(w, "declare -A MODULE_PROP_KEYS_DICT\n")
+ fmt.Fprintf(w, "declare -A MODULE_PROP_VALUES_DICT\n")
+ fmt.Fprintf(w, "\n")
+ for _, module := range flatModules {
+ name := quoteBashString(module.Name)
+ moduleNameList = append(moduleNameList, name)
+ var modulePropKeys []string
+ for k := range module.PropertyMap {
+ modulePropKeys = append(modulePropKeys, k)
+ }
+ fmt.Fprintf(w, "MODULE_TYPE_DICT[%q]=%q\n", name, quoteBashString(module.Type))
+ fmt.Fprintf(w, "MODULE_PROP_KEYS_DICT[%q]=%q\n", name,
+ quoteBashString(strings.Join(modulePropKeys, " ")))
+ for k, v := range module.PropertyMap {
+ var propValue string
+ if vl, ok := v.([]interface{}); ok {
+ var list []string
+ for _, s := range vl {
+ list = append(list, fmt.Sprintf("%v", s))
+ }
+ propValue = fmt.Sprintf("%s", strings.Join(list, " "))
+ } else {
+ propValue = fmt.Sprintf("%v", v)
+ }
+ key := name + ":" + quoteBashString(k)
+ fmt.Fprintf(w, "MODULE_PROP_VALUES_DICT[%q]=%q\n", key, quoteBashString(propValue))
+ }
+ fmt.Fprintf(w, "\n")
+ }
+ fmt.Fprintf(w, "MODULE_NAMES=(\n")
+ for _, name := range moduleNameList {
+ fmt.Fprintf(w, " %q\n", name)
+ }
+ fmt.Fprintf(w, ")\n")
+}
+
+var (
+ outputBashFlag = flag.Bool("bash", false, "Output in bash format")
+ outputJsonFlag = flag.Bool("json", false, "Output in json format (this is the default)")
+ helpFlag = flag.Bool("help", false, "Display this message and exit")
+ exitCode = 0
+)
+
+func init() {
+ flag.Usage = usage
+}
+
+func usage() {
+ fmt.Fprintf(os.Stderr, "Usage: %s [OPTION]... [FILE]...\n", os.Args[0])
+ fmt.Fprintf(os.Stderr, "Flatten Android.bp to python friendly json text.\n")
+ fmt.Fprintf(os.Stderr, "If no file list is specified, read from standard input.\n")
+ fmt.Fprintf(os.Stderr, "\n")
+ flag.PrintDefaults()
+}
+
+func main() {
+ defer func() {
+ if err := recover(); err != nil {
+ fmt.Fprintf(os.Stderr, "error: %v\n", err)
+ exitCode = 1
+ }
+ os.Exit(exitCode)
+ }()
+
+ flag.Parse()
+
+ if *helpFlag {
+ usage()
+ return
+ }
+
+ flatModules := []FlatModule{}
+
+ if flag.NArg() == 0 {
+ if modules, err := processFile("<stdin>", os.Stdin); err != nil {
+ panic(err)
+ } else {
+ flatModules = append(flatModules, modules...)
+ }
+ }
+
+ for _, pathname := range flag.Args() {
+ switch fileInfo, err := os.Stat(pathname); {
+ case err != nil:
+ panic(err)
+ case fileInfo.IsDir():
+ panic(fmt.Errorf("%q is a directory", pathname))
+ default:
+ if modules, err := processFile(pathname, nil); err != nil {
+ panic(err)
+ } else {
+ flatModules = append(flatModules, modules...)
+ }
+ }
+ }
+
+ if *outputBashFlag {
+ printBash(flatModules, os.Stdout)
+ } else {
+ if b, err := json.MarshalIndent(flatModules, "", " "); err != nil {
+ panic(err)
+ } else {
+ fmt.Printf("%s\n", b)
+ }
+ }
+}
diff --git a/vndk/tools/elfcheck/fix_android_bp_prebuilt.sh b/vndk/tools/elfcheck/fix_android_bp_prebuilt.sh
new file mode 100755
index 000000000..ba2cc35b0
--- /dev/null
+++ b/vndk/tools/elfcheck/fix_android_bp_prebuilt.sh
@@ -0,0 +1,190 @@
+#!/bin/bash
+#
+# Copyright (C) 2020 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This program fixes prebuilt ELF check errors by updating the "shared_libs"
+# fields in Android.bp.
+#
+# Example:
+# $ source build/envsetup.sh
+# $ m fix_android_bp_prebuilt bpflatten bpmodify
+# $ fix_android_bp_prebuilt --in-place path_to_problematic_android_bp
+
+set -e
+
+function usage() {
+ cat <<EOF
+Usage:
+ $0 [OPTION]... FILE
+
+Options:
+ --in-place
+ Edit file in place (overwrites source file)
+ --diff
+ Show diffs
+ -h, --help, --usage
+ Display this message and exit
+EOF
+}
+
+function exit_handler() {
+ readonly EXIT_CODE="$?"
+ # Cleanup any temporary files
+ rm -rf "$TEMP_DIR"
+ exit "$EXIT_CODE"
+}
+
+trap exit_handler EXIT
+
+function trim_space() {
+ echo "$1" | sed -E 's/^[[:space:]]+//;s/[[:space:]]+$//'
+}
+
+function get_prop() {
+ echo "${MODULE_PROP_VALUES_DICT[${1}:${2}]}"
+}
+
+function rewrite_prop() {
+ local ORIGINAL_VALUE=$(trim_space "$(get_prop "$1" "$2")")
+ if [[ -n "$ORIGINAL_VALUE" ]]; then
+ bpmodify -m "$1" -property "$2" -r "$ORIGINAL_VALUE" -w "$TEMP_ANDROID_BP"
+ fi
+ if [[ -n "$3" ]]; then
+ bpmodify -m "$1" -property "$2" -a "$3" -w "$TEMP_ANDROID_BP"
+ fi
+}
+
+function get_dt_needed() {
+ local DYNAMIC_TABLE=$($READELF -d "${ANDROID_BP_DIR}/$1")
+ if [[ "$?" -ne 0 ]]; then
+ return 1
+ fi
+ echo "$DYNAMIC_TABLE" |
+ sed -n -E 's/^[[:space:]]*0x[[:xdigit:]]+[[:space:]]+\(NEEDED\).*\[(.+)\.so\].*$/\1/p' |
+ xargs
+}
+
+function unique() {
+ echo "$1" | xargs -n1 | sort | uniq | xargs
+}
+
+
+while [[ "$1" =~ ^- ]]; do
+ case "$1" in
+ -h | --help | --usage)
+ usage
+ exit 0
+ ;;
+ --in-place)
+ EDIT_IN_PLACE=1
+ ;;
+ --diff)
+ SHOW_DIFF=1
+ ;;
+ -x)
+ set -x
+ ;;
+ --)
+ shift
+ break
+ ;;
+ *)
+ echo >&2 "Unexpected flag: $1"
+ usage >&2
+ exit 1
+ ;;
+ esac
+ shift
+done
+
+if ! [[ -f "$1" ]]; then
+ echo >&2 "No such file: '$1'"
+ exit 1
+fi
+
+if [[ -e "$(command -v llvm-readelf)" ]]; then
+ READELF="llvm-readelf"
+elif [[ -e "$(command -v readelf)" ]]; then
+ READELF="readelf -W"
+else
+ echo >&2 'Cannot find readelf in $PATH, please run:'
+ echo >&2 '$ source build/envsetup.sh'
+ exit 1
+fi
+
+if ! [[ -e "$(command -v bpflatten)" && -e "$(command -v bpmodify)" ]]; then
+ echo >&2 'Cannot find bpflatten and bpmodify in $PATH, please run:'
+ echo >&2 '$ source build/envsetup.sh'
+ echo >&2 '$ m blueprint_tools'
+ exit 1
+fi
+
+readonly EDIT_IN_PLACE
+readonly SHOW_DIFF
+readonly READELF
+readonly ANDROID_BP="$1"
+readonly ANDROID_BP_DIR=$(dirname "$ANDROID_BP")
+readonly TEMP_DIR=$(mktemp -d)
+readonly TEMP_ANDROID_BP="${TEMP_DIR}/Android.bp"
+
+cp -L "$ANDROID_BP" "$TEMP_ANDROID_BP"
+
+# This subshell and `eval` must be on separate lines, so that eval would not
+# shadow the subshell's exit code.
+# In other words, if `bpflatten` fails, we mustn't eval its output.
+FLATTEN_COMMAND=$(bpflatten --bash "$ANDROID_BP")
+eval "$FLATTEN_COMMAND"
+
+for MODULE_NAME in "${MODULE_NAMES[@]}" ; do
+ MODULE_TYPE="${MODULE_TYPE_DICT[${MODULE_NAME}]}"
+ if ! [[ "$MODULE_TYPE" =~ ^(.+_)?prebuilt(_.+)?$ ]]; then
+ continue
+ fi
+
+ SRCS=$(get_prop "$MODULE_NAME" "srcs")
+ SHARED_LIBS=$(get_prop "$MODULE_NAME" "shared_libs")
+ if [[ -n "${SRCS}" ]]; then
+ DT_NEEDED=$(get_dt_needed "$SRCS")
+ if [[ $(unique "$DT_NEEDED") != $(unique "$SHARED_LIBS") ]]; then
+ rewrite_prop "$MODULE_NAME" "shared_libs" "$DT_NEEDED"
+ fi
+ fi
+
+ # Handle different arch / target variants...
+ for PROP in ${MODULE_PROP_KEYS_DICT[${MODULE_NAME}]} ; do
+ if ! [[ "$PROP" =~ \.srcs$ ]]; then
+ continue
+ fi
+ SRCS=$(get_prop "$MODULE_NAME" "$PROP")
+ DT_NEEDED=$(get_dt_needed "$SRCS")
+ SHARED_LIBS_PROP="${PROP%.srcs}.shared_libs"
+ VARIANT_SHARED_LIBS="${SHARED_LIBS} $(get_prop "$MODULE_NAME" "$SHARED_LIBS_PROP")"
+ if [[ $(unique "$DT_NEEDED") != $(unique "$VARIANT_SHARED_LIBS") ]]; then
+ rewrite_prop "$MODULE_NAME" "$SHARED_LIBS_PROP" "$DT_NEEDED"
+ fi
+ done
+done
+
+if [[ -n "$SHOW_DIFF" ]]; then
+ diff -u "$ANDROID_BP" "$TEMP_ANDROID_BP" || true
+fi
+
+if [[ -n "$EDIT_IN_PLACE" ]]; then
+ cp "$TEMP_ANDROID_BP" "$ANDROID_BP"
+fi
+
+if [[ -z "${SHOW_DIFF}${EDIT_IN_PLACE}" ]]; then
+ cat "$TEMP_ANDROID_BP"
+fi
diff --git a/vndk/tools/elfcheck/fix_android_mk_prebuilt.py b/vndk/tools/elfcheck/fix_android_mk_prebuilt.py
index 0f4a52f82..06fa91438 100755
--- a/vndk/tools/elfcheck/fix_android_mk_prebuilt.py
+++ b/vndk/tools/elfcheck/fix_android_mk_prebuilt.py
@@ -21,6 +21,7 @@ adding LOCAL_MULTILIB, or adding LOCAL_CHECK_ELF_FILES.
"""
import argparse
+import io
from elfcheck.rewriter import Rewriter
@@ -28,6 +29,8 @@ from elfcheck.rewriter import Rewriter
def _parse_args():
parser = argparse.ArgumentParser()
parser.add_argument('android_mk', help='path to Android.mk')
+ parser.add_argument('--in-place', action='store_true',
+ help='update the input file in place')
parser.add_argument('--var', action='append', default=[],
metavar='KEY=VALUE', help='extra makefile variables')
return parser.parse_args()
@@ -48,7 +51,13 @@ def main():
"""Main function"""
args = _parse_args()
rewriter = Rewriter(args.android_mk, _parse_arg_var(args.var))
- rewriter.rewrite()
+ if args.in_place:
+ output_buffer = io.StringIO()
+ rewriter.rewrite(output_buffer)
+ with open(args.android_mk, 'w') as output_file:
+ output_file.write(output_buffer.getvalue())
+ else:
+ rewriter.rewrite()
if __name__ == '__main__':
diff --git a/vndk/tools/header-checker/Android.bp b/vndk/tools/header-checker/Android.bp
index d22ac551d..b0405382f 100644
--- a/vndk/tools/header-checker/Android.bp
+++ b/vndk/tools/header-checker/Android.bp
@@ -14,6 +14,10 @@
// limitations under the License.
//
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
cc_defaults {
name: "header-checker-defaults",
@@ -110,6 +114,7 @@ cc_binary_host {
srcs: [
"src/linker/header_abi_linker.cpp",
+ "src/linker/module_merger.cpp",
],
}
@@ -128,19 +133,6 @@ cc_binary_host {
],
}
-cc_binary_host {
- name: "merge-abi-diff",
-
- defaults: [
- "header-checker-defaults",
- "header-abi-linker-defaults",
- ],
-
- srcs: [
- "src/diff_merge/merge_abi_diff.cpp",
- ],
-}
-
cc_library_host_static {
name: "libheader-checker",
@@ -200,6 +192,7 @@ cc_test_host {
"src/repr/symbol/exported_symbol_set_test.cpp",
"src/repr/symbol/version_script_parser_test.cpp",
"src/utils/api_level_test.cpp",
+ "src/utils/collect_exported_headers_test.cpp",
"src/utils/config_file_test.cpp",
"src/utils/string_utils_test.cpp",
],
diff --git a/vndk/tools/header-checker/Documentation/Development.md b/vndk/tools/header-checker/Documentation/Development.md
index 128584ef3..4ee064925 100644
--- a/vndk/tools/header-checker/Documentation/Development.md
+++ b/vndk/tools/header-checker/Documentation/Development.md
@@ -25,8 +25,7 @@ To build `header-abi-dumper`, `header-abi-linker` and `header-abi-diff`:
## Alternative build instructions
-If you have a full AOSP master branch source tree, you may build the tools
-with:
+If you have a full source tree, you may build the tools with:
$ source build/envsetup.sh
diff --git a/vndk/tools/header-checker/android/build-prebuilts.sh b/vndk/tools/header-checker/android/build-prebuilts.sh
index c4765649f..018b0ac5c 100755
--- a/vndk/tools/header-checker/android/build-prebuilts.sh
+++ b/vndk/tools/header-checker/android/build-prebuilts.sh
@@ -55,7 +55,6 @@ SOONG_BINARIES=(
"header-abi-linker"
"header-abi-dumper"
"header-abi-diff"
- "merge-abi-diff"
"proto_metadata_plugin"
"protoc_extractor"
"versioner"
diff --git a/vndk/tools/header-checker/android/envsetup.sh b/vndk/tools/header-checker/android/envsetup.sh
index cf7e1c1eb..709c42750 100644
--- a/vndk/tools/header-checker/android/envsetup.sh
+++ b/vndk/tools/header-checker/android/envsetup.sh
@@ -15,5 +15,5 @@
# limitations under the License.
export LLVM_BUILD_HOST_TOOLS=true
-export LLVM_PREBUILTS_VERSION=clang-r377782c
-export LLVM_RELEASE_VERSION=10.0.5
+export LLVM_PREBUILTS_VERSION=clang-r416183b
+export LLVM_RELEASE_VERSION=12.0.5
diff --git a/vndk/tools/header-checker/src/diff/abi_diff.cpp b/vndk/tools/header-checker/src/diff/abi_diff.cpp
index 1784a8c88..0dd4439c8 100644
--- a/vndk/tools/header-checker/src/diff/abi_diff.cpp
+++ b/vndk/tools/header-checker/src/diff/abi_diff.cpp
@@ -14,6 +14,7 @@
#include "diff/abi_diff.h"
+#include "repr/ir_reader.h"
#include "utils/header_abi_util.h"
#include <llvm/Support/raw_ostream.h>
@@ -112,7 +113,7 @@ HeaderAbiDiff::ExtractUserDefinedTypes(const repr::ModuleIR &tu) {
if (odr_list.size() != 1) {
continue;
}
- const repr::TypeIR *type = *(odr_list.begin());
+ const repr::TypeIR *type = odr_list.begin()->type_ir_;
const repr::RecordTypeIR *record_type = nullptr;
switch (type->GetKind()) {
case repr::RecordTypeKind:
diff --git a/vndk/tools/header-checker/src/diff/header_abi_diff.cpp b/vndk/tools/header-checker/src/diff/header_abi_diff.cpp
index f482253c1..e947d2f43 100644
--- a/vndk/tools/header-checker/src/diff/header_abi_diff.cpp
+++ b/vndk/tools/header-checker/src/diff/header_abi_diff.cpp
@@ -150,7 +150,7 @@ static std::string GetConfigFilePath(const std::string &dump_file_path) {
llvm::SmallString<128> config_file_path(dump_file_path);
llvm::sys::path::remove_filename(config_file_path);
llvm::sys::path::append(config_file_path, "config.ini");
- return config_file_path.str();
+ return std::string(config_file_path);
}
static void ReadConfigFile(const std::string &config_file_path) {
diff --git a/vndk/tools/header-checker/src/diff_merge/merge_abi_diff.cpp b/vndk/tools/header-checker/src/diff_merge/merge_abi_diff.cpp
deleted file mode 100644
index dd582eafe..000000000
--- a/vndk/tools/header-checker/src/diff_merge/merge_abi_diff.cpp
+++ /dev/null
@@ -1,150 +0,0 @@
-// Copyright (C) 2016 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "repr/protobuf/abi_diff.h"
-#include "repr/protobuf/abi_dump.h"
-
-#include <google/protobuf/text_format.h>
-#include <google/protobuf/io/zero_copy_stream_impl.h>
-
-#include <llvm/Support/CommandLine.h>
-#include <llvm/Support/raw_ostream.h>
-
-#include <fstream>
-#include <iostream>
-#include <memory>
-#include <string>
-#include <vector>
-
-#include <stdlib.h>
-
-
-static llvm::cl::OptionCategory merge_diff_category(
- "merge-abi-diff options");
-
-static llvm::cl::list<std::string> diff_report_list(
- llvm::cl::Positional, llvm::cl::desc("<diff-reports>"), llvm::cl::Required,
- llvm::cl::cat(merge_diff_category), llvm::cl::OneOrMore);
-
-static llvm::cl::opt<std::string> merged_diff_report(
- "o", llvm::cl::desc("<merged-diff-report>"), llvm::cl::Required,
- llvm::cl::cat(merge_diff_category));
-
-static llvm::cl::opt<bool> advice_only(
- "advice-only", llvm::cl::desc("Advisory mode only"), llvm::cl::Optional,
- llvm::cl::cat(merge_diff_category));
-
-static llvm::cl::opt<bool> do_not_break_on_extensions(
- "allow-extensions",
- llvm::cl::desc("Do not return a non zero status on extensions"),
- llvm::cl::Optional, llvm::cl::cat(merge_diff_category));
-
-static bool IsStatusDowngraded(
- const abi_diff::CompatibilityStatus &old_status,
- const abi_diff::CompatibilityStatus &new_status) {
- bool status_downgraded = false;
- switch (old_status) {
- case abi_diff::CompatibilityStatus::EXTENSION:
- if (new_status == abi_diff::CompatibilityStatus::INCOMPATIBLE) {
- status_downgraded = true;
- }
- break;
- case abi_diff::CompatibilityStatus::COMPATIBLE:
- if (new_status != abi_diff::CompatibilityStatus::COMPATIBLE) {
- status_downgraded = true;
- }
- break;
- default:
- break;
- }
- return status_downgraded;
-}
-
-static abi_diff::CompatibilityStatus MergeDiffReports(
- const std::vector<std::string> &diff_reports,
- const std::string &merged_diff_report) {
- abi_diff::MergedTranslationUnitDiff merged_tu_diff;
- std::ofstream text_output(merged_diff_report);
- google::protobuf::io::OstreamOutputStream text_os(&text_output);
- abi_diff::CompatibilityStatus status =
- abi_diff::CompatibilityStatus::COMPATIBLE;
-
- for (auto &&i : diff_reports) {
- abi_diff::TranslationUnitDiff diff_tu;
- std::ifstream input(i);
- google::protobuf::io::IstreamInputStream text_is(&input);
- if (!google::protobuf::TextFormat::Parse(&text_is, &diff_tu)) {
- llvm::errs() << "Failed to parse diff report\n";
- ::exit(1);
- }
- abi_diff::ConciseDiffReportInformation *added_tu_diff =
- merged_tu_diff.add_diff_reports();
- if (!added_tu_diff) {
- llvm::errs() << "Failed to add diff report to merged report\n";
- ::exit(1);
- }
- abi_diff::CompatibilityStatus new_status = diff_tu.compatibility_status();
- added_tu_diff->set_lib_name(diff_tu.lib_name());
- added_tu_diff->set_arch(diff_tu.arch());
- added_tu_diff->set_diff_report_path(i);
- added_tu_diff->set_compatibility_status(new_status);
- // Only, if the status is downgraded, change it.
- if (IsStatusDowngraded(status, new_status)) {
- status = new_status;
- }
- }
-
- if (!google::protobuf::TextFormat::Print(merged_tu_diff, &text_os)) {
- llvm::errs() << "Serialization to ostream failed\n";
- ::exit(1);
- }
- return status;
-}
-
-int main(int argc, const char **argv) {
- GOOGLE_PROTOBUF_VERIFY_VERSION;
- llvm::cl::ParseCommandLineOptions(argc, argv, "merge-abi-diff");
- abi_diff::CompatibilityStatus extension_or_incompatible =
- MergeDiffReports(diff_report_list, merged_diff_report);
- std::string status_str = "";
- switch (extension_or_incompatible) {
- case abi_diff::CompatibilityStatus::INCOMPATIBLE:
- status_str = "broken";
- break;
- case abi_diff::CompatibilityStatus::EXTENSION:
- status_str = "extended";
- break;
- default:
- break;
- }
- if (extension_or_incompatible) {
- llvm::errs() << "******************************************************\n"
- << "VNDK Abi "
- << status_str
- << ":"
- << " Please check compatibility report at : "
- << merged_diff_report << "\n"
- << "******************************************************\n";
- }
-
- if (do_not_break_on_extensions &&
- extension_or_incompatible == abi_diff::CompatibilityStatus::EXTENSION) {
- extension_or_incompatible = abi_diff::CompatibilityStatus::COMPATIBLE;
- }
-
- if (!advice_only) {
- return extension_or_incompatible;
- }
- return abi_diff::CompatibilityStatus::COMPATIBLE;
-}
diff --git a/vndk/tools/header-checker/src/dumper/abi_wrappers.cpp b/vndk/tools/header-checker/src/dumper/abi_wrappers.cpp
index 2cf94bc8d..388f44c14 100644
--- a/vndk/tools/header-checker/src/dumper/abi_wrappers.cpp
+++ b/vndk/tools/header-checker/src/dumper/abi_wrappers.cpp
@@ -68,7 +68,8 @@ ABIWrapper::ABIWrapper(
ast_caches_(ast_caches) {}
std::string ABIWrapper::GetDeclSourceFile(const clang::Decl *decl,
- const clang::CompilerInstance *cip) {
+ const clang::CompilerInstance *cip,
+ const std::string &root_dir) {
clang::SourceManager &sm = cip->getSourceManager();
clang::SourceLocation location = decl->getLocation();
// We need to use the expansion location to identify whether we should recurse
@@ -78,8 +79,8 @@ std::string ABIWrapper::GetDeclSourceFile(const clang::Decl *decl,
// skipped. Its expansion location will still be the source-file / header
// belonging to the library.
clang::SourceLocation expansion_location = sm.getExpansionLoc(location);
- llvm::StringRef file_name = sm.getFilename(expansion_location);
- return utils::RealPath(file_name.str());
+ return utils::NormalizePath(sm.getFilename(expansion_location).str(),
+ root_dir);
}
std::string ABIWrapper::GetCachedDeclSourceFile(
@@ -87,7 +88,7 @@ std::string ABIWrapper::GetCachedDeclSourceFile(
assert(decl != nullptr);
auto result = ast_caches_->decl_to_source_file_cache_.find(decl);
if (result == ast_caches_->decl_to_source_file_cache_.end()) {
- return GetDeclSourceFile(decl, cip);
+ return GetDeclSourceFile(decl, cip, ast_caches_->root_dir_);
}
return result->second;
}
@@ -96,7 +97,7 @@ std::string ABIWrapper::GetMangledNameDecl(
const clang::NamedDecl *decl, clang::MangleContext *mangle_contextp) {
if (!mangle_contextp->shouldMangleDeclName(decl)) {
clang::IdentifierInfo *identifier = decl->getIdentifier();
- return identifier ? identifier->getName() : "";
+ return identifier ? identifier->getName().str() : "";
}
std::string mangled_name;
llvm::raw_string_ostream ostream(mangled_name);
@@ -223,7 +224,7 @@ bool ABIWrapper::CreateExtendedType(clang::QualType qual_type,
static std::string GetAnonymousEnumUniqueId(llvm::StringRef mangled_name,
const clang::EnumDecl *enum_decl) {
// Get the type name from the mangled name.
- const std::string mangled_name_str = mangled_name;
+ const std::string mangled_name_str(mangled_name);
std::smatch match_result;
std::string old_suffix;
std::string nested_name_suffix;
@@ -274,7 +275,7 @@ std::string ABIWrapper::GetTypeUniqueId(clang::QualType qual_type) {
return GetAnonymousEnumUniqueId(uid.str(), enum_decl);
}
- return uid.str();
+ return std::string(uid);
}
// CreateBasicNamedAndTypedDecl creates a BasicNamedAndTypedDecl which will
@@ -293,10 +294,9 @@ bool ABIWrapper::CreateBasicNamedAndTypedDecl(
// Temporary hack: Skip the auto types, incomplete types and dependent types.
if (type_class != clang::Type::Auto && !base_type->isIncompleteType() &&
!base_type->isDependentType()) {
- std::pair<clang::CharUnits, clang::CharUnits> size_and_alignment =
- ast_contextp_->getTypeInfoInChars(canonical_type);
- typep->SetSize(size_and_alignment.first.getQuantity());
- typep->SetAlignment(size_and_alignment.second.getQuantity());
+ auto type_info_chars = ast_contextp_->getTypeInfoInChars(canonical_type);
+ typep->SetSize(type_info_chars.Width.getQuantity());
+ typep->SetAlignment(type_info_chars.Align.getQuantity());
}
std::string human_name = QualTypeToString(canonical_type);
@@ -602,7 +602,7 @@ bool RecordDeclWrapper::SetupRecordFields(repr::RecordTypeIR *recordp,
llvm::errs() << "Creation of Type failed\n";
return false;
}
- std::string field_name = field->getName();
+ std::string field_name(field->getName());
uint64_t field_offset = record_layout.getFieldOffset(field_index);
recordp->AddRecordField(repr::RecordFieldIR(
field_name, GetTypeUniqueId(field_type), field_offset,
@@ -742,8 +742,9 @@ repr::VTableComponentIR RecordDeclWrapper::SetupRecordVTableComponent(
}
if (thunk_info.isEmpty()) {
- mangle_contextp_->mangleCXXDtor(
- vtable_component.getDestructorDecl(), dtor_type, ostream);
+ auto GD = clang::GlobalDecl(
+ vtable_component.getDestructorDecl(), dtor_type);
+ mangle_contextp_->mangleName(GD, ostream);
} else {
mangle_contextp_->mangleCXXDtorThunk(
vtable_component.getDestructorDecl(), dtor_type,
@@ -855,7 +856,7 @@ std::string RecordDeclWrapper::GetMangledRTTI(
llvm::SmallString<256> uid;
llvm::raw_svector_ostream out(uid);
mangle_contextp_->mangleCXXRTTI(qual_type, out);
- return uid.str();
+ return std::string(uid);
}
diff --git a/vndk/tools/header-checker/src/dumper/abi_wrappers.h b/vndk/tools/header-checker/src/dumper/abi_wrappers.h
index f833ce518..92e101988 100644
--- a/vndk/tools/header-checker/src/dumper/abi_wrappers.h
+++ b/vndk/tools/header-checker/src/dumper/abi_wrappers.h
@@ -48,7 +48,8 @@ class ABIWrapper {
public:
static std::string GetDeclSourceFile(const clang::Decl *decl,
- const clang::CompilerInstance *cip);
+ const clang::CompilerInstance *cip,
+ const std::string &root_dir);
protected:
std::string GetCachedDeclSourceFile(const clang::Decl *decl,
diff --git a/vndk/tools/header-checker/src/dumper/ast_processing.cpp b/vndk/tools/header-checker/src/dumper/ast_processing.cpp
index 43df29dd2..de97da635 100644
--- a/vndk/tools/header-checker/src/dumper/ast_processing.cpp
+++ b/vndk/tools/header-checker/src/dumper/ast_processing.cpp
@@ -16,9 +16,11 @@
#include "dumper/abi_wrappers.h"
#include "repr/ir_dumper.h"
+#include "utils/header_abi_util.h"
-#include <clang/Lex/Token.h>
+#include <clang/AST/PrettyPrinter.h>
#include <clang/AST/QualTypeNames.h>
+#include <clang/Lex/Token.h>
#include <fstream>
#include <iostream>
@@ -29,6 +31,18 @@ namespace header_checker {
namespace dumper {
+class PrintNormalizedPath : public clang::PrintingCallbacks {
+ public:
+ PrintNormalizedPath(const std::string root_dir) : root_dir_(root_dir) {}
+
+ std::string remapPath(llvm::StringRef path) const {
+ return utils::NormalizePath(path.str(), root_dir_);
+ }
+
+ private:
+ const std::string root_dir_;
+};
+
HeaderASTVisitor::HeaderASTVisitor(
const HeaderCheckerOptions &options, clang::MangleContext *mangle_contextp,
clang::ASTContext *ast_contextp,
@@ -91,7 +105,8 @@ static bool AddMangledFunctions(const repr::FunctionIR *function,
bool HeaderASTVisitor::ShouldSkipFunctionDecl(const clang::FunctionDecl *decl) {
if (!decl->getDefinition()) {
if (!options_.dump_function_declarations_ ||
- options_.source_file_ != ABIWrapper::GetDeclSourceFile(decl, cip_)) {
+ options_.source_file_ !=
+ ABIWrapper::GetDeclSourceFile(decl, cip_, options_.root_dir_)) {
return true;
}
}
@@ -156,21 +171,19 @@ bool HeaderASTVisitor::VisitVarDecl(const clang::VarDecl *decl) {
return global_var_decl_wrapper.GetGlobalVarDecl();
}
-static bool AreHeadersExported(const std::set<std::string> &exported_headers) {
- return !exported_headers.empty();
-}
-
// We don't need to recurse into Declarations which are not exported.
bool HeaderASTVisitor::TraverseDecl(clang::Decl *decl) {
if (!decl) {
return true;
}
- std::string source_file = ABIWrapper::GetDeclSourceFile(decl, cip_);
+ std::string source_file =
+ ABIWrapper::GetDeclSourceFile(decl, cip_, options_.root_dir_);
ast_caches_->decl_to_source_file_cache_.insert(
std::make_pair(decl, source_file));
// If no exported headers are specified we assume the whole AST is exported.
const auto &exported_headers = options_.exported_headers_;
- if ((decl != tu_decl_) && AreHeadersExported(exported_headers) &&
+ if ((decl != tu_decl_) && options_.dump_exported_only_ &&
+ source_file != ast_caches_->translation_unit_source_ &&
(exported_headers.find(source_file) == exported_headers.end())) {
return true;
}
@@ -189,21 +202,21 @@ HeaderASTConsumer::HeaderASTConsumer(
: cip_(compiler_instancep), options_(options) {}
void HeaderASTConsumer::HandleTranslationUnit(clang::ASTContext &ctx) {
- clang::PrintingPolicy policy(ctx.getPrintingPolicy());
+ clang::PrintingPolicy old_policy(ctx.getPrintingPolicy());
+ clang::PrintingPolicy policy(old_policy);
// Suppress 'struct' keyword for C source files while getting QualType string
// names to avoid inconsistency between C and C++ (for C++ files, this is true
// by default)
policy.SuppressTagKeyword = true;
+ PrintNormalizedPath callbacks(options_.root_dir_);
+ policy.Callbacks = &callbacks;
ctx.setPrintingPolicy(policy);
clang::TranslationUnitDecl *translation_unit = ctx.getTranslationUnitDecl();
std::unique_ptr<clang::MangleContext> mangle_contextp(
ctx.createMangleContext());
- const std::string &translation_unit_source =
- ABIWrapper::GetDeclSourceFile(translation_unit, cip_);
- ASTCaches ast_caches(translation_unit_source);
- if (!options_.exported_headers_.empty()) {
- options_.exported_headers_.insert(translation_unit_source);
- }
+ ASTCaches ast_caches(
+ ABIWrapper::GetDeclSourceFile(translation_unit, cip_, options_.root_dir_),
+ options_.root_dir_);
std::unique_ptr<repr::ModuleIR> module(
new repr::ModuleIR(nullptr /*FIXME*/));
@@ -222,6 +235,8 @@ void HeaderASTConsumer::HandleTranslationUnit(clang::ASTContext &ctx) {
llvm::errs() << "Serialization failed\n";
::exit(1);
}
+
+ ctx.setPrintingPolicy(old_policy);
}
diff --git a/vndk/tools/header-checker/src/dumper/ast_util.h b/vndk/tools/header-checker/src/dumper/ast_util.h
index 77e153f19..a4872e781 100644
--- a/vndk/tools/header-checker/src/dumper/ast_util.h
+++ b/vndk/tools/header-checker/src/dumper/ast_util.h
@@ -29,10 +29,13 @@ namespace dumper {
struct ASTCaches {
- ASTCaches(const std::string &translation_unit_source)
- : translation_unit_source_(translation_unit_source) {}
+ ASTCaches(const std::string &translation_unit_source,
+ const std::string &root_dir)
+ : translation_unit_source_(translation_unit_source), root_dir_(root_dir) {
+ }
std::string translation_unit_source_;
+ const std::string root_dir_;
std::map<const clang::Decl *, std::string> decl_to_source_file_cache_;
llvm::DenseSet<clang::QualType> converted_qual_types_;
diff --git a/vndk/tools/header-checker/src/dumper/header_checker.cpp b/vndk/tools/header-checker/src/dumper/header_checker.cpp
index f856f2c2c..7832ce813 100644
--- a/vndk/tools/header-checker/src/dumper/header_checker.cpp
+++ b/vndk/tools/header-checker/src/dumper/header_checker.cpp
@@ -19,6 +19,7 @@
#include "utils/command_line_utils.h"
#include "utils/header_abi_util.h"
+#include <clang/Driver/Driver.h>
#include <clang/Frontend/FrontendActions.h>
#include <clang/Tooling/CommonOptionsParser.h>
#include <clang/Tooling/CompilationDatabase.h>
@@ -41,20 +42,20 @@ using header_checker::dumper::HeaderCheckerFrontendActionFactory;
using header_checker::dumper::HeaderCheckerOptions;
using header_checker::repr::TextFormatIR;
using header_checker::utils::CollectAllExportedHeaders;
+using header_checker::utils::GetCwd;
using header_checker::utils::HideIrrelevantCommandLineOptions;
-using header_checker::utils::RealPath;
-
+using header_checker::utils::NormalizePath;
static llvm::cl::OptionCategory header_checker_category(
"header-checker options");
static llvm::cl::opt<std::string> header_file(
- llvm::cl::Positional, llvm::cl::desc("<source.cpp>"), llvm::cl::Required,
+ llvm::cl::Positional, llvm::cl::desc("<source.cpp>"), llvm::cl::Optional,
llvm::cl::cat(header_checker_category));
static llvm::cl::opt<std::string> out_dump(
- "o", llvm::cl::value_desc("out_dump"), llvm::cl::Required,
+ "o", llvm::cl::value_desc("out_dump"), llvm::cl::Optional,
llvm::cl::desc("Specify the reference dump file name"),
llvm::cl::cat(header_checker_category));
@@ -62,6 +63,12 @@ static llvm::cl::list<std::string> exported_header_dirs(
"I", llvm::cl::desc("<export_include_dirs>"), llvm::cl::Prefix,
llvm::cl::ZeroOrMore, llvm::cl::cat(header_checker_category));
+static llvm::cl::opt<std::string> root_dir(
+ "root-dir",
+ llvm::cl::desc("Specify the directory that the paths in the dump file are "
+ "relative to. Default to current working directory"),
+ llvm::cl::Optional, llvm::cl::cat(header_checker_category));
+
static llvm::cl::opt<bool> no_filter(
"no-filter", llvm::cl::desc("Do not filter any abi"), llvm::cl::Optional,
llvm::cl::cat(header_checker_category));
@@ -85,6 +92,24 @@ static llvm::cl::opt<TextFormatIR> output_format(
llvm::cl::init(TextFormatIR::Json),
llvm::cl::cat(header_checker_category));
+static llvm::cl::opt<bool> print_resource_dir(
+ "print-resource-dir",
+ llvm::cl::desc("Print real path to default resource directory"),
+ llvm::cl::Optional, llvm::cl::cat(header_checker_category));
+
+int main(int argc, const char **argv);
+
+static bool PrintResourceDir(const char *argv_0) {
+ std::string program_path =
+ llvm::sys::fs::getMainExecutable(argv_0, (void *)main);
+ if (program_path.empty()) {
+ llvm::errs() << "Failed to get program path\n";
+ return false;
+ }
+ llvm::outs() << clang::driver::Driver::GetResourcesPath(program_path) << "\n";
+ return true;
+}
+
int main(int argc, const char **argv) {
HideIrrelevantCommandLineOptions(header_checker_category);
@@ -106,8 +131,29 @@ int main(int argc, const char **argv) {
}
// Parse the command line options
- llvm::cl::ParseCommandLineOptions(
- fixed_argv.GetArgc(), fixed_argv.GetArgv(), "header-checker");
+ bool is_command_valid = llvm::cl::ParseCommandLineOptions(
+ fixed_argv.GetArgc(), fixed_argv.GetArgv(), "header-checker",
+ &llvm::errs());
+
+ if (print_resource_dir) {
+ bool ok = PrintResourceDir(fixed_argv.GetArgv()[0]);
+ ::exit(ok ? 0 : 1);
+ }
+
+ // Check required arguments after handling -print-resource-dir.
+ if (header_file.empty()) {
+ llvm::errs() << "ERROR: Expect exactly one positional argument\n";
+ is_command_valid = false;
+ } else if (!llvm::sys::fs::exists(header_file)) {
+ llvm::errs() << "ERROR: Source file \"" << header_file
+ << "\" is not found\n";
+ is_command_valid = false;
+ }
+
+ if (out_dump.empty()) {
+ llvm::errs() << "ERROR: Expect exactly one -o=<out_dump>\n";
+ is_command_valid = false;
+ }
// Print an error message if we failed to create the compilation database
// from the command line arguments. This check is intentionally performed
@@ -119,25 +165,25 @@ int main(int argc, const char **argv) {
} else {
llvm::errs() << "ERROR: " << cmdline_error_msg << "\n";
}
- ::exit(1);
+ is_command_valid = false;
}
- // Input header file existential check.
- if (!llvm::sys::fs::exists(header_file)) {
- llvm::errs() << "ERROR: Header file \"" << header_file << "\" not found\n";
+ if (!is_command_valid) {
::exit(1);
}
- std::set<std::string> exported_headers;
- if (!no_filter) {
- exported_headers = CollectAllExportedHeaders(exported_header_dirs);
- }
+ const std::string root_dir_or_cwd = (root_dir.empty() ? GetCwd() : root_dir);
+
+ bool dump_exported_only = (!no_filter && !exported_header_dirs.empty());
+ std::set<std::string> exported_headers =
+ CollectAllExportedHeaders(exported_header_dirs, root_dir_or_cwd);
// Initialize clang tools and run front-end action.
std::vector<std::string> header_files{ header_file };
- HeaderCheckerOptions options(RealPath(header_file), out_dump,
- std::move(exported_headers), output_format,
- dump_function_declarations, suppress_errors);
+ HeaderCheckerOptions options(
+ NormalizePath(header_file, root_dir_or_cwd), out_dump,
+ std::move(exported_headers), root_dir_or_cwd, output_format,
+ dump_exported_only, dump_function_declarations, suppress_errors);
clang::tooling::ClangTool tool(*compilations, header_files);
std::unique_ptr<clang::tooling::FrontendActionFactory> factory(
diff --git a/vndk/tools/header-checker/src/dumper/header_checker.h b/vndk/tools/header-checker/src/dumper/header_checker.h
index 6acd59628..53c917a26 100644
--- a/vndk/tools/header-checker/src/dumper/header_checker.h
+++ b/vndk/tools/header-checker/src/dumper/header_checker.h
@@ -29,19 +29,23 @@ class HeaderCheckerOptions {
public:
std::string source_file_;
std::string dump_name_;
- std::set<std::string> exported_headers_;
+ const std::set<std::string> exported_headers_;
+ const std::string root_dir_;
repr::TextFormatIR text_format_;
+ const bool dump_exported_only_;
bool dump_function_declarations_;
bool suppress_errors_;
public:
HeaderCheckerOptions(std::string source_file, std::string dump_name,
std::set<std::string> exported_headers,
- repr::TextFormatIR text_format,
+ std::string root_dir, repr::TextFormatIR text_format,
+ bool dump_exported_only,
bool dump_function_declarations, bool suppress_errors)
: source_file_(std::move(source_file)), dump_name_(std::move(dump_name)),
exported_headers_(std::move(exported_headers)),
- text_format_(text_format),
+ root_dir_(std::move(root_dir)), text_format_(text_format),
+ dump_exported_only_(dump_exported_only),
dump_function_declarations_(dump_function_declarations),
suppress_errors_(suppress_errors) {}
};
diff --git a/vndk/tools/header-checker/src/linker/header_abi_linker.cpp b/vndk/tools/header-checker/src/linker/header_abi_linker.cpp
index 802241c3f..f8570813d 100644
--- a/vndk/tools/header-checker/src/linker/header_abi_linker.cpp
+++ b/vndk/tools/header-checker/src/linker/header_abi_linker.cpp
@@ -12,9 +12,10 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "repr/ir_representation.h"
+#include "linker/module_merger.h"
#include "repr/ir_dumper.h"
#include "repr/ir_reader.h"
+#include "repr/ir_representation.h"
#include "repr/symbol/so_file_parser.h"
#include "repr/symbol/version_script_parser.h"
#include "utils/command_line_utils.h"
@@ -28,7 +29,6 @@
#include <functional>
#include <iostream>
#include <memory>
-#include <mutex>
#include <string>
#include <thread>
#include <vector>
@@ -39,11 +39,10 @@
using namespace header_checker;
using header_checker::repr::TextFormatIR;
using header_checker::utils::CollectAllExportedHeaders;
+using header_checker::utils::GetCwd;
using header_checker::utils::HideIrrelevantCommandLineOptions;
-static constexpr std::size_t kSourcesPerBatchThread = 7;
-
static llvm::cl::OptionCategory header_linker_category(
"header-abi-linker options");
@@ -59,6 +58,12 @@ static llvm::cl::list<std::string> exported_header_dirs(
"I", llvm::cl::desc("<export_include_dirs>"), llvm::cl::Prefix,
llvm::cl::ZeroOrMore, llvm::cl::cat(header_linker_category));
+static llvm::cl::opt<std::string> root_dir(
+ "root-dir",
+ llvm::cl::desc("Specify the directory that the paths in the dump files are "
+ "relative to. Default to current working directory"),
+ llvm::cl::Optional, llvm::cl::cat(header_linker_category));
+
static llvm::cl::opt<std::string> version_script(
"v", llvm::cl::desc("<version_script>"), llvm::cl::Optional,
llvm::cl::cat(header_linker_category));
@@ -104,6 +109,12 @@ static llvm::cl::opt<TextFormatIR> output_format(
llvm::cl::init(TextFormatIR::Json),
llvm::cl::cat(header_linker_category));
+static llvm::cl::opt<std::size_t> sources_per_thread(
+ "sources-per-thread",
+ llvm::cl::desc("Specify number of input dump files each thread parses, for "
+ "debugging merging types"),
+ llvm::cl::init(7), llvm::cl::Hidden);
+
class HeaderAbiLinker {
public:
HeaderAbiLinker(
@@ -130,7 +141,7 @@ class HeaderAbiLinker {
const repr::AbiElementMap<T> &src,
const std::function<bool(const std::string &)> &symbol_filter);
- std::unique_ptr<repr::IRReader> ReadInputDumpFiles();
+ std::unique_ptr<linker::ModuleMerger> ReadInputDumpFiles();
bool ReadExportedSymbols();
@@ -138,11 +149,13 @@ class HeaderAbiLinker {
bool ReadExportedSymbolsFromSharedObjectFile();
- bool LinkTypes(repr::ModuleIR &module, repr::ModuleIR *linked_module);
+ bool LinkTypes(const repr::ModuleIR &module, repr::ModuleIR *linked_module);
- bool LinkFunctions(repr::ModuleIR &module, repr::ModuleIR *linked_module);
+ bool LinkFunctions(const repr::ModuleIR &module,
+ repr::ModuleIR *linked_module);
- bool LinkGlobalVars(repr::ModuleIR &module, repr::ModuleIR *linked_module);
+ bool LinkGlobalVars(const repr::ModuleIR &module,
+ repr::ModuleIR *linked_module);
bool LinkExportedSymbols(repr::ModuleIR *linked_module);
@@ -178,61 +191,60 @@ class HeaderAbiLinker {
};
static void DeDuplicateAbiElementsThread(
- const std::vector<std::string> &dump_files,
+ std::vector<std::string>::const_iterator dump_files_begin,
+ std::vector<std::string>::const_iterator dump_files_end,
const std::set<std::string> *exported_headers,
- repr::IRReader *greader, std::mutex *greader_lock,
- std::atomic<std::size_t> *cnt) {
- std::unique_ptr<repr::IRReader> local_reader =
- repr::IRReader::CreateIRReader(input_format, exported_headers);
-
- auto begin_it = dump_files.begin();
- std::size_t num_sources = dump_files.size();
- while (1) {
- std::size_t i = cnt->fetch_add(kSourcesPerBatchThread);
- if (i >= num_sources) {
- break;
- }
- std::size_t end = std::min(i + kSourcesPerBatchThread, num_sources);
- for (auto it = begin_it; it != begin_it + end; it++) {
- std::unique_ptr<repr::IRReader> reader =
- repr::IRReader::CreateIRReader(input_format, exported_headers);
- assert(reader != nullptr);
- if (!reader->ReadDump(*it)) {
- llvm::errs() << "ReadDump failed\n";
- ::exit(1);
- }
- // This merge is needed since the iterators might not be contigous.
- local_reader->MergeGraphs(*reader);
+ linker::ModuleMerger *merger) {
+ for (auto it = dump_files_begin; it != dump_files_end; it++) {
+ std::unique_ptr<repr::IRReader> reader =
+ repr::IRReader::CreateIRReader(input_format, exported_headers);
+ assert(reader != nullptr);
+ if (!reader->ReadDump(*it)) {
+ llvm::errs() << "ReadDump failed\n";
+ ::exit(1);
}
+ merger->MergeGraphs(reader->GetModule());
}
-
- std::lock_guard<std::mutex> lock(*greader_lock);
- greader->MergeGraphs(*local_reader);
}
-std::unique_ptr<repr::IRReader>
-HeaderAbiLinker::ReadInputDumpFiles() {
- std::unique_ptr<repr::IRReader> greader =
- repr::IRReader::CreateIRReader(input_format, &exported_headers_);
-
+std::unique_ptr<linker::ModuleMerger> HeaderAbiLinker::ReadInputDumpFiles() {
+ std::unique_ptr<linker::ModuleMerger> merger(
+ new linker::ModuleMerger(&exported_headers_));
std::size_t max_threads = std::thread::hardware_concurrency();
- std::size_t num_threads = kSourcesPerBatchThread < dump_files_.size() ?
- std::min(dump_files_.size() / kSourcesPerBatchThread, max_threads) : 0;
+ std::size_t num_threads = std::max<std::size_t>(
+ std::min(dump_files_.size() / sources_per_thread, max_threads), 1);
std::vector<std::thread> threads;
- std::atomic<std::size_t> cnt(0);
- std::mutex greader_lock;
- for (std::size_t i = 1; i < num_threads; i++) {
- threads.emplace_back(DeDuplicateAbiElementsThread, dump_files_,
- &exported_headers_, greader.get(), &greader_lock,
- &cnt);
+ std::vector<linker::ModuleMerger> thread_mergers;
+ thread_mergers.reserve(num_threads - 1);
+
+ std::size_t dump_files_index = 0;
+ std::size_t first_end_index = 0;
+ for (std::size_t i = 0; i < num_threads; i++) {
+ std::size_t cnt = dump_files_.size() / num_threads +
+ (i < dump_files_.size() % num_threads ? 1 : 0);
+ if (i == 0) {
+ first_end_index = cnt;
+ } else {
+ thread_mergers.emplace_back(&exported_headers_);
+ threads.emplace_back(DeDuplicateAbiElementsThread,
+ dump_files_.begin() + dump_files_index,
+ dump_files_.begin() + dump_files_index + cnt,
+ &exported_headers_, &thread_mergers.back());
+ }
+ dump_files_index += cnt;
}
- DeDuplicateAbiElementsThread(dump_files_, &exported_headers_, greader.get(),
- &greader_lock, &cnt);
- for (auto &thread : threads) {
- thread.join();
+ assert(dump_files_index == dump_files_.size());
+
+ DeDuplicateAbiElementsThread(dump_files_.begin(),
+ dump_files_.begin() + first_end_index,
+ &exported_headers_, merger.get());
+
+ for (std::size_t i = 0; i < threads.size(); i++) {
+ threads[i].join();
+ merger->MergeGraphs(thread_mergers[i].GetModule());
}
- return greader;
+ return merger;
}
bool HeaderAbiLinker::LinkAndDump() {
@@ -243,12 +255,13 @@ bool HeaderAbiLinker::LinkAndDump() {
}
// Construct the list of exported headers for source location filtering.
- exported_headers_ = CollectAllExportedHeaders(exported_header_dirs_);
+ exported_headers_ = CollectAllExportedHeaders(
+ exported_header_dirs_, root_dir.empty() ? GetCwd() : root_dir);
// Read all input ABI dumps.
- auto greader = ReadInputDumpFiles();
+ auto merger = ReadInputDumpFiles();
- repr::ModuleIR &module = greader->GetModule();
+ const repr::ModuleIR &module = merger->GetModule();
// Link input ABI dumps.
std::unique_ptr<repr::ModuleIR> linked_module(
@@ -303,7 +316,7 @@ bool HeaderAbiLinker::LinkDecl(
return true;
}
-bool HeaderAbiLinker::LinkTypes(repr::ModuleIR &module,
+bool HeaderAbiLinker::LinkTypes(const repr::ModuleIR &module,
repr::ModuleIR *linked_module) {
auto no_filter = [](const std::string &symbol) { return true; };
return LinkDecl(linked_module, module.GetRecordTypes(), no_filter) &&
@@ -327,7 +340,7 @@ bool HeaderAbiLinker::IsSymbolExported(const std::string &name) const {
return true;
}
-bool HeaderAbiLinker::LinkFunctions(repr::ModuleIR &module,
+bool HeaderAbiLinker::LinkFunctions(const repr::ModuleIR &module,
repr::ModuleIR *linked_module) {
auto symbol_filter = [this](const std::string &linker_set_key) {
return IsSymbolExported(linker_set_key);
@@ -335,7 +348,7 @@ bool HeaderAbiLinker::LinkFunctions(repr::ModuleIR &module,
return LinkDecl(linked_module, module.GetFunctions(), symbol_filter);
}
-bool HeaderAbiLinker::LinkGlobalVars(repr::ModuleIR &module,
+bool HeaderAbiLinker::LinkGlobalVars(const repr::ModuleIR &module,
repr::ModuleIR *linked_module) {
auto symbol_filter = [this](const std::string &linker_set_key) {
return IsSymbolExported(linker_set_key);
diff --git a/vndk/tools/header-checker/src/linker/module_merger.cpp b/vndk/tools/header-checker/src/linker/module_merger.cpp
new file mode 100644
index 000000000..af175ed2e
--- /dev/null
+++ b/vndk/tools/header-checker/src/linker/module_merger.cpp
@@ -0,0 +1,581 @@
+// Copyright (C) 2020 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "linker/module_merger.h"
+#include "repr/abi_diff_helpers.h"
+#include "repr/ir_representation_internal.h"
+
+#include <cassert>
+
+#include <llvm/Support/raw_ostream.h>
+
+
+namespace header_checker {
+namespace linker {
+
+
+MergeStatus ModuleMerger::MergeBuiltinType(
+ const repr::BuiltinTypeIR *builtin_type, const repr::ModuleIR &addend,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map) {
+ std::string linker_set_key = builtin_type->GetLinkerSetKey();
+ auto builtin_it = module_->builtin_types_.find(linker_set_key);
+ if (builtin_it != module_->builtin_types_.end()) {
+ return MergeStatus(false, builtin_it->second.GetSelfType());
+ }
+
+ // Add this builtin type to the parent graph's builtin_types_ map.
+ const std::string &type_id = builtin_type->GetSelfType();
+ auto p = module_->builtin_types_.emplace(linker_set_key, *builtin_type);
+ module_->type_graph_.emplace(type_id, &p.first->second);
+
+ MergeStatus merge_status(true, type_id);
+ local_to_global_type_id_map->emplace(type_id, merge_status);
+ return merge_status;
+}
+
+
+MergeStatus ModuleMerger::LookupUserDefinedType(
+ const repr::TypeIR *ud_type, const repr::ModuleIR &addend,
+ const std::string &ud_type_unique_id_and_source,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map_) {
+ auto it = module_->odr_list_map_.find(ud_type_unique_id_and_source);
+ if (it == module_->odr_list_map_.end()) {
+ // Calling this an ODR violation even though it means no UD with the same
+ // name + source combination was seen in the parent graph. The type-id
+ // passed does not matter since was_newly_added_ is true, the type will get
+ // allocated a new type id.
+ return MergeStatus(true, "");
+ }
+
+ // Initialize type comparator (which will compare the referenced types
+ // recursively).
+ std::set<std::string> type_cache;
+ repr::DiffPolicyOptions diff_policy_options(false);
+ repr::AbiDiffHelper diff_helper(module_->type_graph_, addend.type_graph_,
+ diff_policy_options, &type_cache, nullptr);
+
+ // Compare each user-defined type with the latest input user-defined type.
+ // If there is a match, re-use the existing user-defined type.
+ for (auto &definition : it->second) {
+ const repr::TypeIR *contender_ud = definition.type_ir_;
+ repr::DiffStatus result = diff_helper.CompareAndDumpTypeDiff(
+ contender_ud->GetSelfType(), ud_type->GetSelfType());
+ if (result == repr::DiffStatus::no_diff) {
+ local_to_global_type_id_map_->emplace(
+ ud_type->GetSelfType(),
+ MergeStatus(false, contender_ud->GetSelfType()));
+ return MergeStatus(false, contender_ud->GetSelfType());
+ }
+ }
+
+#ifdef DEBUG
+ llvm::errs() << "ODR violation detected for: " << ud_type->GetName() << "\n";
+#endif
+ return MergeStatus(true, it->second.begin()->type_ir_->GetSelfType());
+}
+
+
+MergeStatus ModuleMerger::LookupType(
+ const repr::TypeIR *addend_node, const repr::ModuleIR &addend,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map) {
+ std::string unique_type_id;
+ switch (addend_node->GetKind()) {
+ case repr::RecordTypeKind:
+ unique_type_id = repr::GetODRListMapKey(
+ static_cast<const repr::RecordTypeIR *>(addend_node));
+ break;
+ case repr::EnumTypeKind:
+ unique_type_id = repr::GetODRListMapKey(
+ static_cast<const repr::EnumTypeIR *>(addend_node));
+ break;
+ case repr::FunctionTypeKind:
+ unique_type_id = repr::GetODRListMapKey(
+ static_cast<const repr::FunctionTypeIR *>(addend_node));
+ break;
+ default:
+ // Other kinds (e.g. PointerTypeKind, QualifiedTypeKind, ArrayTypeKind,
+ // LvalueReferenceTypeKind, RvalueReferenceTypeKind, or BuiltinTypeKind)
+ // should be proactively added by returning MergeStatus with
+ // was_newly_added_ = true.
+ return MergeStatus(true, "type-hidden");
+ }
+
+ return LookupUserDefinedType(
+ addend_node, addend, unique_type_id, local_to_global_type_id_map);
+}
+
+
+// This method merges the type referenced by 'references_type' into the parent
+// graph. It also corrects the referenced_type field in the references_type
+// object passed and returns the merge status of the *referenced type*.
+MergeStatus ModuleMerger::MergeReferencingTypeInternal(
+ const repr::ModuleIR &addend, repr::ReferencesOtherType *references_type,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map) {
+ // First look in the local_to_global_type_id_map for the referenced type's
+ // id.
+ const std::string &referenced_type_id = references_type->GetReferencedType();
+ auto local_to_global_it = local_to_global_type_id_map->find(
+ referenced_type_id);
+ if (local_to_global_it != local_to_global_type_id_map->end()) {
+ // The type was already added to the parent graph. So change the
+ // referenced type to the global type id.
+ references_type->SetReferencedType(local_to_global_it->second.type_id_);
+ return local_to_global_it->second;
+ }
+
+ // If that did not go through, look at the addend's type_map_ and get the
+ // TypeIR* and call MergeType on it.
+ auto local_type_it = addend.type_graph_.find(referenced_type_id);
+ if (local_type_it != addend.type_graph_.end()) {
+ // We don't care about merge_status.was_newly_added since we wouldn't have
+ // gotten this far if we weren't adding this.
+ MergeStatus merge_status =
+ MergeType(local_type_it->second, addend, local_to_global_type_id_map);
+ const std::string &global_type_id = merge_status.type_id_;
+ references_type->SetReferencedType(global_type_id);
+ return merge_status;
+ }
+
+ // If the referenced type was hidden, create the name reference type in the
+ // parent module and keep the referenced type_id as-is.
+ return MergeStatus(true, referenced_type_id);
+}
+
+
+void ModuleMerger::MergeRecordFields(
+ const repr::ModuleIR &addend, repr::RecordTypeIR *added_node,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map) {
+ for (auto &field : added_node->GetFields()) {
+ MergeReferencingTypeInternal(addend, &field, local_to_global_type_id_map);
+ }
+}
+
+
+void ModuleMerger::MergeRecordCXXBases(
+ const repr::ModuleIR &addend, repr::RecordTypeIR *added_node,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map) {
+ for (auto &base : added_node->GetBases()) {
+ MergeReferencingTypeInternal(addend, &base, local_to_global_type_id_map);
+ }
+}
+
+
+void ModuleMerger::MergeRecordTemplateElements(
+ const repr::ModuleIR &addend, repr::RecordTypeIR *added_node,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map) {
+ for (auto &template_element : added_node->GetTemplateElements()) {
+ MergeReferencingTypeInternal(
+ addend, &template_element, local_to_global_type_id_map);
+ }
+}
+
+
+void ModuleMerger::MergeRecordDependencies(
+ const repr::ModuleIR &addend, repr::RecordTypeIR *added_node,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map) {
+ // First call MergeType on all its fields.
+ MergeRecordFields(addend, added_node, local_to_global_type_id_map);
+
+ // Call MergeType on CXXBases of the record.
+ MergeRecordCXXBases(addend, added_node, local_to_global_type_id_map);
+
+ MergeRecordTemplateElements(addend, added_node, local_to_global_type_id_map);
+}
+
+
+template <typename T>
+std::pair<MergeStatus, typename repr::AbiElementMap<T>::iterator>
+ModuleMerger::UpdateUDTypeAccounting(
+ const T *addend_node, const repr::ModuleIR &addend,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map,
+ repr::AbiElementMap<T> *specific_type_map) {
+ const std::string addend_compilation_unit_path =
+ addend.GetCompilationUnitPath(addend_node);
+ assert(addend_compilation_unit_path != "");
+ std::string added_type_id = addend_node->GetSelfType();
+ auto type_id_it = module_->type_graph_.find(added_type_id);
+ if (type_id_it != module_->type_graph_.end()) {
+ added_type_id = added_type_id + "#ODR:" + addend_compilation_unit_path;
+ }
+
+ // Add the ud-type with type-id to the type_graph_, since if there are generic
+ // reference types which refer to the record being added, they'll need to find
+ // it's id in the map.
+ // Add ud-type to the parent graph.
+ T added_type_ir = *addend_node;
+ added_type_ir.SetSelfType(added_type_id);
+ added_type_ir.SetReferencedType(added_type_id);
+ auto it = AddToMapAndTypeGraph(std::move(added_type_ir), specific_type_map,
+ &module_->type_graph_);
+ // Add to facilitate ODR checking.
+ const std::string &key = GetODRListMapKey(&(it->second));
+ MergeStatus type_merge_status = MergeStatus(true, added_type_id);
+ module_->AddToODRListMap(key, &(it->second), addend_compilation_unit_path);
+ local_to_global_type_id_map->emplace(addend_node->GetSelfType(),
+ type_merge_status);
+ return {type_merge_status, it};
+}
+
+
+// This method is necessarily going to have a was_newly_merged_ = true in its
+// MergeStatus return. So it necessarily merges a new RecordType.
+MergeStatus ModuleMerger::MergeRecordAndDependencies(
+ const repr::RecordTypeIR *addend_node, const repr::ModuleIR &addend,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map) {
+ auto p = UpdateUDTypeAccounting(
+ addend_node, addend, local_to_global_type_id_map,
+ &module_->record_types_);
+ MergeRecordDependencies(addend, &p.second->second,
+ local_to_global_type_id_map);
+ return p.first;
+}
+
+
+void ModuleMerger::MergeEnumDependencies(
+ const repr::ModuleIR &addend, repr::EnumTypeIR *added_node,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map) {
+ const std::string underlying_type_id = added_node->GetUnderlyingType();
+ // Get the underlying type, it nessarily has to be present in the addend's
+ // type graph since builtin types can't be hidden. Call MergeType on it and
+ // change the underlying type to that.
+ auto it = addend.type_graph_.find(underlying_type_id);
+ if (it == addend.type_graph_.end()) {
+ llvm::errs() << "Enum underlying types should not be hidden\n";
+ ::exit(1);
+ }
+ MergeStatus merge_status = MergeType(
+ it->second, addend, local_to_global_type_id_map);
+ added_node->SetUnderlyingType(merge_status.type_id_);
+}
+
+
+// This method is necessarily going to have a was_newly_merged_ = true in its
+// MergeStatus return. So it necessarily merges a new EnumType.
+MergeStatus ModuleMerger::MergeEnumType(
+ const repr::EnumTypeIR *addend_node, const repr::ModuleIR &addend,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map) {
+ auto p = UpdateUDTypeAccounting(
+ addend_node, addend, local_to_global_type_id_map, &module_->enum_types_);
+ MergeEnumDependencies(addend, &p.second->second, local_to_global_type_id_map);
+ return p.first;
+}
+
+
+MergeStatus ModuleMerger::MergeFunctionType(
+ const repr::FunctionTypeIR *addend_node, const repr::ModuleIR &addend,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map) {
+ auto p = UpdateUDTypeAccounting(
+ addend_node, addend, local_to_global_type_id_map,
+ &module_->function_types_);
+ MergeCFunctionLikeDeps(addend, &p.second->second,
+ local_to_global_type_id_map);
+ return p.first;
+}
+
+
+template <typename T>
+MergeStatus ModuleMerger::MergeReferencingTypeInternalAndUpdateParent(
+ const repr::ModuleIR &addend, const T *addend_node,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map,
+ repr::AbiElementMap<T> *parent_map,
+ const std::string &updated_self_type_id) {
+ MergeStatus merge_status;
+
+ // Create copy of addend_node
+ T added_node = *addend_node;
+ added_node.SetSelfType(updated_self_type_id);
+
+ // The merge status returned is the merge status of the referenced type.
+ merge_status = MergeReferencingTypeInternal(addend, &added_node,
+ local_to_global_type_id_map);
+ if (merge_status.was_newly_added_) {
+ // Emplace to map (type-referenced -> Referencing type)
+ AddToMapAndTypeGraph(std::move(added_node), parent_map,
+ &module_->type_graph_);
+ return MergeStatus(true, updated_self_type_id);
+ }
+
+ // Try finding the referenced_type is referred to by any referencing type
+ // of the same kind in the parent graph. It is safe to call this on the
+ // added_node, since the referenced_type in the added_node would have been
+ // modified by the MergeReferencingTypeInternal call.
+ auto it = parent_map->find(GetReferencedTypeMapKey(added_node));
+ if (it == parent_map->end()) {
+ // There was no counterpart found for the added_node's type Kind referencing
+ // the referenced type, so we added it to the parent and also updated the
+ // local_to_global_type_id_map's global_id value.
+ AddToMapAndTypeGraph(std::move(added_node), parent_map,
+ &module_->type_graph_);
+
+ merge_status = MergeStatus(true, updated_self_type_id);
+ return merge_status;
+ }
+
+ // Update local_to_global_type_id map's MergeStatus.was_newly_added value for
+ // this key with false since this was node was not newly added.
+ // We never remove anything from the local_to_global_type_id_map, what's
+ // the point ? Since you store the decision of whether the type was newly
+ // added or not. It's global type id is the type-id of the element found
+ // in the parent map which refers to the added_node's modified
+ // referenced_type.
+ merge_status = MergeStatus(false, it->second.GetSelfType());
+ (*local_to_global_type_id_map)[addend_node->GetSelfType()] = merge_status;
+
+ return merge_status;
+}
+
+
+static bool IsReferencingType(repr::LinkableMessageKind kind) {
+ switch (kind) {
+ case repr::PointerTypeKind:
+ case repr::QualifiedTypeKind:
+ case repr::ArrayTypeKind:
+ case repr::LvalueReferenceTypeKind:
+ case repr::RvalueReferenceTypeKind:
+ return true;
+ case repr::RecordTypeKind:
+ case repr::EnumTypeKind:
+ case repr::BuiltinTypeKind:
+ case repr::FunctionTypeKind:
+ case repr::FunctionKind:
+ case repr::GlobalVarKind:
+ return false;
+ }
+}
+
+// Trace the referenced type until reaching a RecordTypeIR, EnumTypeIR,
+// FunctionTypeIR, or BuiltinTypeIR. Return nullptr if the referenced type is
+// undefined or built-in.
+static const repr::TypeIR *DereferenceType(const repr::ModuleIR &module,
+ const repr::TypeIR *type_ir) {
+ auto &type_graph = module.GetTypeGraph();
+ while (IsReferencingType(type_ir->GetKind())) {
+ auto it = type_graph.find(type_ir->GetReferencedType());
+ // The referenced type is undefined in the module.
+ if (it == type_graph.end()) {
+ return nullptr;
+ }
+ type_ir = it->second;
+ }
+ return type_ir;
+}
+
+
+// This method creates a new node for the addend node in the graph if MergeType
+// on the reference returned a MergeStatus with was_newly_added_ = true.
+MergeStatus ModuleMerger::MergeReferencingType(
+ const repr::ModuleIR &addend, const repr::TypeIR *addend_node,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map) {
+ // First add the type 'pro-actively'. We need to do this since we'll need to
+ // fill in 'referenced-type' fields in all this type's descendants and
+ // descendants which are compound types (records), can refer to this type.
+ std::string added_type_id = addend_node->GetSelfType();
+ auto type_id_it = module_->type_graph_.find(added_type_id);
+ if (type_id_it != module_->type_graph_.end()) {
+ const repr::TypeIR *final_referenced_type =
+ DereferenceType(addend, addend_node);
+ if (final_referenced_type != nullptr) {
+ std::string compilation_unit_path =
+ addend.GetCompilationUnitPath(final_referenced_type);
+ // The path is empty for built-in types.
+ if (compilation_unit_path != "") {
+ added_type_id = added_type_id + "#ODR:" + compilation_unit_path;
+ }
+ }
+ }
+
+ // Add the added record type to the local_to_global_type_id_map.
+ local_to_global_type_id_map->emplace(addend_node->GetSelfType(),
+ MergeStatus(true, added_type_id));
+
+ // Merge the type.
+ switch (addend_node->GetKind()) {
+ case repr::PointerTypeKind:
+ return MergeReferencingTypeInternalAndUpdateParent(
+ addend, static_cast<const repr::PointerTypeIR *>(addend_node),
+ local_to_global_type_id_map, &module_->pointer_types_,
+ added_type_id);
+ case repr::QualifiedTypeKind:
+ return MergeReferencingTypeInternalAndUpdateParent(
+ addend, static_cast<const repr::QualifiedTypeIR *>(addend_node),
+ local_to_global_type_id_map, &module_->qualified_types_,
+ added_type_id);
+ case repr::ArrayTypeKind:
+ return MergeReferencingTypeInternalAndUpdateParent(
+ addend, static_cast<const repr::ArrayTypeIR *>(addend_node),
+ local_to_global_type_id_map, &module_->array_types_,
+ added_type_id);
+ case repr::LvalueReferenceTypeKind:
+ return MergeReferencingTypeInternalAndUpdateParent(
+ addend, static_cast<const repr::LvalueReferenceTypeIR *>(addend_node),
+ local_to_global_type_id_map, &module_->lvalue_reference_types_,
+ added_type_id);
+ case repr::RvalueReferenceTypeKind:
+ return MergeReferencingTypeInternalAndUpdateParent(
+ addend, static_cast<const repr::RvalueReferenceTypeIR *>(addend_node),
+ local_to_global_type_id_map, &module_->rvalue_reference_types_,
+ added_type_id);
+ default:
+ // Only referencing types
+ assert(0);
+ }
+}
+
+
+MergeStatus ModuleMerger::MergeTypeInternal(
+ const repr::TypeIR *addend_node, const repr::ModuleIR &addend,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map) {
+ switch (addend_node->GetKind()) {
+ case repr::BuiltinTypeKind:
+ return MergeBuiltinType(
+ static_cast<const repr::BuiltinTypeIR *>(addend_node), addend,
+ local_to_global_type_id_map);
+ case repr::RecordTypeKind:
+ return MergeRecordAndDependencies(
+ static_cast<const repr::RecordTypeIR *>(addend_node), addend,
+ local_to_global_type_id_map);
+ case repr::EnumTypeKind:
+ return MergeEnumType(static_cast<const repr::EnumTypeIR *>(addend_node),
+ addend, local_to_global_type_id_map);
+ case repr::FunctionTypeKind:
+ return MergeFunctionType(
+ static_cast<const repr::FunctionTypeIR *>(addend_node), addend,
+ local_to_global_type_id_map);
+ default:
+ return MergeReferencingType(addend, addend_node,
+ local_to_global_type_id_map);
+ }
+ assert(0);
+}
+
+
+MergeStatus ModuleMerger::MergeType(
+ const repr::TypeIR *addend_node, const repr::ModuleIR &addend,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map) {
+ // Check if the addend type is already in the parent graph. Since we're
+ // going to traverse all the dependencies add whichever ones are not in the
+ // parent graph. This does not add the node itself though.
+ auto type_it = local_to_global_type_id_map->find(addend_node->GetSelfType());
+ if (type_it != local_to_global_type_id_map->end()) {
+ return type_it->second;
+ }
+
+ MergeStatus merge_status = LookupType(
+ addend_node, addend, local_to_global_type_id_map);
+ if (!merge_status.was_newly_added_) {
+ return merge_status;
+ }
+ merge_status = MergeTypeInternal(
+ addend_node, addend, local_to_global_type_id_map);
+ return merge_status;
+}
+
+
+void ModuleMerger::MergeCFunctionLikeDeps(
+ const repr::ModuleIR &addend, repr::CFunctionLikeIR *cfunction_like_ir,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map) {
+ // Merge the return type.
+ auto ret_type_it =
+ addend.type_graph_.find(cfunction_like_ir->GetReturnType());
+ if (ret_type_it != addend.type_graph_.end()) {
+ // Merge the type if we can find another type in the parent module.
+ MergeStatus ret_merge_status = MergeType(ret_type_it->second, addend,
+ local_to_global_type_id_map);
+ cfunction_like_ir->SetReturnType(ret_merge_status.type_id_);
+ }
+
+ // Merge the argument types.
+ for (auto &param : cfunction_like_ir->GetParameters()) {
+ MergeReferencingTypeInternal(addend, &param, local_to_global_type_id_map);
+ }
+}
+
+
+void ModuleMerger::MergeFunctionDeps(
+ repr::FunctionIR *added_node, const repr::ModuleIR &addend,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map) {
+ MergeCFunctionLikeDeps(addend, added_node, local_to_global_type_id_map);
+
+ // Merge the template arguments.
+ for (auto &template_element : added_node->GetTemplateElements()) {
+ MergeReferencingTypeInternal(addend, &template_element,
+ local_to_global_type_id_map);
+ }
+}
+
+
+template <typename T>
+static bool
+IsLinkableMessagePresent(const repr::LinkableMessageIR *lm,
+ const repr::AbiElementMap<T> &message_map) {
+ return (message_map.find(lm->GetLinkerSetKey()) != message_map.end());
+}
+
+
+void ModuleMerger::MergeFunction(
+ const repr::FunctionIR *addend_node, const repr::ModuleIR &addend,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map) {
+ const std::string &function_linkage_name = addend_node->GetLinkerSetKey();
+ if (IsLinkableMessagePresent(addend_node, module_->functions_)) {
+ // The functions and all of its dependencies have already been added.
+ // No two globally visible functions can have the same symbol name.
+ return;
+ }
+ repr::FunctionIR function_ir = *addend_node;
+ MergeFunctionDeps(&function_ir, addend, local_to_global_type_id_map);
+ // Add it to the parent's function map.
+ module_->functions_.emplace(function_linkage_name, std::move(function_ir));
+}
+
+
+void ModuleMerger::MergeGlobalVariable(
+ const repr::GlobalVarIR *addend_node, const repr::ModuleIR &addend,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map) {
+ const std::string &global_variable_linkage_name =
+ addend_node->GetLinkerSetKey();
+ if (IsLinkableMessagePresent(addend_node, module_->global_variables_)) {
+ // The global variable and all of its dependencies have already been added.
+ return;
+ }
+ repr::GlobalVarIR global_variable_ir = *addend_node;
+ MergeReferencingTypeInternal(addend, &global_variable_ir,
+ local_to_global_type_id_map);
+ module_->global_variables_.emplace(
+ global_variable_linkage_name, std::move(global_variable_ir));
+}
+
+
+void ModuleMerger::MergeGraphs(const repr::ModuleIR &addend) {
+ // Iterate through nodes of addend reader and merge them.
+ // Keep a merged types cache since if a type is merged, so will all of its
+ // dependencies which weren't already merged.
+ repr::AbiElementMap<MergeStatus> merged_types_cache;
+
+ for (auto &&type_ir : addend.type_graph_) {
+ MergeType(type_ir.second, addend, &merged_types_cache);
+ }
+
+ for (auto &&function_ir : addend.functions_) {
+ MergeFunction(&function_ir.second, addend, &merged_types_cache);
+ }
+
+ for (auto &&global_var_ir : addend.global_variables_) {
+ MergeGlobalVariable(&global_var_ir.second, addend, &merged_types_cache);
+ }
+}
+
+
+} // namespace linker
+} // namespace header_checker
+
diff --git a/vndk/tools/header-checker/src/linker/module_merger.h b/vndk/tools/header-checker/src/linker/module_merger.h
new file mode 100644
index 000000000..b49305feb
--- /dev/null
+++ b/vndk/tools/header-checker/src/linker/module_merger.h
@@ -0,0 +1,156 @@
+// Copyright (C) 2020 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "repr/ir_representation.h"
+
+
+namespace header_checker {
+namespace linker {
+
+
+class MergeStatus {
+public:
+ MergeStatus(bool was_newly_added, const std::string &type_id)
+ : was_newly_added_(was_newly_added), type_id_(type_id) {}
+
+ MergeStatus() {}
+
+ // type_id_ always has the global_type_id corresponding to the type this
+ // MergeStatus corresponds to. For
+ // generic reference types (pointers, qual types, l(r)value references etc),
+ // this will be a proactively added type_id, which will be added to the
+ // parent type_graph if the we decide to add the referencing type to the
+ // parent post ODR checking.
+ bool was_newly_added_ = false;
+
+ std::string type_id_;
+};
+
+
+class ModuleMerger {
+public:
+ ModuleMerger(const std::set<std::string> *exported_headers)
+ : module_(new repr::ModuleIR(exported_headers)) {}
+
+ const repr::ModuleIR &GetModule() {
+ return *module_;
+ }
+
+ void MergeGraphs(const repr::ModuleIR &addend);
+
+private:
+ void MergeCFunctionLikeDeps(
+ const repr::ModuleIR &addend, repr::CFunctionLikeIR *cfunction_like_ir,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map);
+
+ MergeStatus MergeFunctionType(
+ const repr::FunctionTypeIR *addend_node, const repr::ModuleIR &addend,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map);
+
+ MergeStatus
+ MergeEnumType(const repr::EnumTypeIR *addend_node,
+ const repr::ModuleIR &addend,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map);
+
+ void MergeEnumDependencies(
+ const repr::ModuleIR &addend, repr::EnumTypeIR *added_node,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map);
+
+ MergeStatus MergeRecordAndDependencies(
+ const repr::RecordTypeIR *addend_node, const repr::ModuleIR &addend,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map);
+
+ void MergeRecordDependencies(
+ const repr::ModuleIR &addend, repr::RecordTypeIR *added_node,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map);
+
+ void MergeRecordFields(
+ const repr::ModuleIR &addend, repr::RecordTypeIR *added_node,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map);
+
+ void MergeRecordCXXBases(
+ const repr::ModuleIR &addend, repr::RecordTypeIR *added_node,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map);
+
+ void MergeRecordTemplateElements(
+ const repr::ModuleIR &addend, repr::RecordTypeIR *added_node,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map);
+
+ void MergeGlobalVariable(
+ const repr::GlobalVarIR *addend_node, const repr::ModuleIR &addend,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map);
+
+ void MergeGlobalVariables(
+ const repr::ModuleIR &addend,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map);
+
+ void MergeFunctionDeps(
+ repr::FunctionIR *added_node, const repr::ModuleIR &addend,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map);
+
+ void
+ MergeFunction(const repr::FunctionIR *addend_node,
+ const repr::ModuleIR &addend,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map);
+
+ template <typename T>
+ MergeStatus MergeReferencingTypeInternalAndUpdateParent(
+ const repr::ModuleIR &addend, const T *addend_node,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map,
+ repr::AbiElementMap<T> *parent_map,
+ const std::string &updated_self_type_id);
+
+ MergeStatus MergeReferencingTypeInternal(
+ const repr::ModuleIR &addend, repr::ReferencesOtherType *references_type,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map);
+
+ MergeStatus MergeReferencingType(
+ const repr::ModuleIR &addend, const repr::TypeIR *addend_node,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map);
+
+ template <typename T>
+ std::pair<MergeStatus, typename repr::AbiElementMap<T>::iterator>
+ UpdateUDTypeAccounting(
+ const T *addend_node, const repr::ModuleIR &addend,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map,
+ repr::AbiElementMap<T> *specific_type_map);
+
+ MergeStatus MergeBuiltinType(
+ const repr::BuiltinTypeIR *builtin_type, const repr::ModuleIR &addend,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map);
+
+ MergeStatus LookupUserDefinedType(
+ const repr::TypeIR *ud_type, const repr::ModuleIR &addend,
+ const std::string &ud_type_unique_id,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map_);
+
+ MergeStatus
+ LookupType(const repr::TypeIR *addend_node, const repr::ModuleIR &addend,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map);
+
+ MergeStatus MergeTypeInternal(
+ const repr::TypeIR *addend_node, const repr::ModuleIR &addend,
+ repr::AbiElementMap<MergeStatus> *local_to_global_type_id_map);
+
+ MergeStatus MergeType(const repr::TypeIR *addend_type,
+ const repr::ModuleIR &addend,
+ repr::AbiElementMap<MergeStatus> *merged_types_cache);
+
+private:
+ std::unique_ptr<repr::ModuleIR> module_;
+};
+
+
+} // namespace linker
+} // namespace header_checker
diff --git a/vndk/tools/header-checker/src/repr/abi_diff_helpers.h b/vndk/tools/header-checker/src/repr/abi_diff_helpers.h
index fff7ab430..7b67d2be3 100644
--- a/vndk/tools/header-checker/src/repr/abi_diff_helpers.h
+++ b/vndk/tools/header-checker/src/repr/abi_diff_helpers.h
@@ -17,7 +17,6 @@
#include "repr/ir_diff_dumper.h"
#include "repr/ir_diff_representation.h"
-#include "repr/ir_reader.h"
#include "repr/ir_representation.h"
#include <deque>
@@ -30,8 +29,6 @@ namespace repr {
// Classes which act as middle-men between clang AST parsing routines and
// message format specific dumpers.
-using MergeStatus = IRReader::MergeStatus;
-
enum DiffStatus {
// There was no diff found while comparing types.
no_diff = 0,
@@ -83,12 +80,10 @@ class AbiDiffHelper {
const AbiElementMap<const TypeIR *> &new_types,
const DiffPolicyOptions &diff_policy_options,
std::set<std::string> *type_cache,
- IRDiffDumper *ir_diff_dumper = nullptr,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map = nullptr)
+ IRDiffDumper *ir_diff_dumper = nullptr)
: old_types_(old_types), new_types_(new_types),
diff_policy_options_(diff_policy_options), type_cache_(type_cache),
- ir_diff_dumper_(ir_diff_dumper),
- local_to_global_type_id_map_(local_to_global_type_id_map) {}
+ ir_diff_dumper_(ir_diff_dumper) {}
DiffStatus CompareAndDumpTypeDiff(
const std::string &old_type_str, const std::string &new_type_str,
@@ -214,7 +209,6 @@ class AbiDiffHelper {
const DiffPolicyOptions &diff_policy_options_;
std::set<std::string> *type_cache_;
IRDiffDumper *ir_diff_dumper_;
- AbiElementMap<MergeStatus> *local_to_global_type_id_map_;
};
void ReplaceTypeIdsWithTypeNames(
diff --git a/vndk/tools/header-checker/src/repr/ir_reader.cpp b/vndk/tools/header-checker/src/repr/ir_reader.cpp
index a47bab4f3..04de74264 100644
--- a/vndk/tools/header-checker/src/repr/ir_reader.cpp
+++ b/vndk/tools/header-checker/src/repr/ir_reader.cpp
@@ -14,9 +14,7 @@
#include "repr/ir_reader.h"
-#include "repr/abi_diff_helpers.h"
#include "repr/ir_representation.h"
-#include "repr/ir_representation_internal.h"
#include "repr/json/api.h"
#include "repr/protobuf/api.h"
@@ -32,9 +30,6 @@ namespace header_checker {
namespace repr {
-using MergeStatus = IRReader::MergeStatus;
-
-
std::unique_ptr<IRReader>
IRReader::CreateIRReader(
TextFormatIR text_format, const std::set<std::string> *exported_headers) {
@@ -56,527 +51,5 @@ bool IRReader::ReadDump(const std::string &dump_file) {
}
-MergeStatus IRReader::MergeBuiltinType(
- const BuiltinTypeIR *builtin_type, const IRReader &addend,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map) {
- std::string linker_set_key = builtin_type->GetLinkerSetKey();
- auto builtin_it = module_->builtin_types_.find(linker_set_key);
- if (builtin_it != module_->builtin_types_.end()) {
- return MergeStatus(false, builtin_it->second.GetSelfType());
- }
-
- // Add this builtin type to the parent graph's builtin_types_ map.
- const std::string &type_id = builtin_type->GetSelfType();
- auto p = module_->builtin_types_.emplace(linker_set_key, *builtin_type);
- module_->type_graph_.emplace(type_id, &p.first->second);
-
- MergeStatus merge_status(true, type_id);
- local_to_global_type_id_map->emplace(type_id, merge_status);
- return merge_status;
-}
-
-
-MergeStatus IRReader::LookupUserDefinedType(
- const TypeIR *ud_type, const IRReader &addend,
- const std::string &ud_type_unique_id_and_source,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map_) {
- auto it = module_->odr_list_map_.find(ud_type_unique_id_and_source);
- if (it == module_->odr_list_map_.end()) {
- // Calling this an ODR violation even though it means no UD with the same
- // name + source combination was seen in the parent graph. The type-id
- // passed does not matter since was_newly_added_ is true, the type will get
- // allocated a new type id.
- return MergeStatus(true, "");
- }
-
- // Initialize type comparator (which will compare the referenced types
- // recursively).
- std::set<std::string> type_cache;
- DiffPolicyOptions diff_policy_options(false) ;
- AbiDiffHelper diff_helper(module_->type_graph_, addend.module_->type_graph_,
- diff_policy_options, &type_cache,
- nullptr, local_to_global_type_id_map_);
-
- // Compare each user-defined type with the latest input user-defined type.
- // If there is a match, re-use the existing user-defined type.
- for (auto &contender_ud : it->second) {
- DiffStatus result = diff_helper.CompareAndDumpTypeDiff(
- contender_ud->GetSelfType(), ud_type->GetSelfType());
- if (result == DiffStatus::no_diff) {
- local_to_global_type_id_map_->emplace(
- ud_type->GetSelfType(),
- MergeStatus(false, contender_ud->GetSelfType()));
- return MergeStatus(false, contender_ud->GetSelfType());
- }
- }
-
-#ifdef DEBUG
- llvm::errs() << "ODR violation detected for: " << ud_type->GetName() << "\n";
-#endif
- return MergeStatus(true, (*(it->second.begin()))->GetSelfType());
-}
-
-
-MergeStatus IRReader::LookupType(
- const TypeIR *addend_node, const IRReader &addend,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map) {
- std::string unique_type_id;
- switch (addend_node->GetKind()) {
- case RecordTypeKind:
- unique_type_id =
- GetODRListMapKey(static_cast<const RecordTypeIR *>(addend_node));
- break;
- case EnumTypeKind:
- unique_type_id =
- GetODRListMapKey(static_cast<const EnumTypeIR *>(addend_node));
- break;
- case FunctionTypeKind:
- unique_type_id =
- GetODRListMapKey(static_cast<const FunctionTypeIR *>(addend_node));
- break;
- default:
- // Other kinds (e.g. PointerTypeKind, QualifiedTypeKind, ArrayTypeKind,
- // LvalueReferenceTypeKind, RvalueReferenceTypeKind, or BuiltinTypeKind)
- // should be proactively added by returning MergeStatus with
- // was_newly_added_ = true.
- return MergeStatus(true, "type-hidden");
- }
-
- return LookupUserDefinedType(
- addend_node, addend, unique_type_id, local_to_global_type_id_map);
-}
-
-
-// This method merges the type referenced by 'references_type' into the parent
-// graph. It also corrects the referenced_type field in the references_type
-// object passed and returns the merge status of the *referenced type*.
-MergeStatus IRReader::MergeReferencingTypeInternal(
- const IRReader &addend, ReferencesOtherType *references_type,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map) {
- // First look in the local_to_global_type_id_map for the referenced type's
- // id.
- const std::string &referenced_type_id = references_type->GetReferencedType();
- auto local_to_global_it = local_to_global_type_id_map->find(
- referenced_type_id);
- if (local_to_global_it != local_to_global_type_id_map->end()) {
- // The type was already added to the parent graph. So change the
- // referenced type to the global type id.
- references_type->SetReferencedType(local_to_global_it->second.type_id_);
- return local_to_global_it->second;
- }
-
- // If that did not go through, look at the addend's type_map_ and get the
- // TypeIR* and call MergeType on it.
- auto local_type_it = addend.module_->type_graph_.find(referenced_type_id);
- if (local_type_it != addend.module_->type_graph_.end()) {
- // We don't care about merge_status.was_newly_added since we wouldn't have
- // gotten this far if we weren't adding this.
- MergeStatus merge_status =
- MergeType(local_type_it->second, addend, local_to_global_type_id_map);
- const std::string &global_type_id = merge_status.type_id_;
- references_type->SetReferencedType(global_type_id);
- return merge_status;
- }
-
- // If the referenced type was hidden, create the name reference type in the
- // parent module and keep the referenced type_id as-is.
- return MergeStatus(true, referenced_type_id);
-}
-
-
-void IRReader::MergeRecordFields(
- const IRReader &addend, RecordTypeIR *added_node,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map) {
- for (auto &field : added_node->GetFields()) {
- MergeReferencingTypeInternal(addend, &field, local_to_global_type_id_map);
- }
-}
-
-
-void IRReader::MergeRecordCXXBases(
- const IRReader &addend, RecordTypeIR *added_node,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map) {
- for (auto &base : added_node->GetBases()) {
- MergeReferencingTypeInternal(addend, &base, local_to_global_type_id_map);
- }
-}
-
-
-void IRReader::MergeRecordTemplateElements(
- const IRReader &addend, RecordTypeIR *added_node,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map) {
- for (auto &template_element : added_node->GetTemplateElements()) {
- MergeReferencingTypeInternal(
- addend, &template_element, local_to_global_type_id_map);
- }
-}
-
-
-void IRReader::MergeRecordDependencies(
- const IRReader &addend, RecordTypeIR *added_node,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map) {
- // First call MergeType on all its fields.
- MergeRecordFields(addend, added_node, local_to_global_type_id_map);
-
- // Call MergeType on CXXBases of the record.
- MergeRecordCXXBases(addend, added_node, local_to_global_type_id_map);
-
- MergeRecordTemplateElements(addend, added_node, local_to_global_type_id_map);
-}
-
-
-template <typename T>
-std::pair<MergeStatus, typename AbiElementMap<T>::iterator>
-IRReader::UpdateUDTypeAccounting(
- const T *addend_node, const IRReader &addend,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map,
- AbiElementMap<T> *specific_type_map) {
- std::string added_type_id = addend_node->GetSelfType();
- auto type_id_it = module_->type_graph_.find(added_type_id);
- if (type_id_it != module_->type_graph_.end()) {
- added_type_id = AllocateNewTypeId(added_type_id, *addend.module_);
- }
-
- // Add the ud-type with type-id to the type_graph_, since if there are generic
- // reference types which refer to the record being added, they'll need to find
- // it's id in the map.
- // Add ud-type to the parent graph.
- T added_type_ir = *addend_node;
- added_type_ir.SetSelfType(added_type_id);
- added_type_ir.SetReferencedType(added_type_id);
- auto it = AddToMapAndTypeGraph(std::move(added_type_ir), specific_type_map,
- &module_->type_graph_);
- // Add to faciliate ODR checking.
- const std::string &key = GetODRListMapKey(&(it->second));
- MergeStatus type_merge_status = MergeStatus(true, added_type_id);
- module_->AddToODRListMap(key, &(it->second));
- local_to_global_type_id_map->emplace(addend_node->GetSelfType(),
- type_merge_status);
- return {type_merge_status, it};
-}
-
-
-// This method is necessarily going to have a was_newly_merged_ = true in its
-// MergeStatus return. So it necessarily merges a new RecordType.
-MergeStatus IRReader::MergeRecordAndDependencies(
- const RecordTypeIR *addend_node, const IRReader &addend,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map) {
- auto p = UpdateUDTypeAccounting(
- addend_node, addend, local_to_global_type_id_map,
- &module_->record_types_);
- MergeRecordDependencies(addend, &p.second->second,
- local_to_global_type_id_map);
- return p.first;
-}
-
-
-void IRReader::MergeEnumDependencies(
- const IRReader &addend, EnumTypeIR *added_node,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map) {
- const std::string underlying_type_id = added_node->GetUnderlyingType();
- // Get the underlying type, it nessarily has to be present in the addend's
- // type graph since builtin types can't be hidden. Call MergeType on it and
- // change the underlying type to that.
- auto it = addend.module_->type_graph_.find(underlying_type_id);
- if (it == addend.module_->type_graph_.end()) {
- llvm::errs() << "Enum underlying types should not be hidden\n";
- ::exit(1);
- }
- MergeStatus merge_status = MergeType(
- it->second, addend, local_to_global_type_id_map);
- added_node->SetUnderlyingType(merge_status.type_id_);
-}
-
-
-// This method is necessarily going to have a was_newly_merged_ = true in its
-// MergeStatus return. So it necessarily merges a new EnumType.
-MergeStatus IRReader::MergeEnumType(
- const EnumTypeIR *addend_node, const IRReader &addend,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map) {
- auto p = UpdateUDTypeAccounting(
- addend_node, addend, local_to_global_type_id_map, &module_->enum_types_);
- MergeEnumDependencies(addend, &p.second->second, local_to_global_type_id_map);
- return p.first;
-}
-
-
-MergeStatus IRReader::MergeFunctionType(
- const FunctionTypeIR *addend_node, const IRReader &addend,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map) {
- auto p = UpdateUDTypeAccounting(
- addend_node, addend, local_to_global_type_id_map,
- &module_->function_types_);
- MergeCFunctionLikeDeps(addend, &p.second->second,
- local_to_global_type_id_map);
- return p.first;
-}
-
-
-template <typename T>
-MergeStatus IRReader::MergeReferencingTypeInternalAndUpdateParent(
- const IRReader &addend, const T *addend_node,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map,
- AbiElementMap<T> *parent_map, const std::string &updated_self_type_id) {
- MergeStatus merge_status;
- uint64_t old_max_type_id = max_type_id_;
-
- // Create copy of addend_node
- T added_node = *addend_node;
- added_node.SetSelfType(updated_self_type_id);
-
- // The merge status returned is the merge status of the referenced type.
- merge_status = MergeReferencingTypeInternal(addend, &added_node,
- local_to_global_type_id_map);
- if (merge_status.was_newly_added_) {
- // Emplace to map (type-referenced -> Referencing type)
- AddToMapAndTypeGraph(std::move(added_node), parent_map,
- &module_->type_graph_);
- return MergeStatus(true, updated_self_type_id);
- }
-
- // The type that the added_node references was not newly added to the parent
- // graph. However, we still might need to add the added_node to the parent
- // graph, since for the particular 'Kind' of the added_node, it may not be
- // present in the parent graph. This will be determined by looking at the
- // appropriate 'type-referenced' -> TypeElement map in the parent for the
- // type-id returned by the MergeStatus. If the map doesn't have an entry for
- // the type-id returned by the MergeStatus, the added_type is not present in
- // the parent graph and needs to be 'newly' added. We also need to modify the
- // global type id in the local_to_global_type_id map. The added_node should
- // already have it's self_type and referenced_type fields fixed up.
- // We maintain a rollback id to have contiguous type ids.
- max_type_id_ = old_max_type_id;
-
- // Try finding the referenced_type is referred to by any referencing type
- // of the same kind in the parent graph. It is safe to call this on the
- // added_node, since the referenced_type in the added_node would have been
- // modified by the MergeReferencingTypeInternal call.
- auto it = parent_map->find(GetReferencedTypeMapKey(added_node));
- if (it == parent_map->end()) {
- // There was no counterpart found for the added_node's type Kind referencing
- // the referenced type, so we added it to the parent and also updated the
- // local_to_global_type_id_map's global_id value.
- AddToMapAndTypeGraph(std::move(added_node), parent_map,
- &module_->type_graph_);
-
- merge_status = MergeStatus(true, updated_self_type_id);
- return merge_status;
- }
-
- // Update local_to_global_type_id map's MergeStatus.was_newly_added value for
- // this key with false since this was node was not newly added.
- // We never remove anything from the local_to_global_type_id_map, what's
- // the point ? Since you store the decision of whether the type was newly
- // added or not. It's global type id is the type-id of the element found
- // in the parent map which refers to the added_node's modified
- // referenced_type.
- merge_status = MergeStatus(false, it->second.GetSelfType());
- (*local_to_global_type_id_map)[addend_node->GetSelfType()] = merge_status;
-
- return merge_status;
-}
-
-
-// This method creates a new node for the addend node in the graph if MergeType
-// on the reference returned a MergeStatus with was_newly_added_ = true.
-MergeStatus IRReader::MergeReferencingType(
- const IRReader &addend, const TypeIR *addend_node,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map) {
- // First add the type 'pro-actively'. We need to do this since we'll need to
- // fill in 'referenced-type' fields in all this type's descendants and
- // descendants which are compound types (records), can refer to this type.
- std::string added_type_id = addend_node->GetSelfType();
- auto type_id_it = module_->type_graph_.find(added_type_id);
- if (type_id_it != module_->type_graph_.end()) {
- added_type_id = AllocateNewTypeId(added_type_id, *addend.module_);
- }
-
- // Add the added record type to the local_to_global_type_id_map.
- local_to_global_type_id_map->emplace(addend_node->GetSelfType(),
- MergeStatus(true, added_type_id));
-
- // Merge the type.
- switch (addend_node->GetKind()) {
- case PointerTypeKind:
- return MergeReferencingTypeInternalAndUpdateParent(
- addend, static_cast<const PointerTypeIR *>(addend_node),
- local_to_global_type_id_map, &module_->pointer_types_,
- added_type_id);
- case QualifiedTypeKind:
- return MergeReferencingTypeInternalAndUpdateParent(
- addend, static_cast<const QualifiedTypeIR *>(addend_node),
- local_to_global_type_id_map, &module_->qualified_types_,
- added_type_id);
- case ArrayTypeKind:
- return MergeReferencingTypeInternalAndUpdateParent(
- addend, static_cast<const ArrayTypeIR *>(addend_node),
- local_to_global_type_id_map, &module_->array_types_,
- added_type_id);
- case LvalueReferenceTypeKind:
- return MergeReferencingTypeInternalAndUpdateParent(
- addend, static_cast<const LvalueReferenceTypeIR *>(addend_node),
- local_to_global_type_id_map, &module_->lvalue_reference_types_,
- added_type_id);
- case RvalueReferenceTypeKind:
- return MergeReferencingTypeInternalAndUpdateParent(
- addend, static_cast<const RvalueReferenceTypeIR *>(addend_node),
- local_to_global_type_id_map, &module_->rvalue_reference_types_,
- added_type_id);
- default:
- // Only referencing types
- assert(0);
- }
-}
-
-
-MergeStatus IRReader::MergeTypeInternal(
- const TypeIR *addend_node, const IRReader &addend,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map) {
- switch (addend_node->GetKind()) {
- case BuiltinTypeKind:
- return MergeBuiltinType(
- static_cast<const BuiltinTypeIR *>(addend_node), addend,
- local_to_global_type_id_map);
- case RecordTypeKind:
- return MergeRecordAndDependencies(
- static_cast<const RecordTypeIR *>(addend_node), addend,
- local_to_global_type_id_map);
- case EnumTypeKind:
- return MergeEnumType(
- static_cast<const EnumTypeIR *>(addend_node), addend,
- local_to_global_type_id_map);
- case FunctionTypeKind:
- return MergeFunctionType(
- static_cast<const FunctionTypeIR *>(addend_node), addend,
- local_to_global_type_id_map);
- default:
- return MergeReferencingType(addend, addend_node,
- local_to_global_type_id_map);
- }
- assert(0);
-}
-
-
-MergeStatus IRReader::MergeType(
- const TypeIR *addend_node, const IRReader &addend,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map) {
- // Check if the addend type is already in the parent graph. Since we're
- // going to traverse all the dependencies add whichever ones are not in the
- // parent graph. This does not add the node itself though.
- auto type_it = local_to_global_type_id_map->find(addend_node->GetSelfType());
- if (type_it != local_to_global_type_id_map->end()) {
- return type_it->second;
- }
-
- MergeStatus merge_status = LookupType(
- addend_node, addend, local_to_global_type_id_map);
- if (!merge_status.was_newly_added_) {
- return merge_status;
- }
- merge_status = MergeTypeInternal(
- addend_node, addend, local_to_global_type_id_map);
- return merge_status;
-}
-
-
-void IRReader::MergeCFunctionLikeDeps(
- const IRReader &addend, CFunctionLikeIR *cfunction_like_ir,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map) {
- // Merge the return type.
- auto ret_type_it =
- addend.module_->type_graph_.find(cfunction_like_ir->GetReturnType());
- if (ret_type_it != addend.module_->type_graph_.end()) {
- // Merge the type if we can find another type in the parent module.
- MergeStatus ret_merge_status = MergeType(ret_type_it->second, addend,
- local_to_global_type_id_map);
- cfunction_like_ir->SetReturnType(ret_merge_status.type_id_);
- }
-
- // Merge the argument types.
- for (auto &param : cfunction_like_ir->GetParameters()) {
- MergeReferencingTypeInternal(addend, &param, local_to_global_type_id_map);
- }
-}
-
-
-void IRReader::MergeFunctionDeps(
- FunctionIR *added_node, const IRReader &addend,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map) {
- MergeCFunctionLikeDeps(addend, added_node, local_to_global_type_id_map);
-
- // Merge the template arguments.
- for (auto &template_element : added_node->GetTemplateElements()) {
- MergeReferencingTypeInternal(addend, &template_element,
- local_to_global_type_id_map);
- }
-}
-
-
-template <typename T>
-static bool IsLinkableMessagePresent(const LinkableMessageIR *lm,
- const AbiElementMap<T> &message_map) {
- return (message_map.find(lm->GetLinkerSetKey()) != message_map.end());
-}
-
-
-void IRReader::MergeFunction(
- const FunctionIR *addend_node, const IRReader &addend,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map) {
- const std::string &function_linkage_name = addend_node->GetLinkerSetKey();
- if (IsLinkableMessagePresent(addend_node, module_->functions_)) {
- // The functions and all of its dependencies have already been added.
- // No two globally visible functions can have the same symbol name.
- return;
- }
- FunctionIR function_ir = *addend_node;
- MergeFunctionDeps(&function_ir, addend, local_to_global_type_id_map);
- // Add it to the parent's function map.
- module_->functions_.emplace(function_linkage_name, std::move(function_ir));
-}
-
-
-std::string IRReader::AllocateNewTypeId(const std::string &addend_type_id,
- const ModuleIR &addend_module) {
- return addend_type_id + "#ODR:" + addend_module.GetCompilationUnitPath();
-}
-
-
-void IRReader::MergeGlobalVariable(
- const GlobalVarIR *addend_node, const IRReader &addend,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map) {
- const std::string &global_variable_linkage_name =
- addend_node->GetLinkerSetKey();
- if (IsLinkableMessagePresent(addend_node, module_->global_variables_)) {
- // The global variable and all of its dependencies have already been added.
- return;
- }
- GlobalVarIR global_variable_ir = *addend_node;
- MergeReferencingTypeInternal(addend, &global_variable_ir,
- local_to_global_type_id_map);
- module_->global_variables_.emplace(
- global_variable_linkage_name, std::move(global_variable_ir));
-}
-
-
-void IRReader::MergeGraphs(const IRReader &addend) {
- // Iterate through nodes of addend reader and merge them.
- // Keep a merged types cache since if a type is merged, so will all of its
- // dependencies which weren't already merged.
- AbiElementMap<MergeStatus> merged_types_cache;
-
- for (auto &&type_ir : addend.module_->type_graph_) {
- MergeType(type_ir.second, addend, &merged_types_cache);
- }
-
- for (auto &&function_ir : addend.module_->functions_) {
- MergeFunction(&function_ir.second, addend, &merged_types_cache);
- }
-
- for (auto &&global_var_ir : addend.module_->global_variables_) {
- MergeGlobalVariable(&global_var_ir.second, addend, &merged_types_cache);
- }
-}
-
-
} // namespace repr
} // header_checker
diff --git a/vndk/tools/header-checker/src/repr/ir_reader.h b/vndk/tools/header-checker/src/repr/ir_reader.h
index a35418354..ecd64bbf3 100644
--- a/vndk/tools/header-checker/src/repr/ir_reader.h
+++ b/vndk/tools/header-checker/src/repr/ir_reader.h
@@ -17,12 +17,9 @@
#include "repr/ir_representation.h"
-#include <cstdint>
-#include <list>
#include <memory>
#include <set>
#include <string>
-#include <utility>
namespace header_checker {
@@ -31,24 +28,6 @@ namespace repr {
class IRReader {
public:
- struct MergeStatus {
- MergeStatus(bool was_newly_added, const std::string &type_id)
- : was_newly_added_(was_newly_added), type_id_(type_id) {}
-
- MergeStatus() {}
-
- // type_id_ always has the global_type_id corresponding to the type this
- // MergeStatus corresponds to. For
- // generic reference types (pointers, qual types, l(r)value references etc),
- // this will be a proactively added type_id, which will be added to the
- // parent type_graph if the we decide to add the referencing type to the
- // parent post ODR checking.
- bool was_newly_added_ = false;
-
- std::string type_id_;
- };
-
- public:
static std::unique_ptr<IRReader> CreateIRReader(
TextFormatIR text_format,
const std::set<std::string> *exported_headers = nullptr);
@@ -68,112 +47,11 @@ class IRReader {
return std::move(module_);
}
- void MergeGraphs(const IRReader &addend);
-
private:
virtual bool ReadDumpImpl(const std::string &dump_file) = 0;
- void MergeCFunctionLikeDeps(
- const IRReader &addend, CFunctionLikeIR *cfunction_like_ir,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map);
-
- MergeStatus MergeFunctionType(
- const FunctionTypeIR *addend_node, const IRReader &addend,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map);
-
- MergeStatus MergeEnumType(
- const EnumTypeIR *addend_node, const IRReader &addend,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map);
-
- void MergeEnumDependencies(
- const IRReader &addend, EnumTypeIR *added_node,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map);
-
- MergeStatus MergeRecordAndDependencies(
- const RecordTypeIR *addend_node, const IRReader &addend,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map);
-
- void MergeRecordDependencies(
- const IRReader &addend, RecordTypeIR *added_node,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map);
-
- void MergeRecordFields(
- const IRReader &addend, RecordTypeIR *added_node,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map);
-
- void MergeRecordCXXBases(
- const IRReader &addend, RecordTypeIR *added_node,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map);
-
- void MergeRecordTemplateElements(
- const IRReader &addend, RecordTypeIR *added_node,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map);
-
- void MergeGlobalVariable(
- const GlobalVarIR *addend_node, const IRReader &addend,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map);
-
- void MergeGlobalVariables(
- const IRReader &addend,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map);
-
- void MergeFunctionDeps(
- FunctionIR *added_node, const IRReader &addend,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map);
-
- void MergeFunction(
- const FunctionIR *addend_node, const IRReader &addend,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map);
-
- template <typename T>
- MergeStatus MergeReferencingTypeInternalAndUpdateParent(
- const IRReader &addend, const T *addend_node,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map,
- AbiElementMap<T> *parent_map, const std::string &updated_self_type_id);
-
- MergeStatus MergeReferencingTypeInternal(
- const IRReader &addend, ReferencesOtherType *references_type,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map);
-
- MergeStatus MergeReferencingType(
- const IRReader &addend, const TypeIR *addend_node,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map);
-
- template <typename T>
- std::pair<MergeStatus, typename AbiElementMap<T>::iterator>
- UpdateUDTypeAccounting(
- const T *addend_node, const IRReader &addend,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map,
- AbiElementMap<T> *specific_type_map);
-
- MergeStatus MergeBuiltinType(
- const BuiltinTypeIR *builtin_type, const IRReader &addend,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map);
-
- MergeStatus LookupUserDefinedType(
- const TypeIR *ud_type, const IRReader &addend,
- const std::string &ud_type_unique_id,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map_);
-
- MergeStatus LookupType(
- const TypeIR *addend_node, const IRReader &addend,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map);
-
- MergeStatus MergeTypeInternal(
- const TypeIR *addend_node, const IRReader &addend,
- AbiElementMap<MergeStatus> *local_to_global_type_id_map);
-
- MergeStatus MergeType(
- const TypeIR *addend_type, const IRReader &addend,
- AbiElementMap<MergeStatus> *merged_types_cache);
-
- std::string AllocateNewTypeId(const std::string &addend_type_id,
- const ModuleIR &addend_module);
-
protected:
std::unique_ptr<ModuleIR> module_;
-
- uint64_t max_type_id_ = 0;
};
diff --git a/vndk/tools/header-checker/src/repr/ir_representation.cpp b/vndk/tools/header-checker/src/repr/ir_representation.cpp
index 50d1bf974..6f512fdaa 100644
--- a/vndk/tools/header-checker/src/repr/ir_representation.cpp
+++ b/vndk/tools/header-checker/src/repr/ir_representation.cpp
@@ -109,7 +109,7 @@ void ModuleIR::AddRecordType(RecordTypeIR &&record_type) {
auto it = AddToMapAndTypeGraph(
std::move(record_type), &record_types_, &type_graph_);
const std::string &key = GetODRListMapKey(&(it->second));
- AddToODRListMap(key, &(it->second));
+ AddToODRListMap(key, &(it->second), compilation_unit_path_);
}
@@ -120,7 +120,7 @@ void ModuleIR::AddFunctionType(FunctionTypeIR &&function_type) {
auto it = AddToMapAndTypeGraph(
std::move(function_type), &function_types_, &type_graph_);
const std::string &key = GetODRListMapKey(&(it->second));
- AddToODRListMap(key, &(it->second));
+ AddToODRListMap(key, &(it->second), compilation_unit_path_);
}
@@ -131,7 +131,7 @@ void ModuleIR::AddEnumType(EnumTypeIR &&enum_type) {
auto it = AddToMapAndTypeGraph(
std::move(enum_type), &enum_types_, &type_graph_);
const std::string &key = GetODRListMapKey(&(it->second));
- AddToODRListMap(key, (&it->second));
+ AddToODRListMap(key, (&it->second), compilation_unit_path_);
}
@@ -197,6 +197,34 @@ void ModuleIR::AddElfObject(ElfObjectIR &&elf_object) {
}
+std::string ModuleIR::GetCompilationUnitPath(const TypeIR *type_ir) const {
+ std::string key;
+ switch (type_ir->GetKind()) {
+ case RecordTypeKind:
+ key = GetODRListMapKey(static_cast<const RecordTypeIR *>(type_ir));
+ break;
+ case EnumTypeKind:
+ key = GetODRListMapKey(static_cast<const EnumTypeIR *>(type_ir));
+ break;
+ case FunctionTypeKind:
+ key = GetODRListMapKey(static_cast<const FunctionTypeIR *>(type_ir));
+ break;
+ default:
+ return "";
+ }
+ auto it = odr_list_map_.find(key);
+ if (it == odr_list_map_.end()) {
+ return "";
+ }
+ for (const auto &definition : it->second) {
+ if (definition.type_ir_ == type_ir) {
+ return definition.compilation_unit_path_;
+ }
+ }
+ return "";
+}
+
+
bool ModuleIR::IsLinkableMessageInExportedHeaders(
const LinkableMessageIR *linkable_message) const {
if (exported_headers_ == nullptr || exported_headers_->empty()) {
diff --git a/vndk/tools/header-checker/src/repr/ir_representation.h b/vndk/tools/header-checker/src/repr/ir_representation.h
index 12ba97a24..f74d3b7a7 100644
--- a/vndk/tools/header-checker/src/repr/ir_representation.h
+++ b/vndk/tools/header-checker/src/repr/ir_representation.h
@@ -37,9 +37,6 @@ using AbiElementMap = std::map<std::string, T>;
template <typename T>
using AbiElementUnorderedMap = std::unordered_map<std::string, T>;
-template <typename T>
-using AbiElementList = std::list<T>;
-
enum TextFormatIR {
ProtobufTextFormat = 0,
Json = 1,
@@ -759,6 +756,16 @@ class ElfObjectIR : public ElfSymbolIR {
}
};
+class TypeDefinition {
+ public:
+ TypeDefinition(const TypeIR *type_ir,
+ const std::string *compilation_unit_path)
+ : type_ir_(type_ir), compilation_unit_path_(*compilation_unit_path) {}
+
+ const TypeIR *type_ir_;
+ const std::string &compilation_unit_path_;
+};
+
class ModuleIR {
public:
ModuleIR(const std::set<std::string> *exported_headers)
@@ -828,7 +835,7 @@ class ModuleIR {
return type_graph_;
}
- const AbiElementUnorderedMap<std::list<const TypeIR *>> &
+ const AbiElementUnorderedMap<std::list<TypeDefinition>> &
GetODRListMap() const {
return odr_list_map_;
}
@@ -864,10 +871,19 @@ class ModuleIR {
void AddElfObject(ElfObjectIR &&elf_object);
- void AddToODRListMap(const std::string &key, const TypeIR *value) {
+ // Find the compilation unit path of a RecordTypeIR, FunctionTypeIR, or
+ // EnumTypeIR in odr_list_map_. Return an empty string if the type is not in
+ // the map.
+ std::string GetCompilationUnitPath(const TypeIR *type_ir) const;
+
+ void AddToODRListMap(const std::string &key, const TypeIR *type_ir,
+ const std::string &compilation_unit_path) {
+ auto compilation_unit_path_it =
+ compilation_unit_paths_.emplace(compilation_unit_path).first;
auto map_it = odr_list_map_.find(key);
+ TypeDefinition value(type_ir, &*compilation_unit_path_it);
if (map_it == odr_list_map_.end()) {
- odr_list_map_.emplace(key, std::list<const TypeIR *>({value}));
+ odr_list_map_.emplace(key, std::list<TypeDefinition>({value}));
return;
}
odr_list_map_[key].emplace_back(value);
@@ -883,7 +899,6 @@ class ModuleIR {
// File path to the compilation unit (*.sdump)
std::string compilation_unit_path_;
- AbiElementList<RecordTypeIR> record_types_list_;
AbiElementMap<FunctionIR> functions_;
AbiElementMap<GlobalVarIR> global_variables_;
AbiElementMap<RecordTypeIR> record_types_;
@@ -904,8 +919,13 @@ class ModuleIR {
AbiElementMap<ElfObjectIR> elf_objects_;
// type-id -> LinkableMessageIR * map
AbiElementMap<const TypeIR *> type_graph_;
- // maps unique_id + source_file -> const TypeIR *
- AbiElementUnorderedMap<std::list<const TypeIR *>> odr_list_map_;
+ // maps unique_id + source_file -> TypeDefinition
+ AbiElementUnorderedMap<std::list<TypeDefinition>> odr_list_map_;
+
+
+ private:
+ // The compilation unit paths referenced by odr_list_map_;
+ std::set<std::string> compilation_unit_paths_;
const std::set<std::string> *exported_headers_;
};
diff --git a/vndk/tools/header-checker/src/repr/json/ir_dumper.cpp b/vndk/tools/header-checker/src/repr/json/ir_dumper.cpp
index 8091a3ee3..328b9a2e1 100644
--- a/vndk/tools/header-checker/src/repr/json/ir_dumper.cpp
+++ b/vndk/tools/header-checker/src/repr/json/ir_dumper.cpp
@@ -362,10 +362,9 @@ bool JsonIRDumper::AddElfSymbolMessageIR(const ElfSymbolIR *elf_symbol_ir) {
}
static std::string DumpJson(const JsonObject &obj) {
- std::ostringstream output_stream;
- Json::StyledStreamWriter writer(/* indentation */ " ");
- writer.write(output_stream, obj);
- return output_stream.str();
+ Json::StreamWriterBuilder factory;
+ factory["indentation"] = " ";
+ return Json::writeString(factory, obj);
}
static void WriteTailTrimmedLinesToFile(const std::string &path,
diff --git a/vndk/tools/header-checker/src/repr/json/ir_reader.cpp b/vndk/tools/header-checker/src/repr/json/ir_reader.cpp
index db1928201..1df235907 100644
--- a/vndk/tools/header-checker/src/repr/json/ir_reader.cpp
+++ b/vndk/tools/header-checker/src/repr/json/ir_reader.cpp
@@ -154,12 +154,13 @@ GetElfSymbolBinding(const JsonObjectRef &elf_symbol) {
bool JsonIRReader::ReadDumpImpl(const std::string &dump_file) {
Json::Value tu_json;
- Json::Reader reader;
+ Json::CharReaderBuilder builder;
+ builder["collectComments"] = false;
std::ifstream input(dump_file);
- if (!reader.parse(input, tu_json, /* collectComments */ false)) {
- llvm::errs() << "Failed to parse JSON: "
- << reader.getFormattedErrorMessages() << "\n";
+ std::string errorMessage;
+ if (!Json::parseFromStream(builder, input, &tu_json, &errorMessage)) {
+ llvm::errs() << "Failed to parse JSON: " << errorMessage << "\n";
return false;
}
bool ok = true;
diff --git a/vndk/tools/header-checker/src/repr/protobuf/proto/Android.bp b/vndk/tools/header-checker/src/repr/protobuf/proto/Android.bp
index b63254a8a..f05a007a5 100644
--- a/vndk/tools/header-checker/src/repr/protobuf/proto/Android.bp
+++ b/vndk/tools/header-checker/src/repr/protobuf/proto/Android.bp
@@ -14,6 +14,10 @@
// limitations under the License.
//
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
cc_library_host_static {
name: "libheader-checker-proto",
diff --git a/vndk/tools/header-checker/src/repr/symbol/so_file_parser.cpp b/vndk/tools/header-checker/src/repr/symbol/so_file_parser.cpp
index 9320a5480..c880c5973 100644
--- a/vndk/tools/header-checker/src/repr/symbol/so_file_parser.cpp
+++ b/vndk/tools/header-checker/src/repr/symbol/so_file_parser.cpp
@@ -56,8 +56,6 @@ template <typename T>
class ELFSoFileParser : public SoFileParser {
private:
LLVM_ELF_IMPORT_TYPES_ELFT(T)
- typedef llvm::object::ELFFile<T> ELFO;
- typedef typename ELFO::Elf_Sym Elf_Sym;
public:
ELFSoFileParser(const llvm::object::ELFObjectFile<T> *obj);
@@ -91,21 +89,29 @@ ELFSoFileParser<T>::ELFSoFileParser(const llvm::object::ELFObjectFile<T> *obj) {
exported_symbols_.reset(new ExportedSymbolSet());
for (auto symbol_it : obj->getDynamicSymbolIterators()) {
- const Elf_Sym *elf_sym = obj->getSymbol(symbol_it.getRawDataRefImpl());
- assert (elf_sym != nullptr);
+ auto elf_sym_or_error = obj->getSymbol(symbol_it.getRawDataRefImpl());
+ assert (elf_sym_or_error);
+ const Elf_Sym *elf_sym = elf_sym_or_error.get();
if (!IsSymbolExported(elf_sym) || elf_sym->isUndefined()) {
continue;
}
ElfSymbolIR::ElfSymbolBinding symbol_binding =
LLVMToIRSymbolBinding(elf_sym->getBinding());
- std::string symbol_name = UnWrap(symbol_it.getName());
-
- llvm::object::SymbolRef::Type type = UnWrap(symbol_it.getType());
- if (type == llvm::object::SymbolRef::Type::ST_Function) {
- exported_symbols_->AddFunction(symbol_name, symbol_binding);
- } else if (type == llvm::object::SymbolRef::Type::ST_Data) {
- exported_symbols_->AddVar(symbol_name, symbol_binding);
+ std::string symbol_name(UnWrap(symbol_it.getName()));
+
+ switch (symbol_it.getELFType()) {
+ case llvm::ELF::STT_OBJECT:
+ case llvm::ELF::STT_COMMON:
+ case llvm::ELF::STT_TLS:
+ exported_symbols_->AddVar(symbol_name, symbol_binding);
+ break;
+ case llvm::ELF::STT_FUNC:
+ case llvm::ELF::STT_GNU_IFUNC:
+ exported_symbols_->AddFunction(symbol_name, symbol_binding);
+ break;
+ default:
+ break;
}
}
}
diff --git a/vndk/tools/header-checker/src/utils/collect_exported_headers.cpp b/vndk/tools/header-checker/src/utils/collect_exported_headers.cpp
index 0729e60e1..b7ce3454b 100644
--- a/vndk/tools/header-checker/src/utils/collect_exported_headers.cpp
+++ b/vndk/tools/header-checker/src/utils/collect_exported_headers.cpp
@@ -37,16 +37,33 @@ static bool ShouldSkipFile(llvm::StringRef &file_name) {
file_name.endswith(".cc") || file_name.endswith(".c"));
}
-std::string RealPath(const std::string &path) {
- char file_abs_path[PATH_MAX];
- if (realpath(path.c_str(), file_abs_path) == nullptr) {
+std::string GetCwd() {
+ llvm::SmallString<256> cwd;
+ if (llvm::sys::fs::current_path(cwd)) {
+ llvm::errs() << "ERROR: Failed to get current working directory\n";
+ ::exit(1);
+ }
+ return cwd.c_str();
+}
+
+std::string NormalizePath(const std::string &path,
+ const std::string &root_dir) {
+ llvm::SmallString<256> norm_path(path);
+ if (llvm::sys::fs::make_absolute(norm_path)) {
return "";
}
- return file_abs_path;
+ llvm::sys::path::remove_dots(norm_path, /* remove_dot_dot = */ true);
+ // Convert /cwd/path to /path.
+ if (llvm::sys::path::replace_path_prefix(norm_path, root_dir, "")) {
+ // Convert /path to path.
+ return llvm::sys::path::relative_path(norm_path.str()).str();
+ }
+ return std::string(norm_path);
}
-bool CollectExportedHeaderSet(const std::string &dir_name,
- std::set<std::string> *exported_headers) {
+static bool CollectExportedHeaderSet(const std::string &dir_name,
+ std::set<std::string> *exported_headers,
+ const std::string &root_dir) {
std::error_code ec;
llvm::sys::fs::recursive_directory_iterator walker(dir_name, ec);
// Default construction - end of directory.
@@ -81,16 +98,17 @@ bool CollectExportedHeaderSet(const std::string &dir_name,
continue;
}
- exported_headers->insert(RealPath(file_path));
+ exported_headers->insert(NormalizePath(file_path, root_dir));
}
return true;
}
-std::set<std::string> CollectAllExportedHeaders(
- const std::vector<std::string> &exported_header_dirs) {
+std::set<std::string>
+CollectAllExportedHeaders(const std::vector<std::string> &exported_header_dirs,
+ const std::string &root_dir) {
std::set<std::string> exported_headers;
for (auto &&dir : exported_header_dirs) {
- if (!CollectExportedHeaderSet(dir, &exported_headers)) {
+ if (!CollectExportedHeaderSet(dir, &exported_headers, root_dir)) {
llvm::errs() << "Couldn't collect exported headers\n";
::exit(1);
}
diff --git a/vndk/tools/header-checker/src/utils/collect_exported_headers_test.cpp b/vndk/tools/header-checker/src/utils/collect_exported_headers_test.cpp
new file mode 100644
index 000000000..0d32c3ba7
--- /dev/null
+++ b/vndk/tools/header-checker/src/utils/collect_exported_headers_test.cpp
@@ -0,0 +1,45 @@
+// Copyright (C) 2020 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "utils/header_abi_util.h"
+
+#include <gtest/gtest.h>
+
+
+namespace header_checker {
+namespace utils {
+
+
+TEST(CollectExportedHeadersTest, NormalizeAbsolutePaths) {
+ const std::string root = "/root/dir";
+ EXPECT_EQ("", NormalizePath(root, root));
+ EXPECT_EQ("/unit/test", NormalizePath("/unit/test", root));
+ EXPECT_EQ("/root/unit/test", NormalizePath(root + "/../unit/test", root));
+}
+
+
+TEST(CollectExportedHeadersTest, NormalizeCwdPaths) {
+ const std::string cwd = GetCwd();
+ ASSERT_NE("", cwd);
+ EXPECT_EQ("", NormalizePath("", cwd));
+ EXPECT_EQ("unit/test", NormalizePath("./unit/test/.", cwd));
+ EXPECT_EQ("unit/test", NormalizePath("unit//test//", cwd));
+ EXPECT_EQ("test", NormalizePath("unit/../test", cwd));
+ EXPECT_EQ("unit/test", NormalizePath(cwd + "/unit/test", cwd));
+ EXPECT_EQ('/', NormalizePath("../unit/test", cwd)[0]);
+}
+
+
+} // namespace utils
+} // namespace header_checker
diff --git a/vndk/tools/header-checker/src/utils/header_abi_util.h b/vndk/tools/header-checker/src/utils/header_abi_util.h
index 354c64d40..c9c6b1d1f 100644
--- a/vndk/tools/header-checker/src/utils/header_abi_util.h
+++ b/vndk/tools/header-checker/src/utils/header_abi_util.h
@@ -26,10 +26,15 @@ namespace header_checker {
namespace utils {
-std::string RealPath(const std::string &path);
+std::string GetCwd();
-std::set<std::string> CollectAllExportedHeaders(
- const std::vector<std::string> &exported_header_dirs);
+// Resolve '..' and '.'; if the path starts with root_dir, remove the prefix;
+// don't resolve symbolic links.
+std::string NormalizePath(const std::string &path, const std::string &root_dir);
+
+std::set<std::string>
+CollectAllExportedHeaders(const std::vector<std::string> &exported_header_dirs,
+ const std::string &root_dir);
inline std::string FindAndReplace(const std::string &candidate_str,
const std::string &find_str,
diff --git a/vndk/tools/header-checker/tests/expected/example1.cpp b/vndk/tools/header-checker/tests/expected/example1.cpp
index de9cc46d1..b9c5c1d8f 100644
--- a/vndk/tools/header-checker/tests/expected/example1.cpp
+++ b/vndk/tools/header-checker/tests/expected/example1.cpp
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI10HiddenBase"
- source_file: "/development/vndk/tools/header-checker/tests/input/example3.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example3.h"
linker_set_key: "_ZTI10HiddenBase"
self_type: "_ZTI10HiddenBase"
}
@@ -29,7 +29,7 @@ record_types {
size: 8
alignment: 8
referenced_type: "_ZTI4ListIfE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTI4ListIfE"
self_type: "_ZTI4ListIfE"
}
@@ -53,7 +53,7 @@ record_types {
size: 8
alignment: 8
referenced_type: "_ZTI4ListIiE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTI4ListIiE"
self_type: "_ZTI4ListIiE"
}
@@ -77,7 +77,7 @@ record_types {
size: 32
alignment: 4
referenced_type: "_ZTI5Hello"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTI5Hello"
self_type: "_ZTI5Hello"
}
@@ -126,7 +126,7 @@ record_types {
size: 56
alignment: 8
referenced_type: "_ZTI8CPPHello"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTI8CPPHello"
self_type: "_ZTI8CPPHello"
}
@@ -193,7 +193,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTIN4ListIfE5_NodeE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTIN4ListIfE5_NodeE"
self_type: "_ZTIN4ListIfE5_NodeE"
}
@@ -220,11 +220,11 @@ record_types {
}
record_types {
type_info {
- name: "Hello::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:19:3)"
+ name: "Hello::(anonymous struct at development/vndk/tools/header-checker/tests/input/example1.h:19:3)"
size: 12
alignment: 4
referenced_type: "_ZTIN5HelloUt1_E"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTIN5HelloUt1_E"
self_type: "_ZTIN5HelloUt1_E"
}
@@ -252,11 +252,11 @@ record_types {
}
record_types {
type_info {
- name: "Hello::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:19:3)::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:22:5)"
+ name: "Hello::(anonymous struct at development/vndk/tools/header-checker/tests/input/example1.h:19:3)::(anonymous struct at development/vndk/tools/header-checker/tests/input/example1.h:22:5)"
size: 4
alignment: 4
referenced_type: "_ZTIN5HelloUt1_Ut_E"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTIN5HelloUt1_Ut_E"
self_type: "_ZTIN5HelloUt1_Ut_E"
}
@@ -276,7 +276,7 @@ record_types {
size: 40
alignment: 8
referenced_type: "_ZTIN5test210HelloAgainE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZTIN5test210HelloAgainE"
self_type: "_ZTIN5test210HelloAgainE"
}
@@ -333,7 +333,7 @@ record_types {
size: 4
alignment: 4
referenced_type: "_ZTIN5test35Outer5InnerE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZTIN5test35Outer5InnerE"
self_type: "_ZTIN5test35Outer5InnerE"
}
@@ -352,7 +352,7 @@ record_types {
size: 4
alignment: 4
referenced_type: "_ZTIN5test35OuterE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZTIN5test35OuterE"
self_type: "_ZTIN5test35OuterE"
}
@@ -371,7 +371,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTIN5test38ByeAgainIdEE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZTIN5test38ByeAgainIdEE"
self_type: "_ZTIN5test38ByeAgainIdEE"
}
@@ -401,7 +401,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTIN5test38ByeAgainIfEE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZTIN5test38ByeAgainIfEE"
self_type: "_ZTIN5test38ByeAgainIfEE"
}
@@ -431,7 +431,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTI5Foo_s"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZTI5Foo_s"
self_type: "_ZTI5Foo_s"
}
@@ -448,11 +448,11 @@ enum_types {
}
enum_types {
type_info {
- name: "Hello::(anonymous enum at /development/vndk/tools/header-checker/tests/input/example1.h:17:3)"
+ name: "Hello::(anonymous enum at development/vndk/tools/header-checker/tests/input/example1.h:17:3)"
size: 4
alignment: 4
referenced_type: "_ZTIN5Hello2$AE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTIN5Hello2$AE"
self_type: "_ZTIN5Hello2$AE"
}
@@ -469,11 +469,11 @@ enum_types {
}
enum_types {
type_info {
- name: "Hello::(anonymous enum at /development/vndk/tools/header-checker/tests/input/example1.h:18:3)"
+ name: "Hello::(anonymous enum at development/vndk/tools/header-checker/tests/input/example1.h:18:3)"
size: 4
alignment: 4
referenced_type: "_ZTIN5Hello2$CE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTIN5Hello2$CE"
self_type: "_ZTIN5Hello2$CE"
}
@@ -494,7 +494,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN5test34KindE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZTIN5test34KindE"
self_type: "_ZTIN5test34KindE"
}
@@ -515,7 +515,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN8CPPHello3BlaE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTIN8CPPHello3BlaE"
self_type: "_ZTIN8CPPHello3BlaE"
}
@@ -532,7 +532,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI8CPPHello"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTIP8CPPHello"
self_type: "_ZTIP8CPPHello"
}
@@ -543,7 +543,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIKc"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTIPKc"
self_type: "_ZTIPKc"
}
@@ -554,7 +554,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIN4ListIfE5_NodeE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTIPN4ListIfE5_NodeE"
self_type: "_ZTIPN4ListIfE5_NodeE"
}
@@ -565,7 +565,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIN4ListIiE5_NodeE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTIPN4ListIiE5_NodeE"
self_type: "_ZTIPN4ListIiE5_NodeE"
}
@@ -576,7 +576,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIN5test210HelloAgainE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZTIPN5test210HelloAgainE"
self_type: "_ZTIPN5test210HelloAgainE"
}
@@ -587,7 +587,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -598,7 +598,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIi"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTIPi"
self_type: "_ZTIPi"
}
@@ -609,7 +609,7 @@ lvalue_reference_types {
size: 8
alignment: 8
referenced_type: "_ZTIKf"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTIRKf"
self_type: "_ZTIRKf"
}
@@ -724,7 +724,7 @@ qualified_types {
size: 2
alignment: 1
referenced_type: "_ZTIA2_b"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZTIA2_Kb"
self_type: "_ZTIA2_Kb"
}
@@ -738,7 +738,7 @@ qualified_types {
size: 56
alignment: 8
referenced_type: "_ZTI8CPPHello"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTIK8CPPHello"
self_type: "_ZTIK8CPPHello"
}
@@ -752,7 +752,7 @@ qualified_types {
size: 1
alignment: 1
referenced_type: "_ZTIc"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTIKc"
self_type: "_ZTIKc"
}
@@ -766,7 +766,7 @@ qualified_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTIKf"
self_type: "_ZTIKf"
}
@@ -780,7 +780,7 @@ qualified_types {
size: 4
alignment: 4
referenced_type: "_ZTIi"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTIKi"
self_type: "_ZTIKi"
}
@@ -794,7 +794,7 @@ array_types {
size: 2
alignment: 1
referenced_type: "_ZTIb"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZTIA2_b"
self_type: "_ZTIA2_b"
}
@@ -802,7 +802,7 @@ array_types {
functions {
return_type: "_ZTI4ListIfE"
function_name: "castInterface"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
parameters {
referenced_type: "_ZTI4ListIfE"
default_arg: false
@@ -838,7 +838,7 @@ functions {
functions {
return_type: "_ZTIi"
function_name: "boo"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
parameters {
referenced_type: "_ZTIK8CPPHello"
default_arg: false
@@ -860,14 +860,14 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "format"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_Z6formatv"
access: public_access
}
functions {
return_type: "_ZTIv"
function_name: "List<float>::_Node::_Node"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
parameters {
referenced_type: "_ZTIPN4ListIfE5_NodeE"
default_arg: false
@@ -884,7 +884,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "List<float>::_Node::_Node"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
parameters {
referenced_type: "_ZTIPN4ListIfE5_NodeE"
default_arg: false
@@ -901,7 +901,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "List<float>::_Node::~_Node"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
parameters {
referenced_type: "_ZTIPN4ListIfE5_NodeE"
default_arg: false
@@ -913,7 +913,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "List<float>::_Node::~_Node"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
parameters {
referenced_type: "_ZTIPN4ListIfE5_NodeE"
default_arg: false
@@ -925,7 +925,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "test2::HelloAgain::~HelloAgain"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
parameters {
referenced_type: "_ZTIPN5test210HelloAgainE"
default_arg: false
@@ -937,7 +937,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "test2::HelloAgain::~HelloAgain"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
parameters {
referenced_type: "_ZTIPN5test210HelloAgainE"
default_arg: false
@@ -949,7 +949,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "test2::HelloAgain::~HelloAgain"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
parameters {
referenced_type: "_ZTIPN5test210HelloAgainE"
default_arg: false
@@ -961,7 +961,7 @@ functions {
functions {
return_type: "_ZTIb"
function_name: "test3::End"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
parameters {
referenced_type: "_ZTIf"
default_arg: true
@@ -973,7 +973,7 @@ functions {
functions {
return_type: "_ZTIi"
function_name: "CPPHello::again"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
parameters {
referenced_type: "_ZTIP8CPPHello"
default_arg: false
@@ -985,7 +985,7 @@ functions {
functions {
return_type: "_ZTIi"
function_name: "CPPHello::test_enum"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
parameters {
referenced_type: "_ZTIP8CPPHello"
default_arg: false
@@ -997,7 +997,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "CPPHello::CPPHello"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
parameters {
referenced_type: "_ZTIP8CPPHello"
default_arg: false
@@ -1009,7 +1009,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "CPPHello::CPPHello"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
parameters {
referenced_type: "_ZTIP8CPPHello"
default_arg: false
@@ -1020,49 +1020,49 @@ functions {
}
global_vars {
name: "__test_var"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZL10__test_var"
referenced_type: "_ZTIA2_Kb"
access: public_access
}
global_vars {
name: "test2::HelloAgain::hello_forever"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZN5test210HelloAgain13hello_foreverE"
referenced_type: "_ZTIi"
access: public_access
}
global_vars {
name: "test3::double_bye"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZN5test310double_byeE"
referenced_type: "_ZTIN5test38ByeAgainIdEE"
access: public_access
}
global_vars {
name: "test3::ByeAgain<float>::foo_forever"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZN5test38ByeAgainIfE11foo_foreverE"
referenced_type: "_ZTIi"
access: public_access
}
global_vars {
name: "float_list_test"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "float_list_test"
referenced_type: "_ZTI4ListIfE"
access: public_access
}
global_vars {
name: "int_list_test"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "int_list_test"
referenced_type: "_ZTI4ListIiE"
access: public_access
}
global_vars {
name: "node"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "node"
referenced_type: "_ZTIN4ListIfE5_NodeE"
access: public_access
diff --git a/vndk/tools/header-checker/tests/expected/example1.h b/vndk/tools/header-checker/tests/expected/example1.h
index e359f21e6..d8c770ccc 100644
--- a/vndk/tools/header-checker/tests/expected/example1.h
+++ b/vndk/tools/header-checker/tests/expected/example1.h
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI10HiddenBase"
- source_file: "/development/vndk/tools/header-checker/tests/input/example3.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example3.h"
linker_set_key: "_ZTI10HiddenBase"
self_type: "_ZTI10HiddenBase"
}
@@ -29,7 +29,7 @@ record_types {
size: 8
alignment: 8
referenced_type: "_ZTI4ListIfE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTI4ListIfE"
self_type: "_ZTI4ListIfE"
}
@@ -53,7 +53,7 @@ record_types {
size: 8
alignment: 8
referenced_type: "_ZTI4ListIiE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTI4ListIiE"
self_type: "_ZTI4ListIiE"
}
@@ -77,7 +77,7 @@ record_types {
size: 32
alignment: 4
referenced_type: "_ZTI5Hello"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTI5Hello"
self_type: "_ZTI5Hello"
}
@@ -126,7 +126,7 @@ record_types {
size: 56
alignment: 8
referenced_type: "_ZTI8CPPHello"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTI8CPPHello"
self_type: "_ZTI8CPPHello"
}
@@ -193,7 +193,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTIN4ListIfE5_NodeE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTIN4ListIfE5_NodeE"
self_type: "_ZTIN4ListIfE5_NodeE"
}
@@ -220,11 +220,11 @@ record_types {
}
record_types {
type_info {
- name: "Hello::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:19:3)"
+ name: "Hello::(anonymous struct at development/vndk/tools/header-checker/tests/input/example1.h:19:3)"
size: 12
alignment: 4
referenced_type: "_ZTIN5HelloUt1_E"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTIN5HelloUt1_E"
self_type: "_ZTIN5HelloUt1_E"
}
@@ -252,11 +252,11 @@ record_types {
}
record_types {
type_info {
- name: "Hello::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:19:3)::(anonymous struct at /development/vndk/tools/header-checker/tests/input/example1.h:22:5)"
+ name: "Hello::(anonymous struct at development/vndk/tools/header-checker/tests/input/example1.h:19:3)::(anonymous struct at development/vndk/tools/header-checker/tests/input/example1.h:22:5)"
size: 4
alignment: 4
referenced_type: "_ZTIN5HelloUt1_Ut_E"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTIN5HelloUt1_Ut_E"
self_type: "_ZTIN5HelloUt1_Ut_E"
}
@@ -276,7 +276,7 @@ record_types {
size: 40
alignment: 8
referenced_type: "_ZTIN5test210HelloAgainE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZTIN5test210HelloAgainE"
self_type: "_ZTIN5test210HelloAgainE"
}
@@ -333,7 +333,7 @@ record_types {
size: 4
alignment: 4
referenced_type: "_ZTIN5test35Outer5InnerE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZTIN5test35Outer5InnerE"
self_type: "_ZTIN5test35Outer5InnerE"
}
@@ -352,7 +352,7 @@ record_types {
size: 4
alignment: 4
referenced_type: "_ZTIN5test35OuterE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZTIN5test35OuterE"
self_type: "_ZTIN5test35OuterE"
}
@@ -371,7 +371,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTIN5test38ByeAgainIdEE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZTIN5test38ByeAgainIdEE"
self_type: "_ZTIN5test38ByeAgainIdEE"
}
@@ -401,7 +401,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTIN5test38ByeAgainIfEE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZTIN5test38ByeAgainIfEE"
self_type: "_ZTIN5test38ByeAgainIfEE"
}
@@ -431,7 +431,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTI5Foo_s"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZTI5Foo_s"
self_type: "_ZTI5Foo_s"
}
@@ -448,11 +448,11 @@ enum_types {
}
enum_types {
type_info {
- name: "Hello::(anonymous enum at /development/vndk/tools/header-checker/tests/input/example1.h:17:3)"
+ name: "Hello::(anonymous enum at development/vndk/tools/header-checker/tests/input/example1.h:17:3)"
size: 4
alignment: 4
referenced_type: "_ZTIN5Hello2$AE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTIN5Hello2$AE"
self_type: "_ZTIN5Hello2$AE"
}
@@ -469,11 +469,11 @@ enum_types {
}
enum_types {
type_info {
- name: "Hello::(anonymous enum at /development/vndk/tools/header-checker/tests/input/example1.h:18:3)"
+ name: "Hello::(anonymous enum at development/vndk/tools/header-checker/tests/input/example1.h:18:3)"
size: 4
alignment: 4
referenced_type: "_ZTIN5Hello2$CE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTIN5Hello2$CE"
self_type: "_ZTIN5Hello2$CE"
}
@@ -494,7 +494,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN5test34KindE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZTIN5test34KindE"
self_type: "_ZTIN5test34KindE"
}
@@ -515,7 +515,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN8CPPHello3BlaE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTIN8CPPHello3BlaE"
self_type: "_ZTIN8CPPHello3BlaE"
}
@@ -532,7 +532,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI18ForwardDeclaration"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTIP18ForwardDeclaration"
self_type: "_ZTIP18ForwardDeclaration"
}
@@ -543,7 +543,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI4ListIiE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTIP4ListIiE"
self_type: "_ZTIP4ListIiE"
}
@@ -554,7 +554,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI8CPPHello"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTIP8CPPHello"
self_type: "_ZTIP8CPPHello"
}
@@ -565,7 +565,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI9StackNodeIiE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTIP9StackNodeIiE"
self_type: "_ZTIP9StackNodeIiE"
}
@@ -576,7 +576,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIKN4ListIfE5_NodeE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTIPKN4ListIfE5_NodeE"
self_type: "_ZTIPKN4ListIfE5_NodeE"
}
@@ -587,7 +587,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIKc"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTIPKc"
self_type: "_ZTIPKc"
}
@@ -598,7 +598,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIN4ListIfE5_NodeE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTIPN4ListIfE5_NodeE"
self_type: "_ZTIPN4ListIfE5_NodeE"
}
@@ -609,7 +609,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIN4ListIiE5_NodeE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTIPN4ListIiE5_NodeE"
self_type: "_ZTIPN4ListIiE5_NodeE"
}
@@ -620,7 +620,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIN5test210HelloAgainE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZTIPN5test210HelloAgainE"
self_type: "_ZTIPN5test210HelloAgainE"
}
@@ -631,7 +631,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -642,7 +642,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIi"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTIPi"
self_type: "_ZTIPi"
}
@@ -653,7 +653,7 @@ lvalue_reference_types {
size: 8
alignment: 8
referenced_type: "_ZTIKf"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTIRKf"
self_type: "_ZTIRKf"
}
@@ -664,7 +664,7 @@ lvalue_reference_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTIRf"
self_type: "_ZTIRf"
}
@@ -675,7 +675,7 @@ lvalue_reference_types {
size: 8
alignment: 8
referenced_type: "_ZTIi"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTIRi"
self_type: "_ZTIRi"
}
@@ -790,7 +790,7 @@ qualified_types {
size: 2
alignment: 1
referenced_type: "_ZTIA2_b"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZTIA2_Kb"
self_type: "_ZTIA2_Kb"
}
@@ -804,7 +804,7 @@ qualified_types {
size: 56
alignment: 8
referenced_type: "_ZTI8CPPHello"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTIK8CPPHello"
self_type: "_ZTIK8CPPHello"
}
@@ -818,7 +818,7 @@ qualified_types {
size: 24
alignment: 8
referenced_type: "_ZTIN4ListIfE5_NodeE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTIKN4ListIfE5_NodeE"
self_type: "_ZTIKN4ListIfE5_NodeE"
}
@@ -832,7 +832,7 @@ qualified_types {
size: 1
alignment: 1
referenced_type: "_ZTIc"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTIKc"
self_type: "_ZTIKc"
}
@@ -846,7 +846,7 @@ qualified_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTIKf"
self_type: "_ZTIKf"
}
@@ -860,7 +860,7 @@ qualified_types {
size: 4
alignment: 4
referenced_type: "_ZTIi"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_ZTIKi"
self_type: "_ZTIKi"
}
@@ -874,7 +874,7 @@ array_types {
size: 2
alignment: 1
referenced_type: "_ZTIb"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZTIA2_b"
self_type: "_ZTIA2_b"
}
@@ -882,7 +882,7 @@ array_types {
functions {
return_type: "_ZTIi"
function_name: "ListMangle"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
parameters {
referenced_type: "_ZTIP4ListIiE"
default_arg: false
@@ -899,7 +899,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "fooVariadic"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
parameters {
referenced_type: "_ZTIRi"
default_arg: false
@@ -916,7 +916,7 @@ functions {
functions {
return_type: "_ZTI4ListIfE"
function_name: "castInterface"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
parameters {
referenced_type: "_ZTI4ListIfE"
default_arg: false
@@ -952,7 +952,7 @@ functions {
functions {
return_type: "_ZTIi"
function_name: "boo"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
parameters {
referenced_type: "_ZTIK8CPPHello"
default_arg: false
@@ -974,14 +974,14 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "format"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "_Z6formatv"
access: public_access
}
functions {
return_type: "_ZTIv"
function_name: "List<float>::_Node::PrivateNode"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
parameters {
referenced_type: "_ZTIPN4ListIfE5_NodeE"
default_arg: false
@@ -993,7 +993,7 @@ functions {
functions {
return_type: "_ZTIRf"
function_name: "List<float>::_Node::getRef"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
parameters {
referenced_type: "_ZTIPN4ListIfE5_NodeE"
default_arg: false
@@ -1005,7 +1005,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "List<float>::_Node::_Node"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
parameters {
referenced_type: "_ZTIPN4ListIfE5_NodeE"
default_arg: false
@@ -1022,7 +1022,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "List<float>::_Node::_Node"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
parameters {
referenced_type: "_ZTIPN4ListIfE5_NodeE"
default_arg: false
@@ -1039,7 +1039,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "List<float>::_Node::~_Node"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
parameters {
referenced_type: "_ZTIPN4ListIfE5_NodeE"
default_arg: false
@@ -1051,7 +1051,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "List<float>::_Node::~_Node"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
parameters {
referenced_type: "_ZTIPN4ListIfE5_NodeE"
default_arg: false
@@ -1063,7 +1063,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "test2::HelloAgain::~HelloAgain"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
parameters {
referenced_type: "_ZTIPN5test210HelloAgainE"
default_arg: false
@@ -1075,7 +1075,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "test2::HelloAgain::~HelloAgain"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
parameters {
referenced_type: "_ZTIPN5test210HelloAgainE"
default_arg: false
@@ -1087,7 +1087,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "test2::HelloAgain::~HelloAgain"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
parameters {
referenced_type: "_ZTIPN5test210HelloAgainE"
default_arg: false
@@ -1099,7 +1099,7 @@ functions {
functions {
return_type: "_ZTIb"
function_name: "test3::End"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
parameters {
referenced_type: "_ZTIf"
default_arg: true
@@ -1111,7 +1111,7 @@ functions {
functions {
return_type: "_ZTIi"
function_name: "CPPHello::again"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
parameters {
referenced_type: "_ZTIP8CPPHello"
default_arg: false
@@ -1123,7 +1123,7 @@ functions {
functions {
return_type: "_ZTIi"
function_name: "CPPHello::test_enum"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
parameters {
referenced_type: "_ZTIP8CPPHello"
default_arg: false
@@ -1135,7 +1135,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "CPPHello::CPPHello"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
parameters {
referenced_type: "_ZTIP8CPPHello"
default_arg: false
@@ -1147,7 +1147,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "CPPHello::CPPHello"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
parameters {
referenced_type: "_ZTIP8CPPHello"
default_arg: false
@@ -1159,7 +1159,7 @@ functions {
functions {
return_type: "_ZTIRKf"
function_name: "List<float>::_Node::getRef"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
parameters {
referenced_type: "_ZTIPKN4ListIfE5_NodeE"
default_arg: false
@@ -1171,7 +1171,7 @@ functions {
functions {
return_type: "_ZTIi"
function_name: "uses_forward_decl"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
parameters {
referenced_type: "_ZTIP18ForwardDeclaration"
default_arg: false
@@ -1182,49 +1182,49 @@ functions {
}
global_vars {
name: "__test_var"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZL10__test_var"
referenced_type: "_ZTIA2_Kb"
access: public_access
}
global_vars {
name: "test2::HelloAgain::hello_forever"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZN5test210HelloAgain13hello_foreverE"
referenced_type: "_ZTIi"
access: public_access
}
global_vars {
name: "test3::double_bye"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZN5test310double_byeE"
referenced_type: "_ZTIN5test38ByeAgainIdEE"
access: public_access
}
global_vars {
name: "test3::ByeAgain<float>::foo_forever"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZN5test38ByeAgainIfE11foo_foreverE"
referenced_type: "_ZTIi"
access: public_access
}
global_vars {
name: "float_list_test"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "float_list_test"
referenced_type: "_ZTI4ListIfE"
access: public_access
}
global_vars {
name: "int_list_test"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "int_list_test"
referenced_type: "_ZTI4ListIiE"
access: public_access
}
global_vars {
name: "node"
- source_file: "/development/vndk/tools/header-checker/tests/input/example1.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example1.h"
linker_set_key: "node"
referenced_type: "_ZTIN4ListIfE5_NodeE"
access: public_access
diff --git a/vndk/tools/header-checker/tests/expected/example2.h b/vndk/tools/header-checker/tests/expected/example2.h
index 9bd1cbe28..4cd0d1c12 100644
--- a/vndk/tools/header-checker/tests/expected/example2.h
+++ b/vndk/tools/header-checker/tests/expected/example2.h
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI10HiddenBase"
- source_file: "/development/vndk/tools/header-checker/tests/input/example3.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example3.h"
linker_set_key: "_ZTI10HiddenBase"
self_type: "_ZTI10HiddenBase"
}
@@ -29,7 +29,7 @@ record_types {
size: 40
alignment: 8
referenced_type: "_ZTIN5test210HelloAgainE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZTIN5test210HelloAgainE"
self_type: "_ZTIN5test210HelloAgainE"
}
@@ -86,7 +86,7 @@ record_types {
size: 4
alignment: 4
referenced_type: "_ZTIN5test35Outer5InnerE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZTIN5test35Outer5InnerE"
self_type: "_ZTIN5test35Outer5InnerE"
}
@@ -105,7 +105,7 @@ record_types {
size: 4
alignment: 4
referenced_type: "_ZTIN5test35OuterE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZTIN5test35OuterE"
self_type: "_ZTIN5test35OuterE"
}
@@ -124,7 +124,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTIN5test38ByeAgainIdEE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZTIN5test38ByeAgainIdEE"
self_type: "_ZTIN5test38ByeAgainIdEE"
}
@@ -154,7 +154,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTIN5test38ByeAgainIfEE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZTIN5test38ByeAgainIfEE"
self_type: "_ZTIN5test38ByeAgainIfEE"
}
@@ -184,7 +184,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTI5Foo_s"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZTI5Foo_s"
self_type: "_ZTI5Foo_s"
}
@@ -205,7 +205,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN5test34KindE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZTIN5test34KindE"
self_type: "_ZTIN5test34KindE"
}
@@ -226,7 +226,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIN5test210HelloAgainE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZTIPN5test210HelloAgainE"
self_type: "_ZTIPN5test210HelloAgainE"
}
@@ -237,7 +237,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIN5test38ByeAgainIdEE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZTIPN5test38ByeAgainIdEE"
self_type: "_ZTIPN5test38ByeAgainIdEE"
}
@@ -248,7 +248,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIN5test38ByeAgainIfEE"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZTIPN5test38ByeAgainIfEE"
self_type: "_ZTIPN5test38ByeAgainIfEE"
}
@@ -337,7 +337,7 @@ qualified_types {
size: 2
alignment: 1
referenced_type: "_ZTIA2_b"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZTIA2_Kb"
self_type: "_ZTIA2_Kb"
}
@@ -351,7 +351,7 @@ array_types {
size: 2
alignment: 1
referenced_type: "_ZTIb"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZTIA2_b"
self_type: "_ZTIA2_b"
}
@@ -359,7 +359,7 @@ array_types {
functions {
return_type: "_ZTIi"
function_name: "test2::HelloAgain::again"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
parameters {
referenced_type: "_ZTIPN5test210HelloAgainE"
default_arg: false
@@ -371,7 +371,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "test2::HelloAgain::~HelloAgain"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
parameters {
referenced_type: "_ZTIPN5test210HelloAgainE"
default_arg: false
@@ -383,7 +383,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "test2::HelloAgain::~HelloAgain"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
parameters {
referenced_type: "_ZTIPN5test210HelloAgainE"
default_arg: false
@@ -395,7 +395,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "test2::HelloAgain::~HelloAgain"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
parameters {
referenced_type: "_ZTIPN5test210HelloAgainE"
default_arg: false
@@ -407,7 +407,7 @@ functions {
functions {
return_type: "_ZTIb"
function_name: "test3::End"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
parameters {
referenced_type: "_ZTIf"
default_arg: true
@@ -419,7 +419,7 @@ functions {
functions {
return_type: "_ZTIb"
function_name: "test3::Begin"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
parameters {
referenced_type: "_ZTIf"
default_arg: false
@@ -449,7 +449,7 @@ functions {
functions {
return_type: "_ZTINSt3__16vectorIPiNS_9allocatorIS1_EEEE"
function_name: "test3::Dummy"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -461,7 +461,7 @@ functions {
functions {
return_type: "_ZTId"
function_name: "test3::ByeAgain<double>::method_foo"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
parameters {
referenced_type: "_ZTIPN5test38ByeAgainIdEE"
default_arg: false
@@ -478,7 +478,7 @@ functions {
functions {
return_type: "_ZTIf"
function_name: "test3::ByeAgain<float>::method_foo"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
parameters {
referenced_type: "_ZTIPN5test38ByeAgainIfEE"
default_arg: false
@@ -494,28 +494,28 @@ functions {
}
global_vars {
name: "__test_var"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZL10__test_var"
referenced_type: "_ZTIA2_Kb"
access: public_access
}
global_vars {
name: "test2::HelloAgain::hello_forever"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZN5test210HelloAgain13hello_foreverE"
referenced_type: "_ZTIi"
access: public_access
}
global_vars {
name: "test3::double_bye"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZN5test310double_byeE"
referenced_type: "_ZTIN5test38ByeAgainIdEE"
access: public_access
}
global_vars {
name: "test3::ByeAgain<float>::foo_forever"
- source_file: "/development/vndk/tools/header-checker/tests/input/example2.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example2.h"
linker_set_key: "_ZN5test38ByeAgainIfE11foo_foreverE"
referenced_type: "_ZTIi"
access: public_access
diff --git a/vndk/tools/header-checker/tests/expected/example3.h b/vndk/tools/header-checker/tests/expected/example3.h
index e6aacb431..60226f1a4 100644
--- a/vndk/tools/header-checker/tests/expected/example3.h
+++ b/vndk/tools/header-checker/tests/expected/example3.h
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI10HiddenBase"
- source_file: "/development/vndk/tools/header-checker/tests/input/example3.h"
+ source_file: "development/vndk/tools/header-checker/tests/input/example3.h"
linker_set_key: "_ZTI10HiddenBase"
self_type: "_ZTI10HiddenBase"
}
diff --git a/vndk/tools/header-checker/tests/gen_all.py b/vndk/tools/header-checker/tests/gen_all.py
index 7b4f5d893..e0e7122c4 100755
--- a/vndk/tools/header-checker/tests/gen_all.py
+++ b/vndk/tools/header-checker/tests/gen_all.py
@@ -12,6 +12,7 @@ from utils import run_header_abi_dumper
from module import Module
from test import INPUT_DIR
from test import EXPECTED_DIR
+from test import EXPORTED_HEADER_DIRS
from test import make_and_copy_reference_dumps
FILE_EXTENSIONS = ['h', 'hpp', 'hxx', 'cpp', 'cc', 'c']
@@ -34,11 +35,10 @@ def main():
output_path = os.path.join(EXPECTED_DIR, input_rel_path)
print('generating', output_path, '...')
- output_content = run_header_abi_dumper(input_path)
-
os.makedirs(os.path.dirname(output_path), exist_ok=True)
- with open(output_path, 'w') as f:
- f.write(output_content)
+ run_header_abi_dumper(input_path, output_path,
+ export_include_dirs=EXPORTED_HEADER_DIRS)
+
modules = Module.get_test_modules()
for module in modules:
print('Created abi dump at', make_and_copy_reference_dumps(module))
diff --git a/ndk/Android.bp b/vndk/tools/header-checker/tests/integration/ifunc/Android.bp
index 694ed1508..b3e10c8d2 100644
--- a/ndk/Android.bp
+++ b/vndk/tools/header-checker/tests/integration/ifunc/Android.bp
@@ -1,5 +1,5 @@
//
-// Copyright (C) 2016 The Android Open Source Project
+// Copyright (C) 2020 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -14,13 +14,14 @@
// limitations under the License.
//
-ndk_headers {
- name: "libz_headers",
- from: "zlib",
- to: "",
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+cc_library {
+ name: "libifunc",
srcs: [
- "zlib/zconf.h",
- "zlib/zlib.h",
+ "ifunc.c",
],
- license: "zlib/NOTICE",
+ enabled: false,
}
diff --git a/vndk/tools/header-checker/tests/integration/ifunc/ifunc.c b/vndk/tools/header-checker/tests/integration/ifunc/ifunc.c
new file mode 100644
index 000000000..f2f84df11
--- /dev/null
+++ b/vndk/tools/header-checker/tests/integration/ifunc/ifunc.c
@@ -0,0 +1,5 @@
+__attribute__((used)) static void *ifunc_resolver() {
+ return 0;
+}
+
+void ifunc() __attribute__((ifunc("ifunc_resolver")));
diff --git a/vndk/tools/header-checker/tests/integration/ifunc/map.txt b/vndk/tools/header-checker/tests/integration/ifunc/map.txt
new file mode 100644
index 000000000..80649a44c
--- /dev/null
+++ b/vndk/tools/header-checker/tests/integration/ifunc/map.txt
@@ -0,0 +1,4 @@
+libifunc {
+ global:
+ ifunc;
+};
diff --git a/vndk/tools/header-checker/tests/integration/ifunc/prebuilts/libifunc.so b/vndk/tools/header-checker/tests/integration/ifunc/prebuilts/libifunc.so
new file mode 100755
index 000000000..ce122eced
--- /dev/null
+++ b/vndk/tools/header-checker/tests/integration/ifunc/prebuilts/libifunc.so
Binary files differ
diff --git a/vndk/tools/header-checker/tests/integration/merge_multi_definitions/include/def1.h b/vndk/tools/header-checker/tests/integration/merge_multi_definitions/include/def1.h
new file mode 100644
index 000000000..54686ba13
--- /dev/null
+++ b/vndk/tools/header-checker/tests/integration/merge_multi_definitions/include/def1.h
@@ -0,0 +1,9 @@
+extern char var;
+
+struct Struct {
+ Struct *member1;
+};
+
+struct Opaque;
+
+void func(const struct Struct *, const struct Opaque *);
diff --git a/vndk/tools/header-checker/tests/integration/merge_multi_definitions/include/def2.h b/vndk/tools/header-checker/tests/integration/merge_multi_definitions/include/def2.h
new file mode 100644
index 000000000..075f78cab
--- /dev/null
+++ b/vndk/tools/header-checker/tests/integration/merge_multi_definitions/include/def2.h
@@ -0,0 +1,9 @@
+extern int var;
+
+struct Struct {
+ Struct *member2;
+};
+
+struct Opaque;
+
+void func(const struct Opaque *, const struct Struct *);
diff --git a/vndk/tools/header-checker/tests/integration/merge_multi_definitions/map.txt b/vndk/tools/header-checker/tests/integration/merge_multi_definitions/map.txt
new file mode 100644
index 000000000..654d2c4bf
--- /dev/null
+++ b/vndk/tools/header-checker/tests/integration/merge_multi_definitions/map.txt
@@ -0,0 +1,5 @@
+libmerge_multi_definitions {
+ global:
+ func;
+ var;
+};
diff --git a/vndk/tools/header-checker/tests/integration/version_script_example/Android.bp b/vndk/tools/header-checker/tests/integration/version_script_example/Android.bp
index 7228d3b96..0a8c15b89 100644
--- a/vndk/tools/header-checker/tests/integration/version_script_example/Android.bp
+++ b/vndk/tools/header-checker/tests/integration/version_script_example/Android.bp
@@ -14,6 +14,10 @@
// limitations under the License.
//
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
cc_library {
name: "libversion_script_example",
srcs: [
diff --git a/vndk/tools/header-checker/tests/module.py b/vndk/tools/header-checker/tests/module.py
index c3396153e..d97585c4d 100755
--- a/vndk/tools/header-checker/tests/module.py
+++ b/vndk/tools/header-checker/tests/module.py
@@ -9,7 +9,6 @@ import_path = os.path.abspath(os.path.join(import_path, 'utils'))
sys.path.insert(1, import_path)
from utils import run_header_abi_dumper
-from utils import run_header_abi_dumper_on_file
from utils import run_header_abi_linker
from utils import SOURCE_ABI_DUMP_EXT
@@ -50,8 +49,8 @@ class Module(object):
"""Returns the module name followed by file extension."""
raise NotImplementedError()
- def make_dump(self):
- """Returns the dump content as a string."""
+ def make_dump(self, output_path):
+ """Create a dump file."""
raise NotImplementedError()
def mutate_for_arch(self, target_arch):
@@ -89,9 +88,9 @@ class SdumpModule(Module):
def get_dump_name(self):
return self.name + '.sdump'
- def make_dump(self):
+ def make_dump(self, output_path):
return run_header_abi_dumper(
- self.src, cflags=self.cflags,
+ self.src, output_path, cflags=self.cflags,
export_include_dirs=self.export_include_dirs,
flags=self.dumper_flags)
@@ -115,23 +114,29 @@ class LsdumpModule(Module):
def get_dump_name(self):
return self.name + SOURCE_ABI_DUMP_EXT
- def make_dump(self):
+ def make_dump(self, output_path):
"""For each source file, produce a .sdump file, and link them to form
an lsump file."""
dumps_to_link = []
with tempfile.TemporaryDirectory() as tmp:
- output_lsdump = os.path.join(tmp, self.get_dump_name())
for src in self.srcs:
- output_path = os.path.join(tmp,
- os.path.basename(src) + '.sdump')
- dumps_to_link.append(output_path)
- run_header_abi_dumper_on_file(
- src, output_path, self.export_include_dirs,
- self.cflags + self.arch_cflags,
- self.dumper_flags)
- return run_header_abi_linker(output_lsdump, dumps_to_link,
- self.version_script, self.api,
- self.arch, self.linker_flags)
+ sdump_path = os.path.join(tmp,
+ os.path.basename(src) + '.sdump')
+ dumps_to_link.append(sdump_path)
+ run_header_abi_dumper(
+ src, sdump_path, self.cflags + self.arch_cflags,
+ self.export_include_dirs, self.dumper_flags)
+
+ lsdump_path = os.path.join(tmp, self.get_dump_name())
+ run_header_abi_linker(dumps_to_link, lsdump_path,
+ self.version_script, self.api, self.arch,
+ self.linker_flags)
+ # Replace the absolute tmp paths in the type ID.
+ with open(lsdump_path, 'r') as lsdump_file:
+ content = lsdump_file.read().replace(tmp, '')
+
+ with open(output_path, 'w') as output_file:
+ output_file.write(content)
def mutate_for_arch(self, target_arch):
return LsdumpModule(self.name, self.srcs, self.version_script,
@@ -414,6 +419,17 @@ TEST_MODULES = [
export_include_dirs=['integration/c_and_cpp/include'],
),
LsdumpModule(
+ name='libifunc',
+ srcs=['integration/ifunc/ifunc.c'],
+ version_script='integration/ifunc/map.txt',
+ export_include_dirs=[],
+ linker_flags=[
+ '-so', relative_to_abs_path(
+ 'integration/ifunc/prebuilts/libifunc.so'
+ ),
+ ]
+ ),
+ LsdumpModule(
name='libgolden_cpp_member_name_changed',
srcs=[
'integration/cpp/gold/golden_1.cpp',
@@ -631,6 +647,17 @@ TEST_MODULES = [
export_include_dirs=['integration/cpp/anonymous_enum/include'],
linker_flags=['-output-format', 'Json'],
),
+ LsdumpModule(
+ name='libmerge_multi_definitions',
+ arch='arm64',
+ srcs=[
+ 'integration/merge_multi_definitions/include/def1.h',
+ 'integration/merge_multi_definitions/include/def2.h',
+ ],
+ version_script='integration/merge_multi_definitions/map.txt',
+ export_include_dirs=['integration/merge_multi_definitions/include'],
+ linker_flags=['-output-format', 'Json', '-sources-per-thread', '1'],
+ ),
]
TEST_MODULES = {m.name: m for m in TEST_MODULES}
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm/known_issues.h.sdump b/vndk/tools/header-checker/tests/reference_dumps/arm/known_issues.h.sdump
index cc90665f8..791811d65 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm/known_issues.h.sdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm/known_issues.h.sdump
@@ -23,19 +23,19 @@
"linker_set_key" : "non_type_template",
"name" : "non_type_template",
"referenced_type" : "_ZTIi",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h"
},
{
"linker_set_key" : "return_type",
"name" : "return_type",
"referenced_type" : "_ZTI7STDCALL",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h"
},
{
"linker_set_key" : "template_arg_in_namespace",
"name" : "template_arg_in_namespace",
"referenced_type" : "_ZTIi",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h"
}
],
"lvalue_reference_types" : [],
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm/libc_and_cpp.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm/libc_and_cpp.so.lsdump
index e00697569..fb34fa824 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm/libc_and_cpp.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm/libc_and_cpp.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI3Foo"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTI3Foo"
self_type: "_ZTI3Foo"
}
@@ -29,7 +29,7 @@ record_types {
size: 4
alignment: 4
referenced_type: "_ZTI6Cinner"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTI6Cinner"
self_type: "_ZTI6Cinner"
}
@@ -48,7 +48,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI7Cstruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTI7Cstruct"
self_type: "_ZTI7Cstruct"
}
@@ -73,7 +73,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI3Foo"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTIP3Foo"
self_type: "_ZTIP3Foo"
}
@@ -84,7 +84,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI6Cinner"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTIP6Cinner"
self_type: "_ZTIP6Cinner"
}
@@ -95,7 +95,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI7Cstruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTIP7Cstruct"
self_type: "_ZTIP7Cstruct"
}
@@ -106,7 +106,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIP7Cstruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTIPP7Cstruct"
self_type: "_ZTIPP7Cstruct"
}
@@ -117,7 +117,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIi"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTIPi"
self_type: "_ZTIPi"
}
@@ -151,7 +151,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "CFunction"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
parameters {
referenced_type: "_ZTIPP7Cstruct"
default_arg: false
@@ -163,7 +163,7 @@ functions {
functions {
return_type: "_ZTI3Foo"
function_name: "foo"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
parameters {
referenced_type: "_ZTIPi"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm/libc_and_cpp_with_unused_struct.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm/libc_and_cpp_with_unused_struct.so.lsdump
index d030088d8..b3a8c3241 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm/libc_and_cpp_with_unused_struct.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm/libc_and_cpp_with_unused_struct.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 4
alignment: 4
referenced_type: "_ZTI12UnusedStruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTI12UnusedStruct"
self_type: "_ZTI12UnusedStruct"
}
@@ -23,7 +23,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI3Foo"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTI3Foo"
self_type: "_ZTI3Foo"
}
@@ -48,7 +48,7 @@ record_types {
size: 4
alignment: 4
referenced_type: "_ZTI6Cinner"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTI6Cinner"
self_type: "_ZTI6Cinner"
}
@@ -67,7 +67,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI7Cstruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTI7Cstruct"
self_type: "_ZTI7Cstruct"
}
@@ -92,7 +92,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI3Foo"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTIP3Foo"
self_type: "_ZTIP3Foo"
}
@@ -103,7 +103,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI6Cinner"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTIP6Cinner"
self_type: "_ZTIP6Cinner"
}
@@ -114,7 +114,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI7Cstruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTIP7Cstruct"
self_type: "_ZTIP7Cstruct"
}
@@ -125,7 +125,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIP7Cstruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTIPP7Cstruct"
self_type: "_ZTIPP7Cstruct"
}
@@ -136,7 +136,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIi"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTIPi"
self_type: "_ZTIPi"
}
@@ -170,7 +170,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "CFunction"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
parameters {
referenced_type: "_ZTIPP7Cstruct"
default_arg: false
@@ -182,7 +182,7 @@ functions {
functions {
return_type: "_ZTI3Foo"
function_name: "foo"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
parameters {
referenced_type: "_ZTIPi"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp.so.lsdump
index 42aad9df7..83c7a28d0 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_add_function.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_add_function.so.lsdump
index d2a202267..611ef1d5f 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_add_function.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_add_function.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::~SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -379,7 +379,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIi"
function_name: "HighVolumeSpeaker::AddedFunction"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -408,7 +408,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -420,7 +420,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_add_function_sybmol_only.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_add_function_sybmol_only.so.lsdump
index 4c9de6d3c..ca51fd4b5 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_add_function_sybmol_only.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_add_function_sybmol_only.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::~SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -379,7 +379,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -408,7 +408,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_add_global_variable.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_add_global_variable.so.lsdump
index 9df7eba8f..ebc6b3bb3 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_add_global_variable.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_add_global_variable.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::~SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -379,7 +379,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -408,7 +408,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -419,7 +419,7 @@ functions {
}
global_vars {
name: "HighVolumeSpeaker::global_unprotected_id"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZN17HighVolumeSpeaker21global_unprotected_idE"
referenced_type: "_ZTIi"
access: public_access
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_change_function_access.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_change_function_access.so.lsdump
index fe80d94c5..1e199a092 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_change_function_access.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_change_function_access.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_change_member_access.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_change_member_access.so.lsdump
index c6f43df28..35c3d75fa 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_change_member_access.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_change_member_access.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_enum_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_enum_diff.so.lsdump
index 2b9e7713b..2c8c40d97 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_enum_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_enum_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -210,7 +210,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -221,7 +221,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -232,7 +232,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -243,7 +243,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -303,7 +303,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -315,7 +315,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -327,7 +327,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -339,7 +339,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -351,7 +351,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -363,7 +363,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -380,7 +380,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -392,7 +392,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_enum_extended.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_enum_extended.so.lsdump
index 7269f9ed4..79854ca3f 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_enum_extended.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_enum_extended.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -218,7 +218,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -229,7 +229,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -240,7 +240,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -251,7 +251,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -311,7 +311,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -323,7 +323,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -335,7 +335,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -347,7 +347,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -359,7 +359,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -371,7 +371,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -388,7 +388,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -400,7 +400,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_inheritance_type_changed.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_inheritance_type_changed.so.lsdump
index dbad77d8d..5441e8218 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_inheritance_type_changed.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_inheritance_type_changed.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 20
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -189,7 +189,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -245,7 +245,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -274,7 +274,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -285,7 +285,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -296,7 +296,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -307,7 +307,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -367,7 +367,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -379,7 +379,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -391,7 +391,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -403,7 +403,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -415,7 +415,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -427,7 +427,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -444,7 +444,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -456,7 +456,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_json.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_json.so.lsdump
index 333543371..3f1c7611b 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_json.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_json.so.lsdump
@@ -107,7 +107,7 @@
"referenced_type" : "_ZTIN12SuperSpeaker6VolumeE",
"self_type" : "_ZTIN12SuperSpeaker6VolumeE",
"size" : 4,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h",
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h",
"underlying_type" : "_ZTIj"
}
],
@@ -125,7 +125,7 @@
}
],
"return_type" : "_ZTIv",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
},
{
"function_name" : "SuperSpeaker::CreateSuperSpeaker",
@@ -137,7 +137,7 @@
}
],
"return_type" : "_ZTIP12SuperSpeaker",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
},
{
"function_name" : "SuperSpeaker::SpeakLoud",
@@ -150,7 +150,7 @@
}
],
"return_type" : "_ZTIN12SuperSpeaker6VolumeE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
},
{
"function_name" : "LowVolumeSpeaker::Speak",
@@ -163,7 +163,7 @@
}
],
"return_type" : "_ZTIv",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
},
{
"function_name" : "LowVolumeSpeaker::Listen",
@@ -176,7 +176,7 @@
}
],
"return_type" : "_ZTIv",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
},
{
"function_name" : "HighVolumeSpeaker::BadPractice",
@@ -192,7 +192,7 @@
}
],
"return_type" : "_ZTIP17HighVolumeSpeaker",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
},
{
"function_name" : "HighVolumeSpeaker::Speak",
@@ -205,7 +205,7 @@
}
],
"return_type" : "_ZTIv",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
},
{
"function_name" : "HighVolumeSpeaker::Listen",
@@ -218,7 +218,7 @@
}
],
"return_type" : "_ZTIv",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
}
],
"global_vars" : [],
@@ -232,7 +232,7 @@
"referenced_type" : "_ZTI12SuperSpeaker",
"self_type" : "_ZTIP12SuperSpeaker",
"size" : 4,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
},
{
"alignment" : 4,
@@ -241,7 +241,7 @@
"referenced_type" : "_ZTI16LowVolumeSpeaker",
"self_type" : "_ZTIP16LowVolumeSpeaker",
"size" : 4,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
},
{
"alignment" : 4,
@@ -250,7 +250,7 @@
"referenced_type" : "_ZTI17HighVolumeSpeaker",
"self_type" : "_ZTIP17HighVolumeSpeaker",
"size" : 4,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
},
{
"alignment" : 4,
@@ -259,7 +259,7 @@
"referenced_type" : "_ZTIf",
"self_type" : "_ZTIPf",
"size" : 4,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
}
],
"qualified_types" : [],
@@ -282,7 +282,7 @@
"referenced_type" : "_ZTI12SuperSpeaker",
"self_type" : "_ZTI12SuperSpeaker",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h",
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h",
"vtable_components" :
[
{
@@ -337,7 +337,7 @@
"referenced_type" : "_ZTI16LowVolumeSpeaker",
"self_type" : "_ZTI16LowVolumeSpeaker",
"size" : 16,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h",
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h",
"vtable_components" :
[
{
@@ -377,7 +377,7 @@
"referenced_type" : "_ZTI17HighVolumeSpeaker",
"self_type" : "_ZTI17HighVolumeSpeaker",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h",
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h",
"vtable_components" :
[
{
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_member_cv_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_member_cv_diff.so.lsdump
index e6a121b29..601308007 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_member_cv_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_member_cv_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIKf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPKf"
self_type: "_ZTIPKf"
}
@@ -310,7 +310,7 @@ qualified_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIKf"
self_type: "_ZTIKf"
}
@@ -321,7 +321,7 @@ qualified_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -333,7 +333,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -345,7 +345,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -357,7 +357,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -369,7 +369,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -381,7 +381,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -398,7 +398,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -410,7 +410,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_member_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_member_diff.so.lsdump
index deaa77d53..06961ed15 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_member_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_member_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIx"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPx"
self_type: "_ZTIPx"
}
@@ -320,7 +320,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -332,7 +332,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -344,7 +344,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -356,7 +356,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -368,7 +368,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -380,7 +380,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -397,7 +397,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -409,7 +409,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_member_fake_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_member_fake_diff.so.lsdump
index e5cbc2021..8bed6d020 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_member_fake_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_member_fake_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -320,7 +320,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -332,7 +332,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -344,7 +344,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -356,7 +356,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -368,7 +368,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -380,7 +380,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -397,7 +397,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -409,7 +409,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_member_integral_type_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_member_integral_type_diff.so.lsdump
index b79663a8f..6ba28582e 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_member_integral_type_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_member_integral_type_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_member_name_changed.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_member_name_changed.so.lsdump
index c72acadab..1b309e32e 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_member_name_changed.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_member_name_changed.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_parameter_type_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_parameter_type_diff.so.lsdump
index b1f888aaa..f3d157c6d 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_parameter_type_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_parameter_type_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::~SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -379,7 +379,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -408,7 +408,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_return_type_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_return_type_diff.so.lsdump
index ac3d9e095..99a18f994 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_return_type_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_return_type_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIi"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIi"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_unreferenced_elf_symbol_removed.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_unreferenced_elf_symbol_removed.so.lsdump
index 327589543..7651a85d1 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_unreferenced_elf_symbol_removed.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_unreferenced_elf_symbol_removed.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_vtable_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_vtable_diff.so.lsdump
index fbb9a3116..cbe3ae301 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_vtable_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm/libgolden_cpp_vtable_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,14 +307,14 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZN12SuperSpeaker11SpeakLouderEv"
access: public_access
}
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -326,7 +326,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -338,7 +338,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -350,7 +350,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -362,7 +362,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -379,7 +379,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -391,7 +391,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm/libifunc.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm/libifunc.so.lsdump
new file mode 100644
index 000000000..dedcd5f47
--- /dev/null
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm/libifunc.so.lsdump
@@ -0,0 +1,24 @@
+builtin_types {
+ type_info {
+ name: "void"
+ size: 0
+ alignment: 0
+ referenced_type: "_ZTIv"
+ source_file: ""
+ linker_set_key: "_ZTIv"
+ self_type: "_ZTIv"
+ }
+ is_unsigned: false
+ is_integral: false
+}
+functions {
+ return_type: "_ZTIv"
+ function_name: "ifunc"
+ source_file: "development/vndk/tools/header-checker/tests/integration/ifunc/ifunc.c"
+ linker_set_key: "ifunc"
+ access: public_access
+}
+elf_functions {
+ name: "ifunc"
+ binding: Global
+}
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm/libpure_virtual_function.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm/libpure_virtual_function.so.lsdump
index 0147357ed..302e5de65 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm/libpure_virtual_function.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm/libpure_virtual_function.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 4
alignment: 4
referenced_type: "_ZTI10DerivedBar"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
linker_set_key: "_ZTI10DerivedBar"
self_type: "_ZTI10DerivedBar"
}
@@ -60,7 +60,7 @@ record_types {
size: 4
alignment: 4
referenced_type: "_ZTI15PureVirtualBase"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
linker_set_key: "_ZTI15PureVirtualBase"
self_type: "_ZTI15PureVirtualBase"
}
@@ -111,7 +111,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI10DerivedBar"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
linker_set_key: "_ZTIP10DerivedBar"
self_type: "_ZTIP10DerivedBar"
}
@@ -122,7 +122,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI15PureVirtualBase"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
linker_set_key: "_ZTIP15PureVirtualBase"
self_type: "_ZTIP15PureVirtualBase"
}
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm/libreproducability.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm/libreproducability.so.lsdump
index 0f49dc421..6a15f800a 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm/libreproducability.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm/libreproducability.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 4
alignment: 4
referenced_type: "_ZTI11ShouldRepro"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/reproducability_c.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/reproducability_c.h"
linker_set_key: "_ZTI11ShouldRepro"
self_type: "_ZTI11ShouldRepro"
}
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm/undeclared_types.h.sdump b/vndk/tools/header-checker/tests/reference_dumps/arm/undeclared_types.h.sdump
index 4b2e58a90..b68d6657f 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm/undeclared_types.h.sdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm/undeclared_types.h.sdump
@@ -17,7 +17,7 @@
}
],
"return_type" : "_ZTIRN11namespace_a1AE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
},
{
"access" : "private",
@@ -34,7 +34,7 @@
}
],
"return_type" : "_ZTIN12InvalidClass1DE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
}
],
"global_vars" :
@@ -43,25 +43,25 @@
"linker_set_key" : "a",
"name" : "a",
"referenced_type" : "_ZTIN11namespace_a1AE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
},
{
"linker_set_key" : "b",
"name" : "b",
"referenced_type" : "_ZTIN11namespace_b10template_bIJPKNS_1BEEEE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
},
{
"linker_set_key" : "c",
"name" : "c",
"referenced_type" : "_ZTIKN11namespace_b10template_bIJPKNS_1BEEEE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
},
{
"linker_set_key" : "template_in_macro",
"name" : "template_in_macro",
"referenced_type" : "_ZTIP15TemplateInMacroIJ1FEE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
}
],
"lvalue_reference_types" :
@@ -73,7 +73,7 @@
"referenced_type" : "_ZTIN11namespace_a1AE",
"self_type" : "_ZTIRN11namespace_a1AE",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
}
],
"pointer_types" :
@@ -85,7 +85,7 @@
"referenced_type" : "_ZTI12InvalidClass",
"self_type" : "_ZTIP12InvalidClass",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
},
{
"alignment" : 8,
@@ -94,7 +94,7 @@
"referenced_type" : "_ZTI15TemplateInMacroIJ1FEE",
"self_type" : "_ZTIP15TemplateInMacroIJ1FEE",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
}
],
"qualified_types" :
@@ -105,7 +105,7 @@
"name" : "const namespace_b::template_b<const B *>",
"referenced_type" : "_ZTIN11namespace_b10template_bIJPKNS_1BEEEE",
"self_type" : "_ZTIKN11namespace_b10template_bIJPKNS_1BEEEE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
}
],
"record_types" : [],
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/known_issues.h.sdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/known_issues.h.sdump
index cc90665f8..791811d65 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm64/known_issues.h.sdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/known_issues.h.sdump
@@ -23,19 +23,19 @@
"linker_set_key" : "non_type_template",
"name" : "non_type_template",
"referenced_type" : "_ZTIi",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h"
},
{
"linker_set_key" : "return_type",
"name" : "return_type",
"referenced_type" : "_ZTI7STDCALL",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h"
},
{
"linker_set_key" : "template_arg_in_namespace",
"name" : "template_arg_in_namespace",
"referenced_type" : "_ZTIi",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h"
}
],
"lvalue_reference_types" : [],
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/libanonymous_enum_odr.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/libanonymous_enum_odr.so.lsdump
index bba022f47..32adb44b2 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm64/libanonymous_enum_odr.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/libanonymous_enum_odr.so.lsdump
@@ -37,11 +37,11 @@
}
],
"linker_set_key" : "_ZTI2$A",
- "name" : "(anonymous enum at /development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h:1:1)",
+ "name" : "(anonymous enum at development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h:1:1)",
"referenced_type" : "_ZTI2$A",
"self_type" : "_ZTI2$A",
"size" : 1,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h",
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h",
"underlying_type" : "_ZTIc"
},
{
@@ -54,11 +54,11 @@
}
],
"linker_set_key" : "_ZTI2$B",
- "name" : "(anonymous enum at /development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h:5:1)",
+ "name" : "(anonymous enum at development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h:5:1)",
"referenced_type" : "_ZTI2$B",
"self_type" : "_ZTI2$B",
"size" : 1,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h",
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h",
"underlying_type" : "_ZTIc"
},
{
@@ -71,11 +71,11 @@
}
],
"linker_set_key" : "_ZTI21$FIRST_ANONYMOUS_ENUM",
- "name" : "(anonymous enum at /development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/include_golden.h:1:1)",
+ "name" : "(anonymous enum at development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/include_golden.h:1:1)",
"referenced_type" : "_ZTI21$FIRST_ANONYMOUS_ENUM",
"self_type" : "_ZTI21$FIRST_ANONYMOUS_ENUM",
"size" : 4,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/include_golden.h",
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/include_golden.h",
"underlying_type" : "_ZTIj"
},
{
@@ -92,11 +92,11 @@
}
],
"linker_set_key" : "_ZTIN3$_22$BE",
- "name" : "(anonymous struct at /development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h:9:1)::(anonymous enum at /development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h:10:3)",
+ "name" : "(anonymous struct at development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h:9:1)::(anonymous enum at development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h:10:3)",
"referenced_type" : "_ZTIN3$_22$BE",
"self_type" : "_ZTIN3$_22$BE",
"size" : 4,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h",
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h",
"underlying_type" : "_ZTIj"
},
{
@@ -113,11 +113,11 @@
}
],
"linker_set_key" : "_ZTIN3$_32$BE",
- "name" : "(anonymous struct at /development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h:9:1)::(anonymous enum at /development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h:10:3)",
+ "name" : "(anonymous struct at development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h:9:1)::(anonymous enum at development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h:10:3)",
"referenced_type" : "_ZTIN3$_32$BE",
"self_type" : "_ZTIN3$_32$BE",
"size" : 4,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h",
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h",
"underlying_type" : "_ZTIj"
}
],
@@ -140,11 +140,11 @@
],
"is_anonymous" : true,
"linker_set_key" : "_ZTI3$_2",
- "name" : "(anonymous struct at /development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h:9:1)",
+ "name" : "(anonymous struct at development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h:9:1)",
"referenced_type" : "_ZTI3$_2",
"self_type" : "_ZTI3$_2",
"size" : 4,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h"
},
{
"alignment" : 4,
@@ -157,11 +157,11 @@
],
"is_anonymous" : true,
"linker_set_key" : "_ZTI3$_3",
- "name" : "(anonymous struct at /development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h:9:1)",
+ "name" : "(anonymous struct at development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h:9:1)",
"referenced_type" : "_ZTI3$_3",
"self_type" : "_ZTI3$_3",
"size" : 4,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h"
}
],
"rvalue_reference_types" : []
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/libc_and_cpp.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/libc_and_cpp.so.lsdump
index 56e6aabd3..3da8342b1 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm64/libc_and_cpp.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/libc_and_cpp.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI3Foo"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTI3Foo"
self_type: "_ZTI3Foo"
}
@@ -29,7 +29,7 @@ record_types {
size: 4
alignment: 4
referenced_type: "_ZTI6Cinner"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTI6Cinner"
self_type: "_ZTI6Cinner"
}
@@ -48,7 +48,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI7Cstruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTI7Cstruct"
self_type: "_ZTI7Cstruct"
}
@@ -73,7 +73,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI3Foo"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTIP3Foo"
self_type: "_ZTIP3Foo"
}
@@ -84,7 +84,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI6Cinner"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTIP6Cinner"
self_type: "_ZTIP6Cinner"
}
@@ -95,7 +95,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI7Cstruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTIP7Cstruct"
self_type: "_ZTIP7Cstruct"
}
@@ -106,7 +106,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIP7Cstruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTIPP7Cstruct"
self_type: "_ZTIPP7Cstruct"
}
@@ -117,7 +117,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIi"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTIPi"
self_type: "_ZTIPi"
}
@@ -151,7 +151,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "CFunction"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
parameters {
referenced_type: "_ZTIPP7Cstruct"
default_arg: false
@@ -163,7 +163,7 @@ functions {
functions {
return_type: "_ZTI3Foo"
function_name: "foo"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
parameters {
referenced_type: "_ZTIPi"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/libc_and_cpp_with_unused_struct.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/libc_and_cpp_with_unused_struct.so.lsdump
index cdca30e63..6987e9022 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm64/libc_and_cpp_with_unused_struct.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/libc_and_cpp_with_unused_struct.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 4
alignment: 4
referenced_type: "_ZTI12UnusedStruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTI12UnusedStruct"
self_type: "_ZTI12UnusedStruct"
}
@@ -23,7 +23,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI3Foo"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTI3Foo"
self_type: "_ZTI3Foo"
}
@@ -48,7 +48,7 @@ record_types {
size: 4
alignment: 4
referenced_type: "_ZTI6Cinner"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTI6Cinner"
self_type: "_ZTI6Cinner"
}
@@ -67,7 +67,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI7Cstruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTI7Cstruct"
self_type: "_ZTI7Cstruct"
}
@@ -92,7 +92,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI3Foo"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTIP3Foo"
self_type: "_ZTIP3Foo"
}
@@ -103,7 +103,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI6Cinner"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTIP6Cinner"
self_type: "_ZTIP6Cinner"
}
@@ -114,7 +114,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI7Cstruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTIP7Cstruct"
self_type: "_ZTIP7Cstruct"
}
@@ -125,7 +125,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIP7Cstruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTIPP7Cstruct"
self_type: "_ZTIPP7Cstruct"
}
@@ -136,7 +136,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIi"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTIPi"
self_type: "_ZTIPi"
}
@@ -170,7 +170,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "CFunction"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
parameters {
referenced_type: "_ZTIPP7Cstruct"
default_arg: false
@@ -182,7 +182,7 @@ functions {
functions {
return_type: "_ZTI3Foo"
function_name: "foo"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
parameters {
referenced_type: "_ZTIPi"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_anonymous_enum.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_anonymous_enum.so.lsdump
index c3459c129..57ce96e68 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_anonymous_enum.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_anonymous_enum.so.lsdump
@@ -37,11 +37,11 @@
}
],
"linker_set_key" : "_ZTI2$A",
- "name" : "(anonymous enum at /development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h:1:1)",
+ "name" : "(anonymous enum at development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h:1:1)",
"referenced_type" : "_ZTI2$A",
"self_type" : "_ZTI2$A",
"size" : 1,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h",
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h",
"underlying_type" : "_ZTIc"
},
{
@@ -54,11 +54,11 @@
}
],
"linker_set_key" : "_ZTI2$B",
- "name" : "(anonymous enum at /development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h:5:1)",
+ "name" : "(anonymous enum at development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h:5:1)",
"referenced_type" : "_ZTI2$B",
"self_type" : "_ZTI2$B",
"size" : 1,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h",
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h",
"underlying_type" : "_ZTIc"
},
{
@@ -75,11 +75,11 @@
}
],
"linker_set_key" : "_ZTIN3$_22$BE",
- "name" : "(anonymous struct at /development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h:9:1)::(anonymous enum at /development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h:10:3)",
+ "name" : "(anonymous struct at development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h:9:1)::(anonymous enum at development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h:10:3)",
"referenced_type" : "_ZTIN3$_22$BE",
"self_type" : "_ZTIN3$_22$BE",
"size" : 4,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h",
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h",
"underlying_type" : "_ZTIj"
}
],
@@ -102,11 +102,11 @@
],
"is_anonymous" : true,
"linker_set_key" : "_ZTI3$_2",
- "name" : "(anonymous struct at /development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h:9:1)",
+ "name" : "(anonymous struct at development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h:9:1)",
"referenced_type" : "_ZTI3$_2",
"self_type" : "_ZTI3$_2",
"size" : 4,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/anonymous_enum/include/golden.h"
}
],
"rvalue_reference_types" : []
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp.so.lsdump
index 0dc35015c..953df5203 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_add_function.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_add_function.so.lsdump
index 84829bfd8..84fa217d7 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_add_function.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_add_function.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::~SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -379,7 +379,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIi"
function_name: "HighVolumeSpeaker::AddedFunction"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -408,7 +408,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -420,7 +420,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_add_function_sybmol_only.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_add_function_sybmol_only.so.lsdump
index 06526ecab..4bcb92e97 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_add_function_sybmol_only.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_add_function_sybmol_only.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::~SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -379,7 +379,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -408,7 +408,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_add_global_variable.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_add_global_variable.so.lsdump
index 86969d83f..77c3c1386 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_add_global_variable.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_add_global_variable.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::~SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -379,7 +379,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -408,7 +408,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -419,7 +419,7 @@ functions {
}
global_vars {
name: "HighVolumeSpeaker::global_unprotected_id"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZN17HighVolumeSpeaker21global_unprotected_idE"
referenced_type: "_ZTIi"
access: public_access
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_change_function_access.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_change_function_access.so.lsdump
index 2c7f9da89..bc609ddd9 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_change_function_access.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_change_function_access.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_change_member_access.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_change_member_access.so.lsdump
index b3d2098a7..ae744eba3 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_change_member_access.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_change_member_access.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_enum_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_enum_diff.so.lsdump
index b4c23b3f8..5b8162a5b 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_enum_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_enum_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -210,7 +210,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -221,7 +221,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -232,7 +232,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -243,7 +243,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -303,7 +303,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -315,7 +315,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -327,7 +327,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -339,7 +339,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -351,7 +351,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -363,7 +363,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -380,7 +380,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -392,7 +392,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_enum_extended.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_enum_extended.so.lsdump
index 8ccd95469..3ac47c61b 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_enum_extended.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_enum_extended.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -218,7 +218,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -229,7 +229,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -240,7 +240,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -251,7 +251,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -311,7 +311,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -323,7 +323,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -335,7 +335,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -347,7 +347,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -359,7 +359,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -371,7 +371,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -388,7 +388,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -400,7 +400,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_inheritance_type_changed.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_inheritance_type_changed.so.lsdump
index 4be1bf6d4..fc447ab1f 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_inheritance_type_changed.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_inheritance_type_changed.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 40
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -189,7 +189,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -245,7 +245,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -274,7 +274,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -285,7 +285,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -296,7 +296,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -307,7 +307,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -367,7 +367,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -379,7 +379,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -391,7 +391,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -403,7 +403,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -415,7 +415,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -427,7 +427,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -444,7 +444,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -456,7 +456,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_json.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_json.so.lsdump
index 713d8e8df..90193c13d 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_json.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_json.so.lsdump
@@ -107,7 +107,7 @@
"referenced_type" : "_ZTIN12SuperSpeaker6VolumeE",
"self_type" : "_ZTIN12SuperSpeaker6VolumeE",
"size" : 4,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h",
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h",
"underlying_type" : "_ZTIj"
}
],
@@ -125,7 +125,7 @@
}
],
"return_type" : "_ZTIv",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
},
{
"function_name" : "SuperSpeaker::CreateSuperSpeaker",
@@ -137,7 +137,7 @@
}
],
"return_type" : "_ZTIP12SuperSpeaker",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
},
{
"function_name" : "SuperSpeaker::SpeakLoud",
@@ -150,7 +150,7 @@
}
],
"return_type" : "_ZTIN12SuperSpeaker6VolumeE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
},
{
"function_name" : "LowVolumeSpeaker::Speak",
@@ -163,7 +163,7 @@
}
],
"return_type" : "_ZTIv",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
},
{
"function_name" : "LowVolumeSpeaker::Listen",
@@ -176,7 +176,7 @@
}
],
"return_type" : "_ZTIv",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
},
{
"function_name" : "HighVolumeSpeaker::BadPractice",
@@ -192,7 +192,7 @@
}
],
"return_type" : "_ZTIP17HighVolumeSpeaker",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
},
{
"function_name" : "HighVolumeSpeaker::Speak",
@@ -205,7 +205,7 @@
}
],
"return_type" : "_ZTIv",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
},
{
"function_name" : "HighVolumeSpeaker::Listen",
@@ -218,7 +218,7 @@
}
],
"return_type" : "_ZTIv",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
}
],
"global_vars" : [],
@@ -232,7 +232,7 @@
"referenced_type" : "_ZTI12SuperSpeaker",
"self_type" : "_ZTIP12SuperSpeaker",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
},
{
"alignment" : 8,
@@ -241,7 +241,7 @@
"referenced_type" : "_ZTI16LowVolumeSpeaker",
"self_type" : "_ZTIP16LowVolumeSpeaker",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
},
{
"alignment" : 8,
@@ -250,7 +250,7 @@
"referenced_type" : "_ZTI17HighVolumeSpeaker",
"self_type" : "_ZTIP17HighVolumeSpeaker",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
},
{
"alignment" : 8,
@@ -259,7 +259,7 @@
"referenced_type" : "_ZTIf",
"self_type" : "_ZTIPf",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
}
],
"qualified_types" : [],
@@ -282,7 +282,7 @@
"referenced_type" : "_ZTI12SuperSpeaker",
"self_type" : "_ZTI12SuperSpeaker",
"size" : 16,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h",
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h",
"vtable_components" :
[
{
@@ -337,7 +337,7 @@
"referenced_type" : "_ZTI16LowVolumeSpeaker",
"self_type" : "_ZTI16LowVolumeSpeaker",
"size" : 24,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h",
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h",
"vtable_components" :
[
{
@@ -377,7 +377,7 @@
"referenced_type" : "_ZTI17HighVolumeSpeaker",
"self_type" : "_ZTI17HighVolumeSpeaker",
"size" : 16,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h",
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h",
"vtable_components" :
[
{
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_member_cv_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_member_cv_diff.so.lsdump
index 2fc25a834..f0218d371 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_member_cv_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_member_cv_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIKf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPKf"
self_type: "_ZTIPKf"
}
@@ -310,7 +310,7 @@ qualified_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIKf"
self_type: "_ZTIKf"
}
@@ -321,7 +321,7 @@ qualified_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -333,7 +333,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -345,7 +345,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -357,7 +357,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -369,7 +369,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -381,7 +381,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -398,7 +398,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -410,7 +410,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_member_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_member_diff.so.lsdump
index 023a2be50..ba7f51a6b 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_member_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_member_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 32
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIx"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPx"
self_type: "_ZTIPx"
}
@@ -320,7 +320,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -332,7 +332,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -344,7 +344,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -356,7 +356,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -368,7 +368,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -380,7 +380,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -397,7 +397,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -409,7 +409,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_member_fake_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_member_fake_diff.so.lsdump
index e076de61f..cd47f1590 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_member_fake_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_member_fake_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -320,7 +320,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -332,7 +332,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -344,7 +344,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -356,7 +356,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -368,7 +368,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -380,7 +380,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -397,7 +397,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -409,7 +409,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_member_integral_type_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_member_integral_type_diff.so.lsdump
index 70bc99777..239f88a81 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_member_integral_type_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_member_integral_type_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_member_name_changed.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_member_name_changed.so.lsdump
index 43e8b2607..f5ede60d6 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_member_name_changed.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_member_name_changed.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_parameter_type_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_parameter_type_diff.so.lsdump
index ab77b9209..d4be52cdd 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_parameter_type_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_parameter_type_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::~SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -379,7 +379,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -408,7 +408,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_return_type_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_return_type_diff.so.lsdump
index 9aeadfd07..834c600e2 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_return_type_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_return_type_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIi"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIi"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_unreferenced_elf_symbol_removed.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_unreferenced_elf_symbol_removed.so.lsdump
index f3516e972..f840c63a0 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_unreferenced_elf_symbol_removed.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_unreferenced_elf_symbol_removed.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_vtable_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_vtable_diff.so.lsdump
index fc7cd2a08..42e0e9f67 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_vtable_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/libgolden_cpp_vtable_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,14 +307,14 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZN12SuperSpeaker11SpeakLouderEv"
access: public_access
}
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -326,7 +326,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -338,7 +338,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -350,7 +350,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -362,7 +362,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -379,7 +379,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -391,7 +391,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/libifunc.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/libifunc.so.lsdump
new file mode 100644
index 000000000..dedcd5f47
--- /dev/null
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/libifunc.so.lsdump
@@ -0,0 +1,24 @@
+builtin_types {
+ type_info {
+ name: "void"
+ size: 0
+ alignment: 0
+ referenced_type: "_ZTIv"
+ source_file: ""
+ linker_set_key: "_ZTIv"
+ self_type: "_ZTIv"
+ }
+ is_unsigned: false
+ is_integral: false
+}
+functions {
+ return_type: "_ZTIv"
+ function_name: "ifunc"
+ source_file: "development/vndk/tools/header-checker/tests/integration/ifunc/ifunc.c"
+ linker_set_key: "ifunc"
+ access: public_access
+}
+elf_functions {
+ name: "ifunc"
+ binding: Global
+}
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/libmerge_multi_definitions.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/libmerge_multi_definitions.so.lsdump
new file mode 100644
index 000000000..ab6a33965
--- /dev/null
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/libmerge_multi_definitions.so.lsdump
@@ -0,0 +1,169 @@
+{
+ "array_types" : [],
+ "builtin_types" :
+ [
+ {
+ "alignment" : 1,
+ "is_integral" : true,
+ "is_unsigned" : true,
+ "linker_set_key" : "_ZTIc",
+ "name" : "char",
+ "referenced_type" : "_ZTIc",
+ "self_type" : "_ZTIc",
+ "size" : 1
+ },
+ {
+ "alignment" : 4,
+ "is_integral" : true,
+ "linker_set_key" : "_ZTIi",
+ "name" : "int",
+ "referenced_type" : "_ZTIi",
+ "self_type" : "_ZTIi",
+ "size" : 4
+ },
+ {
+ "linker_set_key" : "_ZTIv",
+ "name" : "void",
+ "referenced_type" : "_ZTIv",
+ "self_type" : "_ZTIv"
+ }
+ ],
+ "elf_functions" :
+ [
+ {
+ "name" : "func"
+ },
+ {
+ "name" : "var"
+ }
+ ],
+ "elf_objects" : [],
+ "enum_types" : [],
+ "function_types" : [],
+ "functions" : [],
+ "global_vars" :
+ [
+ {
+ "linker_set_key" : "var",
+ "name" : "var",
+ "referenced_type" : "_ZTIc",
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/merge_multi_definitions/include/def1.h"
+ }
+ ],
+ "lvalue_reference_types" : [],
+ "pointer_types" :
+ [
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIP6Struct",
+ "name" : "Struct *",
+ "referenced_type" : "_ZTI6Struct",
+ "self_type" : "_ZTIP6Struct",
+ "size" : 8,
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/merge_multi_definitions/include/def1.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIP6Struct",
+ "name" : "Struct *",
+ "referenced_type" : "_ZTI6Struct#ODR:/def2.h.sdump",
+ "self_type" : "_ZTIP6Struct#ODR:/def2.h.sdump",
+ "size" : 8,
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/merge_multi_definitions/include/def2.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPK6Opaque",
+ "name" : "const Opaque *",
+ "referenced_type" : "_ZTIK6Opaque",
+ "self_type" : "_ZTIPK6Opaque",
+ "size" : 8,
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/merge_multi_definitions/include/def1.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPK6Struct",
+ "name" : "const Struct *",
+ "referenced_type" : "_ZTIK6Struct",
+ "self_type" : "_ZTIPK6Struct",
+ "size" : 8,
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/merge_multi_definitions/include/def1.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPK6Struct",
+ "name" : "const Struct *",
+ "referenced_type" : "_ZTIK6Struct#ODR:/def2.h.sdump",
+ "self_type" : "_ZTIPK6Struct#ODR:/def2.h.sdump",
+ "size" : 8,
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/merge_multi_definitions/include/def2.h"
+ }
+ ],
+ "qualified_types" :
+ [
+ {
+ "is_const" : true,
+ "linker_set_key" : "_ZTIK6Opaque",
+ "name" : "const Opaque",
+ "referenced_type" : "_ZTI6Opaque",
+ "self_type" : "_ZTIK6Opaque",
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/merge_multi_definitions/include/def1.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIK6Struct",
+ "name" : "const Struct",
+ "referenced_type" : "_ZTI6Struct#ODR:/def2.h.sdump",
+ "self_type" : "_ZTIK6Struct#ODR:/def2.h.sdump",
+ "size" : 8,
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/merge_multi_definitions/include/def2.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIK6Struct",
+ "name" : "const Struct",
+ "referenced_type" : "_ZTI6Struct",
+ "self_type" : "_ZTIK6Struct",
+ "size" : 8,
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/merge_multi_definitions/include/def1.h"
+ }
+ ],
+ "record_types" :
+ [
+ {
+ "alignment" : 8,
+ "fields" :
+ [
+ {
+ "field_name" : "member1",
+ "referenced_type" : "_ZTIP6Struct"
+ }
+ ],
+ "linker_set_key" : "_ZTI6Struct",
+ "name" : "Struct",
+ "referenced_type" : "_ZTI6Struct",
+ "self_type" : "_ZTI6Struct",
+ "size" : 8,
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/merge_multi_definitions/include/def1.h"
+ },
+ {
+ "alignment" : 8,
+ "fields" :
+ [
+ {
+ "field_name" : "member2",
+ "referenced_type" : "_ZTIP6Struct#ODR:/def2.h.sdump"
+ }
+ ],
+ "linker_set_key" : "_ZTI6Struct",
+ "name" : "Struct",
+ "referenced_type" : "_ZTI6Struct#ODR:/def2.h.sdump",
+ "self_type" : "_ZTI6Struct#ODR:/def2.h.sdump",
+ "size" : 8,
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/merge_multi_definitions/include/def2.h"
+ }
+ ],
+ "rvalue_reference_types" : []
+}
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/libpure_virtual_function.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/libpure_virtual_function.so.lsdump
index 1660a6f1c..ae53101cf 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm64/libpure_virtual_function.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/libpure_virtual_function.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 8
referenced_type: "_ZTI10DerivedBar"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
linker_set_key: "_ZTI10DerivedBar"
self_type: "_ZTI10DerivedBar"
}
@@ -60,7 +60,7 @@ record_types {
size: 8
alignment: 8
referenced_type: "_ZTI15PureVirtualBase"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
linker_set_key: "_ZTI15PureVirtualBase"
self_type: "_ZTI15PureVirtualBase"
}
@@ -111,7 +111,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI10DerivedBar"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
linker_set_key: "_ZTIP10DerivedBar"
self_type: "_ZTIP10DerivedBar"
}
@@ -122,7 +122,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI15PureVirtualBase"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
linker_set_key: "_ZTIP15PureVirtualBase"
self_type: "_ZTIP15PureVirtualBase"
}
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/libreproducability.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/libreproducability.so.lsdump
index 0f49dc421..6a15f800a 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm64/libreproducability.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/libreproducability.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 4
alignment: 4
referenced_type: "_ZTI11ShouldRepro"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/reproducability_c.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/reproducability_c.h"
linker_set_key: "_ZTI11ShouldRepro"
self_type: "_ZTI11ShouldRepro"
}
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/libversion_script_example.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/libversion_script_example.so.lsdump
index d52f1f95d..c06b336fb 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm64/libversion_script_example.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/libversion_script_example.so.lsdump
@@ -40,7 +40,7 @@
}
],
"return_type" : "_ZTIv",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/version_script_example/example.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/version_script_example/example.h"
},
{
"function_name" : "Test4::test",
@@ -53,19 +53,19 @@
}
],
"return_type" : "_ZTIv",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/version_script_example/example.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/version_script_example/example.h"
},
{
"function_name" : "test1",
"linker_set_key" : "test1",
"return_type" : "_ZTIv",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/version_script_example/example.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/version_script_example/example.h"
},
{
"function_name" : "test2",
"linker_set_key" : "test2",
"return_type" : "_ZTIv",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/version_script_example/example.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/version_script_example/example.h"
}
],
"global_vars" : [],
@@ -79,7 +79,7 @@
"referenced_type" : "_ZTI5Test3",
"self_type" : "_ZTIP5Test3",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/version_script_example/example.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/version_script_example/example.h"
},
{
"alignment" : 8,
@@ -88,7 +88,7 @@
"referenced_type" : "_ZTI5Test4",
"self_type" : "_ZTIP5Test4",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/version_script_example/example.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/version_script_example/example.h"
}
],
"qualified_types" : [],
@@ -102,7 +102,7 @@
"referenced_type" : "_ZTI5Test3",
"self_type" : "_ZTI5Test3",
"size" : 1,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/version_script_example/example.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/version_script_example/example.h"
},
{
"alignment" : 1,
@@ -112,7 +112,7 @@
"referenced_type" : "_ZTI5Test4",
"self_type" : "_ZTI5Test4",
"size" : 1,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/version_script_example/example.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/version_script_example/example.h"
}
],
"rvalue_reference_types" : []
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/libversion_script_example_no_mytag.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/libversion_script_example_no_mytag.so.lsdump
index 24165bde5..33681ad86 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm64/libversion_script_example_no_mytag.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/libversion_script_example_no_mytag.so.lsdump
@@ -34,13 +34,13 @@
}
],
"return_type" : "_ZTIv",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/version_script_example/example.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/version_script_example/example.h"
},
{
"function_name" : "test2",
"linker_set_key" : "test2",
"return_type" : "_ZTIv",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/version_script_example/example.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/version_script_example/example.h"
}
],
"global_vars" : [],
@@ -54,7 +54,7 @@
"referenced_type" : "_ZTI5Test3",
"self_type" : "_ZTIP5Test3",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/version_script_example/example.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/version_script_example/example.h"
},
{
"alignment" : 8,
@@ -63,7 +63,7 @@
"referenced_type" : "_ZTI5Test4",
"self_type" : "_ZTIP5Test4",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/version_script_example/example.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/version_script_example/example.h"
}
],
"qualified_types" : [],
@@ -77,7 +77,7 @@
"referenced_type" : "_ZTI5Test3",
"self_type" : "_ZTI5Test3",
"size" : 1,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/version_script_example/example.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/version_script_example/example.h"
},
{
"alignment" : 1,
@@ -87,7 +87,7 @@
"referenced_type" : "_ZTI5Test4",
"self_type" : "_ZTI5Test4",
"size" : 1,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/version_script_example/example.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/version_script_example/example.h"
}
],
"rvalue_reference_types" : []
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/libversion_script_example_no_private.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/libversion_script_example_no_private.so.lsdump
index d1c52f88a..c1d84dbff 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm64/libversion_script_example_no_private.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/libversion_script_example_no_private.so.lsdump
@@ -34,13 +34,13 @@
}
],
"return_type" : "_ZTIv",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/version_script_example/example.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/version_script_example/example.h"
},
{
"function_name" : "test1",
"linker_set_key" : "test1",
"return_type" : "_ZTIv",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/version_script_example/example.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/version_script_example/example.h"
}
],
"global_vars" : [],
@@ -54,7 +54,7 @@
"referenced_type" : "_ZTI5Test3",
"self_type" : "_ZTIP5Test3",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/version_script_example/example.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/version_script_example/example.h"
},
{
"alignment" : 8,
@@ -63,7 +63,7 @@
"referenced_type" : "_ZTI5Test4",
"self_type" : "_ZTIP5Test4",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/version_script_example/example.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/version_script_example/example.h"
}
],
"qualified_types" : [],
@@ -77,7 +77,7 @@
"referenced_type" : "_ZTI5Test3",
"self_type" : "_ZTI5Test3",
"size" : 1,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/version_script_example/example.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/version_script_example/example.h"
},
{
"alignment" : 1,
@@ -87,7 +87,7 @@
"referenced_type" : "_ZTI5Test4",
"self_type" : "_ZTI5Test4",
"size" : 1,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/version_script_example/example.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/version_script_example/example.h"
}
],
"rvalue_reference_types" : []
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/libweak_symbols_old.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/libweak_symbols_old.so.lsdump
index 6d7cfd036..2a066a330 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm64/libweak_symbols_old.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/libweak_symbols_old.so.lsdump
@@ -25,7 +25,7 @@
"function_name" : "example",
"linker_set_key" : "example",
"return_type" : "_ZTIv",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/weak_symbols/example.c"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/weak_symbols/example.c"
}
],
"global_vars" : [],
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/undeclared_types.h.sdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/undeclared_types.h.sdump
index 4b2e58a90..b68d6657f 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm64/undeclared_types.h.sdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/undeclared_types.h.sdump
@@ -17,7 +17,7 @@
}
],
"return_type" : "_ZTIRN11namespace_a1AE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
},
{
"access" : "private",
@@ -34,7 +34,7 @@
}
],
"return_type" : "_ZTIN12InvalidClass1DE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
}
],
"global_vars" :
@@ -43,25 +43,25 @@
"linker_set_key" : "a",
"name" : "a",
"referenced_type" : "_ZTIN11namespace_a1AE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
},
{
"linker_set_key" : "b",
"name" : "b",
"referenced_type" : "_ZTIN11namespace_b10template_bIJPKNS_1BEEEE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
},
{
"linker_set_key" : "c",
"name" : "c",
"referenced_type" : "_ZTIKN11namespace_b10template_bIJPKNS_1BEEEE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
},
{
"linker_set_key" : "template_in_macro",
"name" : "template_in_macro",
"referenced_type" : "_ZTIP15TemplateInMacroIJ1FEE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
}
],
"lvalue_reference_types" :
@@ -73,7 +73,7 @@
"referenced_type" : "_ZTIN11namespace_a1AE",
"self_type" : "_ZTIRN11namespace_a1AE",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
}
],
"pointer_types" :
@@ -85,7 +85,7 @@
"referenced_type" : "_ZTI12InvalidClass",
"self_type" : "_ZTIP12InvalidClass",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
},
{
"alignment" : 8,
@@ -94,7 +94,7 @@
"referenced_type" : "_ZTI15TemplateInMacroIJ1FEE",
"self_type" : "_ZTIP15TemplateInMacroIJ1FEE",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
}
],
"qualified_types" :
@@ -105,7 +105,7 @@
"name" : "const namespace_b::template_b<const B *>",
"referenced_type" : "_ZTIN11namespace_b10template_bIJPKNS_1BEEEE",
"self_type" : "_ZTIKN11namespace_b10template_bIJPKNS_1BEEEE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
}
],
"record_types" : [],
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips/known_issues.h.sdump b/vndk/tools/header-checker/tests/reference_dumps/mips/known_issues.h.sdump
index cc90665f8..791811d65 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips/known_issues.h.sdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips/known_issues.h.sdump
@@ -23,19 +23,19 @@
"linker_set_key" : "non_type_template",
"name" : "non_type_template",
"referenced_type" : "_ZTIi",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h"
},
{
"linker_set_key" : "return_type",
"name" : "return_type",
"referenced_type" : "_ZTI7STDCALL",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h"
},
{
"linker_set_key" : "template_arg_in_namespace",
"name" : "template_arg_in_namespace",
"referenced_type" : "_ZTIi",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h"
}
],
"lvalue_reference_types" : [],
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips/libc_and_cpp.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips/libc_and_cpp.so.lsdump
index e00697569..fb34fa824 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips/libc_and_cpp.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips/libc_and_cpp.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI3Foo"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTI3Foo"
self_type: "_ZTI3Foo"
}
@@ -29,7 +29,7 @@ record_types {
size: 4
alignment: 4
referenced_type: "_ZTI6Cinner"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTI6Cinner"
self_type: "_ZTI6Cinner"
}
@@ -48,7 +48,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI7Cstruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTI7Cstruct"
self_type: "_ZTI7Cstruct"
}
@@ -73,7 +73,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI3Foo"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTIP3Foo"
self_type: "_ZTIP3Foo"
}
@@ -84,7 +84,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI6Cinner"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTIP6Cinner"
self_type: "_ZTIP6Cinner"
}
@@ -95,7 +95,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI7Cstruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTIP7Cstruct"
self_type: "_ZTIP7Cstruct"
}
@@ -106,7 +106,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIP7Cstruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTIPP7Cstruct"
self_type: "_ZTIPP7Cstruct"
}
@@ -117,7 +117,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIi"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTIPi"
self_type: "_ZTIPi"
}
@@ -151,7 +151,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "CFunction"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
parameters {
referenced_type: "_ZTIPP7Cstruct"
default_arg: false
@@ -163,7 +163,7 @@ functions {
functions {
return_type: "_ZTI3Foo"
function_name: "foo"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
parameters {
referenced_type: "_ZTIPi"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips/libc_and_cpp_with_unused_struct.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips/libc_and_cpp_with_unused_struct.so.lsdump
index d030088d8..b3a8c3241 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips/libc_and_cpp_with_unused_struct.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips/libc_and_cpp_with_unused_struct.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 4
alignment: 4
referenced_type: "_ZTI12UnusedStruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTI12UnusedStruct"
self_type: "_ZTI12UnusedStruct"
}
@@ -23,7 +23,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI3Foo"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTI3Foo"
self_type: "_ZTI3Foo"
}
@@ -48,7 +48,7 @@ record_types {
size: 4
alignment: 4
referenced_type: "_ZTI6Cinner"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTI6Cinner"
self_type: "_ZTI6Cinner"
}
@@ -67,7 +67,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI7Cstruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTI7Cstruct"
self_type: "_ZTI7Cstruct"
}
@@ -92,7 +92,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI3Foo"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTIP3Foo"
self_type: "_ZTIP3Foo"
}
@@ -103,7 +103,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI6Cinner"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTIP6Cinner"
self_type: "_ZTIP6Cinner"
}
@@ -114,7 +114,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI7Cstruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTIP7Cstruct"
self_type: "_ZTIP7Cstruct"
}
@@ -125,7 +125,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIP7Cstruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTIPP7Cstruct"
self_type: "_ZTIPP7Cstruct"
}
@@ -136,7 +136,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIi"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTIPi"
self_type: "_ZTIPi"
}
@@ -170,7 +170,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "CFunction"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
parameters {
referenced_type: "_ZTIPP7Cstruct"
default_arg: false
@@ -182,7 +182,7 @@ functions {
functions {
return_type: "_ZTI3Foo"
function_name: "foo"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
parameters {
referenced_type: "_ZTIPi"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp.so.lsdump
index 42aad9df7..83c7a28d0 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_add_function.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_add_function.so.lsdump
index d2a202267..611ef1d5f 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_add_function.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_add_function.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::~SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -379,7 +379,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIi"
function_name: "HighVolumeSpeaker::AddedFunction"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -408,7 +408,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -420,7 +420,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_add_function_sybmol_only.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_add_function_sybmol_only.so.lsdump
index 4c9de6d3c..ca51fd4b5 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_add_function_sybmol_only.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_add_function_sybmol_only.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::~SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -379,7 +379,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -408,7 +408,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_add_global_variable.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_add_global_variable.so.lsdump
index 9df7eba8f..ebc6b3bb3 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_add_global_variable.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_add_global_variable.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::~SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -379,7 +379,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -408,7 +408,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -419,7 +419,7 @@ functions {
}
global_vars {
name: "HighVolumeSpeaker::global_unprotected_id"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZN17HighVolumeSpeaker21global_unprotected_idE"
referenced_type: "_ZTIi"
access: public_access
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_change_function_access.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_change_function_access.so.lsdump
index fe80d94c5..1e199a092 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_change_function_access.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_change_function_access.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_change_member_access.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_change_member_access.so.lsdump
index c6f43df28..35c3d75fa 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_change_member_access.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_change_member_access.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_enum_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_enum_diff.so.lsdump
index 2b9e7713b..2c8c40d97 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_enum_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_enum_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -210,7 +210,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -221,7 +221,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -232,7 +232,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -243,7 +243,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -303,7 +303,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -315,7 +315,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -327,7 +327,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -339,7 +339,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -351,7 +351,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -363,7 +363,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -380,7 +380,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -392,7 +392,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_enum_extended.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_enum_extended.so.lsdump
index 7269f9ed4..79854ca3f 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_enum_extended.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_enum_extended.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -218,7 +218,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -229,7 +229,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -240,7 +240,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -251,7 +251,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -311,7 +311,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -323,7 +323,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -335,7 +335,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -347,7 +347,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -359,7 +359,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -371,7 +371,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -388,7 +388,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -400,7 +400,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_inheritance_type_changed.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_inheritance_type_changed.so.lsdump
index dbad77d8d..5441e8218 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_inheritance_type_changed.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_inheritance_type_changed.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 20
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -189,7 +189,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -245,7 +245,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -274,7 +274,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -285,7 +285,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -296,7 +296,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -307,7 +307,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -367,7 +367,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -379,7 +379,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -391,7 +391,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -403,7 +403,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -415,7 +415,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -427,7 +427,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -444,7 +444,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -456,7 +456,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_json.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_json.so.lsdump
index 333543371..3f1c7611b 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_json.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_json.so.lsdump
@@ -107,7 +107,7 @@
"referenced_type" : "_ZTIN12SuperSpeaker6VolumeE",
"self_type" : "_ZTIN12SuperSpeaker6VolumeE",
"size" : 4,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h",
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h",
"underlying_type" : "_ZTIj"
}
],
@@ -125,7 +125,7 @@
}
],
"return_type" : "_ZTIv",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
},
{
"function_name" : "SuperSpeaker::CreateSuperSpeaker",
@@ -137,7 +137,7 @@
}
],
"return_type" : "_ZTIP12SuperSpeaker",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
},
{
"function_name" : "SuperSpeaker::SpeakLoud",
@@ -150,7 +150,7 @@
}
],
"return_type" : "_ZTIN12SuperSpeaker6VolumeE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
},
{
"function_name" : "LowVolumeSpeaker::Speak",
@@ -163,7 +163,7 @@
}
],
"return_type" : "_ZTIv",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
},
{
"function_name" : "LowVolumeSpeaker::Listen",
@@ -176,7 +176,7 @@
}
],
"return_type" : "_ZTIv",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
},
{
"function_name" : "HighVolumeSpeaker::BadPractice",
@@ -192,7 +192,7 @@
}
],
"return_type" : "_ZTIP17HighVolumeSpeaker",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
},
{
"function_name" : "HighVolumeSpeaker::Speak",
@@ -205,7 +205,7 @@
}
],
"return_type" : "_ZTIv",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
},
{
"function_name" : "HighVolumeSpeaker::Listen",
@@ -218,7 +218,7 @@
}
],
"return_type" : "_ZTIv",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
}
],
"global_vars" : [],
@@ -232,7 +232,7 @@
"referenced_type" : "_ZTI12SuperSpeaker",
"self_type" : "_ZTIP12SuperSpeaker",
"size" : 4,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
},
{
"alignment" : 4,
@@ -241,7 +241,7 @@
"referenced_type" : "_ZTI16LowVolumeSpeaker",
"self_type" : "_ZTIP16LowVolumeSpeaker",
"size" : 4,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
},
{
"alignment" : 4,
@@ -250,7 +250,7 @@
"referenced_type" : "_ZTI17HighVolumeSpeaker",
"self_type" : "_ZTIP17HighVolumeSpeaker",
"size" : 4,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
},
{
"alignment" : 4,
@@ -259,7 +259,7 @@
"referenced_type" : "_ZTIf",
"self_type" : "_ZTIPf",
"size" : 4,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
}
],
"qualified_types" : [],
@@ -282,7 +282,7 @@
"referenced_type" : "_ZTI12SuperSpeaker",
"self_type" : "_ZTI12SuperSpeaker",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h",
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h",
"vtable_components" :
[
{
@@ -337,7 +337,7 @@
"referenced_type" : "_ZTI16LowVolumeSpeaker",
"self_type" : "_ZTI16LowVolumeSpeaker",
"size" : 16,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h",
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h",
"vtable_components" :
[
{
@@ -377,7 +377,7 @@
"referenced_type" : "_ZTI17HighVolumeSpeaker",
"self_type" : "_ZTI17HighVolumeSpeaker",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h",
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h",
"vtable_components" :
[
{
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_member_cv_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_member_cv_diff.so.lsdump
index e6a121b29..601308007 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_member_cv_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_member_cv_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIKf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPKf"
self_type: "_ZTIPKf"
}
@@ -310,7 +310,7 @@ qualified_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIKf"
self_type: "_ZTIKf"
}
@@ -321,7 +321,7 @@ qualified_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -333,7 +333,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -345,7 +345,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -357,7 +357,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -369,7 +369,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -381,7 +381,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -398,7 +398,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -410,7 +410,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_member_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_member_diff.so.lsdump
index deaa77d53..06961ed15 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_member_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_member_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIx"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPx"
self_type: "_ZTIPx"
}
@@ -320,7 +320,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -332,7 +332,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -344,7 +344,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -356,7 +356,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -368,7 +368,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -380,7 +380,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -397,7 +397,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -409,7 +409,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_member_fake_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_member_fake_diff.so.lsdump
index e5cbc2021..8bed6d020 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_member_fake_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_member_fake_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -320,7 +320,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -332,7 +332,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -344,7 +344,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -356,7 +356,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -368,7 +368,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -380,7 +380,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -397,7 +397,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -409,7 +409,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_member_integral_type_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_member_integral_type_diff.so.lsdump
index b79663a8f..6ba28582e 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_member_integral_type_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_member_integral_type_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_member_name_changed.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_member_name_changed.so.lsdump
index c72acadab..1b309e32e 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_member_name_changed.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_member_name_changed.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_parameter_type_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_parameter_type_diff.so.lsdump
index b1f888aaa..f3d157c6d 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_parameter_type_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_parameter_type_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::~SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -379,7 +379,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -408,7 +408,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_return_type_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_return_type_diff.so.lsdump
index ac3d9e095..99a18f994 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_return_type_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_return_type_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIi"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIi"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_unreferenced_elf_symbol_removed.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_unreferenced_elf_symbol_removed.so.lsdump
index 327589543..7651a85d1 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_unreferenced_elf_symbol_removed.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_unreferenced_elf_symbol_removed.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_vtable_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_vtable_diff.so.lsdump
index fbb9a3116..cbe3ae301 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_vtable_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips/libgolden_cpp_vtable_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,14 +307,14 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZN12SuperSpeaker11SpeakLouderEv"
access: public_access
}
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -326,7 +326,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -338,7 +338,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -350,7 +350,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -362,7 +362,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -379,7 +379,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -391,7 +391,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips/libifunc.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips/libifunc.so.lsdump
new file mode 100644
index 000000000..dedcd5f47
--- /dev/null
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips/libifunc.so.lsdump
@@ -0,0 +1,24 @@
+builtin_types {
+ type_info {
+ name: "void"
+ size: 0
+ alignment: 0
+ referenced_type: "_ZTIv"
+ source_file: ""
+ linker_set_key: "_ZTIv"
+ self_type: "_ZTIv"
+ }
+ is_unsigned: false
+ is_integral: false
+}
+functions {
+ return_type: "_ZTIv"
+ function_name: "ifunc"
+ source_file: "development/vndk/tools/header-checker/tests/integration/ifunc/ifunc.c"
+ linker_set_key: "ifunc"
+ access: public_access
+}
+elf_functions {
+ name: "ifunc"
+ binding: Global
+}
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips/libpure_virtual_function.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips/libpure_virtual_function.so.lsdump
index 0147357ed..302e5de65 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips/libpure_virtual_function.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips/libpure_virtual_function.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 4
alignment: 4
referenced_type: "_ZTI10DerivedBar"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
linker_set_key: "_ZTI10DerivedBar"
self_type: "_ZTI10DerivedBar"
}
@@ -60,7 +60,7 @@ record_types {
size: 4
alignment: 4
referenced_type: "_ZTI15PureVirtualBase"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
linker_set_key: "_ZTI15PureVirtualBase"
self_type: "_ZTI15PureVirtualBase"
}
@@ -111,7 +111,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI10DerivedBar"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
linker_set_key: "_ZTIP10DerivedBar"
self_type: "_ZTIP10DerivedBar"
}
@@ -122,7 +122,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI15PureVirtualBase"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
linker_set_key: "_ZTIP15PureVirtualBase"
self_type: "_ZTIP15PureVirtualBase"
}
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips/libreproducability.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips/libreproducability.so.lsdump
index 0f49dc421..6a15f800a 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips/libreproducability.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips/libreproducability.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 4
alignment: 4
referenced_type: "_ZTI11ShouldRepro"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/reproducability_c.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/reproducability_c.h"
linker_set_key: "_ZTI11ShouldRepro"
self_type: "_ZTI11ShouldRepro"
}
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips/undeclared_types.h.sdump b/vndk/tools/header-checker/tests/reference_dumps/mips/undeclared_types.h.sdump
index 4b2e58a90..b68d6657f 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips/undeclared_types.h.sdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips/undeclared_types.h.sdump
@@ -17,7 +17,7 @@
}
],
"return_type" : "_ZTIRN11namespace_a1AE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
},
{
"access" : "private",
@@ -34,7 +34,7 @@
}
],
"return_type" : "_ZTIN12InvalidClass1DE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
}
],
"global_vars" :
@@ -43,25 +43,25 @@
"linker_set_key" : "a",
"name" : "a",
"referenced_type" : "_ZTIN11namespace_a1AE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
},
{
"linker_set_key" : "b",
"name" : "b",
"referenced_type" : "_ZTIN11namespace_b10template_bIJPKNS_1BEEEE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
},
{
"linker_set_key" : "c",
"name" : "c",
"referenced_type" : "_ZTIKN11namespace_b10template_bIJPKNS_1BEEEE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
},
{
"linker_set_key" : "template_in_macro",
"name" : "template_in_macro",
"referenced_type" : "_ZTIP15TemplateInMacroIJ1FEE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
}
],
"lvalue_reference_types" :
@@ -73,7 +73,7 @@
"referenced_type" : "_ZTIN11namespace_a1AE",
"self_type" : "_ZTIRN11namespace_a1AE",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
}
],
"pointer_types" :
@@ -85,7 +85,7 @@
"referenced_type" : "_ZTI12InvalidClass",
"self_type" : "_ZTIP12InvalidClass",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
},
{
"alignment" : 8,
@@ -94,7 +94,7 @@
"referenced_type" : "_ZTI15TemplateInMacroIJ1FEE",
"self_type" : "_ZTIP15TemplateInMacroIJ1FEE",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
}
],
"qualified_types" :
@@ -105,7 +105,7 @@
"name" : "const namespace_b::template_b<const B *>",
"referenced_type" : "_ZTIN11namespace_b10template_bIJPKNS_1BEEEE",
"self_type" : "_ZTIKN11namespace_b10template_bIJPKNS_1BEEEE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
}
],
"record_types" : [],
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips64/known_issues.h.sdump b/vndk/tools/header-checker/tests/reference_dumps/mips64/known_issues.h.sdump
index cc90665f8..791811d65 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips64/known_issues.h.sdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips64/known_issues.h.sdump
@@ -23,19 +23,19 @@
"linker_set_key" : "non_type_template",
"name" : "non_type_template",
"referenced_type" : "_ZTIi",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h"
},
{
"linker_set_key" : "return_type",
"name" : "return_type",
"referenced_type" : "_ZTI7STDCALL",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h"
},
{
"linker_set_key" : "template_arg_in_namespace",
"name" : "template_arg_in_namespace",
"referenced_type" : "_ZTIi",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h"
}
],
"lvalue_reference_types" : [],
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips64/libc_and_cpp.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips64/libc_and_cpp.so.lsdump
index 56e6aabd3..3da8342b1 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips64/libc_and_cpp.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips64/libc_and_cpp.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI3Foo"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTI3Foo"
self_type: "_ZTI3Foo"
}
@@ -29,7 +29,7 @@ record_types {
size: 4
alignment: 4
referenced_type: "_ZTI6Cinner"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTI6Cinner"
self_type: "_ZTI6Cinner"
}
@@ -48,7 +48,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI7Cstruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTI7Cstruct"
self_type: "_ZTI7Cstruct"
}
@@ -73,7 +73,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI3Foo"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTIP3Foo"
self_type: "_ZTIP3Foo"
}
@@ -84,7 +84,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI6Cinner"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTIP6Cinner"
self_type: "_ZTIP6Cinner"
}
@@ -95,7 +95,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI7Cstruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTIP7Cstruct"
self_type: "_ZTIP7Cstruct"
}
@@ -106,7 +106,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIP7Cstruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTIPP7Cstruct"
self_type: "_ZTIPP7Cstruct"
}
@@ -117,7 +117,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIi"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTIPi"
self_type: "_ZTIPi"
}
@@ -151,7 +151,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "CFunction"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
parameters {
referenced_type: "_ZTIPP7Cstruct"
default_arg: false
@@ -163,7 +163,7 @@ functions {
functions {
return_type: "_ZTI3Foo"
function_name: "foo"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
parameters {
referenced_type: "_ZTIPi"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips64/libc_and_cpp_with_unused_struct.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips64/libc_and_cpp_with_unused_struct.so.lsdump
index cdca30e63..6987e9022 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips64/libc_and_cpp_with_unused_struct.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips64/libc_and_cpp_with_unused_struct.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 4
alignment: 4
referenced_type: "_ZTI12UnusedStruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTI12UnusedStruct"
self_type: "_ZTI12UnusedStruct"
}
@@ -23,7 +23,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI3Foo"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTI3Foo"
self_type: "_ZTI3Foo"
}
@@ -48,7 +48,7 @@ record_types {
size: 4
alignment: 4
referenced_type: "_ZTI6Cinner"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTI6Cinner"
self_type: "_ZTI6Cinner"
}
@@ -67,7 +67,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI7Cstruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTI7Cstruct"
self_type: "_ZTI7Cstruct"
}
@@ -92,7 +92,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI3Foo"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTIP3Foo"
self_type: "_ZTIP3Foo"
}
@@ -103,7 +103,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI6Cinner"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTIP6Cinner"
self_type: "_ZTIP6Cinner"
}
@@ -114,7 +114,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI7Cstruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTIP7Cstruct"
self_type: "_ZTIP7Cstruct"
}
@@ -125,7 +125,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIP7Cstruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTIPP7Cstruct"
self_type: "_ZTIPP7Cstruct"
}
@@ -136,7 +136,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIi"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTIPi"
self_type: "_ZTIPi"
}
@@ -170,7 +170,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "CFunction"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
parameters {
referenced_type: "_ZTIPP7Cstruct"
default_arg: false
@@ -182,7 +182,7 @@ functions {
functions {
return_type: "_ZTI3Foo"
function_name: "foo"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
parameters {
referenced_type: "_ZTIPi"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp.so.lsdump
index 0dc35015c..953df5203 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_add_function.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_add_function.so.lsdump
index 84829bfd8..84fa217d7 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_add_function.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_add_function.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::~SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -379,7 +379,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIi"
function_name: "HighVolumeSpeaker::AddedFunction"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -408,7 +408,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -420,7 +420,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_add_function_sybmol_only.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_add_function_sybmol_only.so.lsdump
index 06526ecab..4bcb92e97 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_add_function_sybmol_only.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_add_function_sybmol_only.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::~SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -379,7 +379,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -408,7 +408,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_add_global_variable.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_add_global_variable.so.lsdump
index 86969d83f..77c3c1386 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_add_global_variable.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_add_global_variable.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::~SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -379,7 +379,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -408,7 +408,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -419,7 +419,7 @@ functions {
}
global_vars {
name: "HighVolumeSpeaker::global_unprotected_id"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZN17HighVolumeSpeaker21global_unprotected_idE"
referenced_type: "_ZTIi"
access: public_access
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_change_function_access.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_change_function_access.so.lsdump
index 2c7f9da89..bc609ddd9 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_change_function_access.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_change_function_access.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_change_member_access.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_change_member_access.so.lsdump
index b3d2098a7..ae744eba3 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_change_member_access.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_change_member_access.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_enum_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_enum_diff.so.lsdump
index b4c23b3f8..5b8162a5b 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_enum_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_enum_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -210,7 +210,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -221,7 +221,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -232,7 +232,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -243,7 +243,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -303,7 +303,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -315,7 +315,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -327,7 +327,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -339,7 +339,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -351,7 +351,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -363,7 +363,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -380,7 +380,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -392,7 +392,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_enum_extended.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_enum_extended.so.lsdump
index 8ccd95469..3ac47c61b 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_enum_extended.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_enum_extended.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -218,7 +218,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -229,7 +229,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -240,7 +240,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -251,7 +251,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -311,7 +311,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -323,7 +323,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -335,7 +335,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -347,7 +347,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -359,7 +359,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -371,7 +371,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -388,7 +388,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -400,7 +400,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_inheritance_type_changed.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_inheritance_type_changed.so.lsdump
index 4be1bf6d4..fc447ab1f 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_inheritance_type_changed.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_inheritance_type_changed.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 40
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -189,7 +189,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -245,7 +245,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -274,7 +274,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -285,7 +285,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -296,7 +296,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -307,7 +307,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -367,7 +367,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -379,7 +379,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -391,7 +391,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -403,7 +403,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -415,7 +415,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -427,7 +427,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -444,7 +444,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -456,7 +456,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_json.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_json.so.lsdump
index 713d8e8df..90193c13d 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_json.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_json.so.lsdump
@@ -107,7 +107,7 @@
"referenced_type" : "_ZTIN12SuperSpeaker6VolumeE",
"self_type" : "_ZTIN12SuperSpeaker6VolumeE",
"size" : 4,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h",
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h",
"underlying_type" : "_ZTIj"
}
],
@@ -125,7 +125,7 @@
}
],
"return_type" : "_ZTIv",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
},
{
"function_name" : "SuperSpeaker::CreateSuperSpeaker",
@@ -137,7 +137,7 @@
}
],
"return_type" : "_ZTIP12SuperSpeaker",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
},
{
"function_name" : "SuperSpeaker::SpeakLoud",
@@ -150,7 +150,7 @@
}
],
"return_type" : "_ZTIN12SuperSpeaker6VolumeE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
},
{
"function_name" : "LowVolumeSpeaker::Speak",
@@ -163,7 +163,7 @@
}
],
"return_type" : "_ZTIv",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
},
{
"function_name" : "LowVolumeSpeaker::Listen",
@@ -176,7 +176,7 @@
}
],
"return_type" : "_ZTIv",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
},
{
"function_name" : "HighVolumeSpeaker::BadPractice",
@@ -192,7 +192,7 @@
}
],
"return_type" : "_ZTIP17HighVolumeSpeaker",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
},
{
"function_name" : "HighVolumeSpeaker::Speak",
@@ -205,7 +205,7 @@
}
],
"return_type" : "_ZTIv",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
},
{
"function_name" : "HighVolumeSpeaker::Listen",
@@ -218,7 +218,7 @@
}
],
"return_type" : "_ZTIv",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
}
],
"global_vars" : [],
@@ -232,7 +232,7 @@
"referenced_type" : "_ZTI12SuperSpeaker",
"self_type" : "_ZTIP12SuperSpeaker",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
},
{
"alignment" : 8,
@@ -241,7 +241,7 @@
"referenced_type" : "_ZTI16LowVolumeSpeaker",
"self_type" : "_ZTIP16LowVolumeSpeaker",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
},
{
"alignment" : 8,
@@ -250,7 +250,7 @@
"referenced_type" : "_ZTI17HighVolumeSpeaker",
"self_type" : "_ZTIP17HighVolumeSpeaker",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
},
{
"alignment" : 8,
@@ -259,7 +259,7 @@
"referenced_type" : "_ZTIf",
"self_type" : "_ZTIPf",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
}
],
"qualified_types" : [],
@@ -282,7 +282,7 @@
"referenced_type" : "_ZTI12SuperSpeaker",
"self_type" : "_ZTI12SuperSpeaker",
"size" : 16,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h",
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h",
"vtable_components" :
[
{
@@ -337,7 +337,7 @@
"referenced_type" : "_ZTI16LowVolumeSpeaker",
"self_type" : "_ZTI16LowVolumeSpeaker",
"size" : 24,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h",
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h",
"vtable_components" :
[
{
@@ -377,7 +377,7 @@
"referenced_type" : "_ZTI17HighVolumeSpeaker",
"self_type" : "_ZTI17HighVolumeSpeaker",
"size" : 16,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h",
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h",
"vtable_components" :
[
{
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_member_cv_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_member_cv_diff.so.lsdump
index 2fc25a834..f0218d371 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_member_cv_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_member_cv_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIKf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPKf"
self_type: "_ZTIPKf"
}
@@ -310,7 +310,7 @@ qualified_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIKf"
self_type: "_ZTIKf"
}
@@ -321,7 +321,7 @@ qualified_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -333,7 +333,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -345,7 +345,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -357,7 +357,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -369,7 +369,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -381,7 +381,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -398,7 +398,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -410,7 +410,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_member_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_member_diff.so.lsdump
index 023a2be50..ba7f51a6b 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_member_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_member_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 32
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIx"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPx"
self_type: "_ZTIPx"
}
@@ -320,7 +320,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -332,7 +332,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -344,7 +344,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -356,7 +356,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -368,7 +368,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -380,7 +380,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -397,7 +397,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -409,7 +409,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_member_fake_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_member_fake_diff.so.lsdump
index e076de61f..cd47f1590 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_member_fake_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_member_fake_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -320,7 +320,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -332,7 +332,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -344,7 +344,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -356,7 +356,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -368,7 +368,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -380,7 +380,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -397,7 +397,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -409,7 +409,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_member_integral_type_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_member_integral_type_diff.so.lsdump
index 70bc99777..239f88a81 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_member_integral_type_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_member_integral_type_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_member_name_changed.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_member_name_changed.so.lsdump
index 43e8b2607..f5ede60d6 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_member_name_changed.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_member_name_changed.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_parameter_type_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_parameter_type_diff.so.lsdump
index ab77b9209..d4be52cdd 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_parameter_type_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_parameter_type_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::~SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -379,7 +379,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -408,7 +408,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_return_type_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_return_type_diff.so.lsdump
index 9aeadfd07..834c600e2 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_return_type_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_return_type_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIi"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIi"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_unreferenced_elf_symbol_removed.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_unreferenced_elf_symbol_removed.so.lsdump
index f3516e972..f840c63a0 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_unreferenced_elf_symbol_removed.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_unreferenced_elf_symbol_removed.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_vtable_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_vtable_diff.so.lsdump
index fc7cd2a08..42e0e9f67 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_vtable_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips64/libgolden_cpp_vtable_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,14 +307,14 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZN12SuperSpeaker11SpeakLouderEv"
access: public_access
}
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -326,7 +326,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -338,7 +338,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -350,7 +350,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -362,7 +362,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -379,7 +379,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -391,7 +391,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips64/libifunc.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips64/libifunc.so.lsdump
new file mode 100644
index 000000000..dedcd5f47
--- /dev/null
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips64/libifunc.so.lsdump
@@ -0,0 +1,24 @@
+builtin_types {
+ type_info {
+ name: "void"
+ size: 0
+ alignment: 0
+ referenced_type: "_ZTIv"
+ source_file: ""
+ linker_set_key: "_ZTIv"
+ self_type: "_ZTIv"
+ }
+ is_unsigned: false
+ is_integral: false
+}
+functions {
+ return_type: "_ZTIv"
+ function_name: "ifunc"
+ source_file: "development/vndk/tools/header-checker/tests/integration/ifunc/ifunc.c"
+ linker_set_key: "ifunc"
+ access: public_access
+}
+elf_functions {
+ name: "ifunc"
+ binding: Global
+}
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips64/libpure_virtual_function.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips64/libpure_virtual_function.so.lsdump
index 1660a6f1c..ae53101cf 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips64/libpure_virtual_function.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips64/libpure_virtual_function.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 8
referenced_type: "_ZTI10DerivedBar"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
linker_set_key: "_ZTI10DerivedBar"
self_type: "_ZTI10DerivedBar"
}
@@ -60,7 +60,7 @@ record_types {
size: 8
alignment: 8
referenced_type: "_ZTI15PureVirtualBase"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
linker_set_key: "_ZTI15PureVirtualBase"
self_type: "_ZTI15PureVirtualBase"
}
@@ -111,7 +111,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI10DerivedBar"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
linker_set_key: "_ZTIP10DerivedBar"
self_type: "_ZTIP10DerivedBar"
}
@@ -122,7 +122,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI15PureVirtualBase"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
linker_set_key: "_ZTIP15PureVirtualBase"
self_type: "_ZTIP15PureVirtualBase"
}
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips64/libreproducability.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips64/libreproducability.so.lsdump
index 0f49dc421..6a15f800a 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips64/libreproducability.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips64/libreproducability.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 4
alignment: 4
referenced_type: "_ZTI11ShouldRepro"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/reproducability_c.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/reproducability_c.h"
linker_set_key: "_ZTI11ShouldRepro"
self_type: "_ZTI11ShouldRepro"
}
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips64/undeclared_types.h.sdump b/vndk/tools/header-checker/tests/reference_dumps/mips64/undeclared_types.h.sdump
index 4b2e58a90..b68d6657f 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips64/undeclared_types.h.sdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips64/undeclared_types.h.sdump
@@ -17,7 +17,7 @@
}
],
"return_type" : "_ZTIRN11namespace_a1AE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
},
{
"access" : "private",
@@ -34,7 +34,7 @@
}
],
"return_type" : "_ZTIN12InvalidClass1DE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
}
],
"global_vars" :
@@ -43,25 +43,25 @@
"linker_set_key" : "a",
"name" : "a",
"referenced_type" : "_ZTIN11namespace_a1AE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
},
{
"linker_set_key" : "b",
"name" : "b",
"referenced_type" : "_ZTIN11namespace_b10template_bIJPKNS_1BEEEE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
},
{
"linker_set_key" : "c",
"name" : "c",
"referenced_type" : "_ZTIKN11namespace_b10template_bIJPKNS_1BEEEE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
},
{
"linker_set_key" : "template_in_macro",
"name" : "template_in_macro",
"referenced_type" : "_ZTIP15TemplateInMacroIJ1FEE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
}
],
"lvalue_reference_types" :
@@ -73,7 +73,7 @@
"referenced_type" : "_ZTIN11namespace_a1AE",
"self_type" : "_ZTIRN11namespace_a1AE",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
}
],
"pointer_types" :
@@ -85,7 +85,7 @@
"referenced_type" : "_ZTI12InvalidClass",
"self_type" : "_ZTIP12InvalidClass",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
},
{
"alignment" : 8,
@@ -94,7 +94,7 @@
"referenced_type" : "_ZTI15TemplateInMacroIJ1FEE",
"self_type" : "_ZTIP15TemplateInMacroIJ1FEE",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
}
],
"qualified_types" :
@@ -105,7 +105,7 @@
"name" : "const namespace_b::template_b<const B *>",
"referenced_type" : "_ZTIN11namespace_b10template_bIJPKNS_1BEEEE",
"self_type" : "_ZTIKN11namespace_b10template_bIJPKNS_1BEEEE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
}
],
"record_types" : [],
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86/known_issues.h.sdump b/vndk/tools/header-checker/tests/reference_dumps/x86/known_issues.h.sdump
index cc90665f8..791811d65 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86/known_issues.h.sdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86/known_issues.h.sdump
@@ -23,19 +23,19 @@
"linker_set_key" : "non_type_template",
"name" : "non_type_template",
"referenced_type" : "_ZTIi",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h"
},
{
"linker_set_key" : "return_type",
"name" : "return_type",
"referenced_type" : "_ZTI7STDCALL",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h"
},
{
"linker_set_key" : "template_arg_in_namespace",
"name" : "template_arg_in_namespace",
"referenced_type" : "_ZTIi",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h"
}
],
"lvalue_reference_types" : [],
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86/libc_and_cpp.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86/libc_and_cpp.so.lsdump
index e00697569..fb34fa824 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86/libc_and_cpp.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86/libc_and_cpp.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI3Foo"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTI3Foo"
self_type: "_ZTI3Foo"
}
@@ -29,7 +29,7 @@ record_types {
size: 4
alignment: 4
referenced_type: "_ZTI6Cinner"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTI6Cinner"
self_type: "_ZTI6Cinner"
}
@@ -48,7 +48,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI7Cstruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTI7Cstruct"
self_type: "_ZTI7Cstruct"
}
@@ -73,7 +73,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI3Foo"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTIP3Foo"
self_type: "_ZTIP3Foo"
}
@@ -84,7 +84,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI6Cinner"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTIP6Cinner"
self_type: "_ZTIP6Cinner"
}
@@ -95,7 +95,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI7Cstruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTIP7Cstruct"
self_type: "_ZTIP7Cstruct"
}
@@ -106,7 +106,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIP7Cstruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTIPP7Cstruct"
self_type: "_ZTIPP7Cstruct"
}
@@ -117,7 +117,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIi"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTIPi"
self_type: "_ZTIPi"
}
@@ -151,7 +151,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "CFunction"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
parameters {
referenced_type: "_ZTIPP7Cstruct"
default_arg: false
@@ -163,7 +163,7 @@ functions {
functions {
return_type: "_ZTI3Foo"
function_name: "foo"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
parameters {
referenced_type: "_ZTIPi"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86/libc_and_cpp_with_unused_struct.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86/libc_and_cpp_with_unused_struct.so.lsdump
index d030088d8..b3a8c3241 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86/libc_and_cpp_with_unused_struct.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86/libc_and_cpp_with_unused_struct.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 4
alignment: 4
referenced_type: "_ZTI12UnusedStruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTI12UnusedStruct"
self_type: "_ZTI12UnusedStruct"
}
@@ -23,7 +23,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI3Foo"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTI3Foo"
self_type: "_ZTI3Foo"
}
@@ -48,7 +48,7 @@ record_types {
size: 4
alignment: 4
referenced_type: "_ZTI6Cinner"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTI6Cinner"
self_type: "_ZTI6Cinner"
}
@@ -67,7 +67,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI7Cstruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTI7Cstruct"
self_type: "_ZTI7Cstruct"
}
@@ -92,7 +92,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI3Foo"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTIP3Foo"
self_type: "_ZTIP3Foo"
}
@@ -103,7 +103,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI6Cinner"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTIP6Cinner"
self_type: "_ZTIP6Cinner"
}
@@ -114,7 +114,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI7Cstruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTIP7Cstruct"
self_type: "_ZTIP7Cstruct"
}
@@ -125,7 +125,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIP7Cstruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTIPP7Cstruct"
self_type: "_ZTIPP7Cstruct"
}
@@ -136,7 +136,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIi"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTIPi"
self_type: "_ZTIPi"
}
@@ -170,7 +170,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "CFunction"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
parameters {
referenced_type: "_ZTIPP7Cstruct"
default_arg: false
@@ -182,7 +182,7 @@ functions {
functions {
return_type: "_ZTI3Foo"
function_name: "foo"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
parameters {
referenced_type: "_ZTIPi"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp.so.lsdump
index 42aad9df7..83c7a28d0 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_add_function.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_add_function.so.lsdump
index d2a202267..611ef1d5f 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_add_function.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_add_function.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::~SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -379,7 +379,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIi"
function_name: "HighVolumeSpeaker::AddedFunction"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -408,7 +408,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -420,7 +420,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_add_function_sybmol_only.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_add_function_sybmol_only.so.lsdump
index 4c9de6d3c..ca51fd4b5 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_add_function_sybmol_only.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_add_function_sybmol_only.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::~SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -379,7 +379,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -408,7 +408,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_add_global_variable.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_add_global_variable.so.lsdump
index 9df7eba8f..ebc6b3bb3 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_add_global_variable.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_add_global_variable.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::~SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -379,7 +379,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -408,7 +408,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -419,7 +419,7 @@ functions {
}
global_vars {
name: "HighVolumeSpeaker::global_unprotected_id"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZN17HighVolumeSpeaker21global_unprotected_idE"
referenced_type: "_ZTIi"
access: public_access
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_change_function_access.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_change_function_access.so.lsdump
index fe80d94c5..1e199a092 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_change_function_access.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_change_function_access.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_change_member_access.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_change_member_access.so.lsdump
index c6f43df28..35c3d75fa 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_change_member_access.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_change_member_access.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_enum_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_enum_diff.so.lsdump
index 2b9e7713b..2c8c40d97 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_enum_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_enum_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -210,7 +210,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -221,7 +221,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -232,7 +232,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -243,7 +243,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -303,7 +303,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -315,7 +315,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -327,7 +327,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -339,7 +339,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -351,7 +351,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -363,7 +363,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -380,7 +380,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -392,7 +392,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_enum_extended.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_enum_extended.so.lsdump
index 7269f9ed4..79854ca3f 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_enum_extended.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_enum_extended.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -218,7 +218,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -229,7 +229,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -240,7 +240,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -251,7 +251,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -311,7 +311,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -323,7 +323,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -335,7 +335,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -347,7 +347,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -359,7 +359,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -371,7 +371,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -388,7 +388,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -400,7 +400,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_inheritance_type_changed.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_inheritance_type_changed.so.lsdump
index dbad77d8d..5441e8218 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_inheritance_type_changed.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_inheritance_type_changed.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 20
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -189,7 +189,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -245,7 +245,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -274,7 +274,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -285,7 +285,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -296,7 +296,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -307,7 +307,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -367,7 +367,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -379,7 +379,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -391,7 +391,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -403,7 +403,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -415,7 +415,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -427,7 +427,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -444,7 +444,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -456,7 +456,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_json.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_json.so.lsdump
index 333543371..3f1c7611b 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_json.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_json.so.lsdump
@@ -107,7 +107,7 @@
"referenced_type" : "_ZTIN12SuperSpeaker6VolumeE",
"self_type" : "_ZTIN12SuperSpeaker6VolumeE",
"size" : 4,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h",
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h",
"underlying_type" : "_ZTIj"
}
],
@@ -125,7 +125,7 @@
}
],
"return_type" : "_ZTIv",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
},
{
"function_name" : "SuperSpeaker::CreateSuperSpeaker",
@@ -137,7 +137,7 @@
}
],
"return_type" : "_ZTIP12SuperSpeaker",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
},
{
"function_name" : "SuperSpeaker::SpeakLoud",
@@ -150,7 +150,7 @@
}
],
"return_type" : "_ZTIN12SuperSpeaker6VolumeE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
},
{
"function_name" : "LowVolumeSpeaker::Speak",
@@ -163,7 +163,7 @@
}
],
"return_type" : "_ZTIv",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
},
{
"function_name" : "LowVolumeSpeaker::Listen",
@@ -176,7 +176,7 @@
}
],
"return_type" : "_ZTIv",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
},
{
"function_name" : "HighVolumeSpeaker::BadPractice",
@@ -192,7 +192,7 @@
}
],
"return_type" : "_ZTIP17HighVolumeSpeaker",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
},
{
"function_name" : "HighVolumeSpeaker::Speak",
@@ -205,7 +205,7 @@
}
],
"return_type" : "_ZTIv",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
},
{
"function_name" : "HighVolumeSpeaker::Listen",
@@ -218,7 +218,7 @@
}
],
"return_type" : "_ZTIv",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
}
],
"global_vars" : [],
@@ -232,7 +232,7 @@
"referenced_type" : "_ZTI12SuperSpeaker",
"self_type" : "_ZTIP12SuperSpeaker",
"size" : 4,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
},
{
"alignment" : 4,
@@ -241,7 +241,7 @@
"referenced_type" : "_ZTI16LowVolumeSpeaker",
"self_type" : "_ZTIP16LowVolumeSpeaker",
"size" : 4,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
},
{
"alignment" : 4,
@@ -250,7 +250,7 @@
"referenced_type" : "_ZTI17HighVolumeSpeaker",
"self_type" : "_ZTIP17HighVolumeSpeaker",
"size" : 4,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
},
{
"alignment" : 4,
@@ -259,7 +259,7 @@
"referenced_type" : "_ZTIf",
"self_type" : "_ZTIPf",
"size" : 4,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
}
],
"qualified_types" : [],
@@ -282,7 +282,7 @@
"referenced_type" : "_ZTI12SuperSpeaker",
"self_type" : "_ZTI12SuperSpeaker",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h",
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h",
"vtable_components" :
[
{
@@ -337,7 +337,7 @@
"referenced_type" : "_ZTI16LowVolumeSpeaker",
"self_type" : "_ZTI16LowVolumeSpeaker",
"size" : 16,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h",
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h",
"vtable_components" :
[
{
@@ -377,7 +377,7 @@
"referenced_type" : "_ZTI17HighVolumeSpeaker",
"self_type" : "_ZTI17HighVolumeSpeaker",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h",
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h",
"vtable_components" :
[
{
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_member_cv_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_member_cv_diff.so.lsdump
index e6a121b29..601308007 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_member_cv_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_member_cv_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIKf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPKf"
self_type: "_ZTIPKf"
}
@@ -310,7 +310,7 @@ qualified_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIKf"
self_type: "_ZTIKf"
}
@@ -321,7 +321,7 @@ qualified_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -333,7 +333,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -345,7 +345,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -357,7 +357,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -369,7 +369,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -381,7 +381,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -398,7 +398,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -410,7 +410,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_member_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_member_diff.so.lsdump
index efb0b0e99..123816174 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_member_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_member_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 20
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIx"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPx"
self_type: "_ZTIPx"
}
@@ -320,7 +320,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -332,7 +332,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -344,7 +344,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -356,7 +356,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -368,7 +368,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -380,7 +380,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -397,7 +397,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -409,7 +409,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_member_fake_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_member_fake_diff.so.lsdump
index e5cbc2021..8bed6d020 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_member_fake_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_member_fake_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -320,7 +320,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -332,7 +332,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -344,7 +344,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -356,7 +356,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -368,7 +368,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -380,7 +380,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -397,7 +397,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -409,7 +409,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_member_integral_type_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_member_integral_type_diff.so.lsdump
index b79663a8f..6ba28582e 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_member_integral_type_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_member_integral_type_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_member_name_changed.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_member_name_changed.so.lsdump
index c72acadab..1b309e32e 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_member_name_changed.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_member_name_changed.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_parameter_type_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_parameter_type_diff.so.lsdump
index b1f888aaa..f3d157c6d 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_parameter_type_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_parameter_type_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::~SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -379,7 +379,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -408,7 +408,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_return_type_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_return_type_diff.so.lsdump
index ac3d9e095..99a18f994 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_return_type_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_return_type_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIi"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIi"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_unreferenced_elf_symbol_removed.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_unreferenced_elf_symbol_removed.so.lsdump
index 327589543..7651a85d1 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_unreferenced_elf_symbol_removed.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_unreferenced_elf_symbol_removed.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_vtable_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_vtable_diff.so.lsdump
index fbb9a3116..cbe3ae301 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_vtable_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86/libgolden_cpp_vtable_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 16
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 8
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,14 +307,14 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZN12SuperSpeaker11SpeakLouderEv"
access: public_access
}
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -326,7 +326,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -338,7 +338,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -350,7 +350,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -362,7 +362,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -379,7 +379,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -391,7 +391,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86/libifunc.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86/libifunc.so.lsdump
new file mode 100644
index 000000000..dedcd5f47
--- /dev/null
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86/libifunc.so.lsdump
@@ -0,0 +1,24 @@
+builtin_types {
+ type_info {
+ name: "void"
+ size: 0
+ alignment: 0
+ referenced_type: "_ZTIv"
+ source_file: ""
+ linker_set_key: "_ZTIv"
+ self_type: "_ZTIv"
+ }
+ is_unsigned: false
+ is_integral: false
+}
+functions {
+ return_type: "_ZTIv"
+ function_name: "ifunc"
+ source_file: "development/vndk/tools/header-checker/tests/integration/ifunc/ifunc.c"
+ linker_set_key: "ifunc"
+ access: public_access
+}
+elf_functions {
+ name: "ifunc"
+ binding: Global
+}
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86/libpure_virtual_function.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86/libpure_virtual_function.so.lsdump
index 0147357ed..302e5de65 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86/libpure_virtual_function.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86/libpure_virtual_function.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 4
alignment: 4
referenced_type: "_ZTI10DerivedBar"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
linker_set_key: "_ZTI10DerivedBar"
self_type: "_ZTI10DerivedBar"
}
@@ -60,7 +60,7 @@ record_types {
size: 4
alignment: 4
referenced_type: "_ZTI15PureVirtualBase"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
linker_set_key: "_ZTI15PureVirtualBase"
self_type: "_ZTI15PureVirtualBase"
}
@@ -111,7 +111,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI10DerivedBar"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
linker_set_key: "_ZTIP10DerivedBar"
self_type: "_ZTIP10DerivedBar"
}
@@ -122,7 +122,7 @@ pointer_types {
size: 4
alignment: 4
referenced_type: "_ZTI15PureVirtualBase"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
linker_set_key: "_ZTIP15PureVirtualBase"
self_type: "_ZTIP15PureVirtualBase"
}
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86/libreproducability.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86/libreproducability.so.lsdump
index 0f49dc421..6a15f800a 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86/libreproducability.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86/libreproducability.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 4
alignment: 4
referenced_type: "_ZTI11ShouldRepro"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/reproducability_c.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/reproducability_c.h"
linker_set_key: "_ZTI11ShouldRepro"
self_type: "_ZTI11ShouldRepro"
}
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86/undeclared_types.h.sdump b/vndk/tools/header-checker/tests/reference_dumps/x86/undeclared_types.h.sdump
index 4b2e58a90..b68d6657f 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86/undeclared_types.h.sdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86/undeclared_types.h.sdump
@@ -17,7 +17,7 @@
}
],
"return_type" : "_ZTIRN11namespace_a1AE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
},
{
"access" : "private",
@@ -34,7 +34,7 @@
}
],
"return_type" : "_ZTIN12InvalidClass1DE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
}
],
"global_vars" :
@@ -43,25 +43,25 @@
"linker_set_key" : "a",
"name" : "a",
"referenced_type" : "_ZTIN11namespace_a1AE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
},
{
"linker_set_key" : "b",
"name" : "b",
"referenced_type" : "_ZTIN11namespace_b10template_bIJPKNS_1BEEEE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
},
{
"linker_set_key" : "c",
"name" : "c",
"referenced_type" : "_ZTIKN11namespace_b10template_bIJPKNS_1BEEEE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
},
{
"linker_set_key" : "template_in_macro",
"name" : "template_in_macro",
"referenced_type" : "_ZTIP15TemplateInMacroIJ1FEE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
}
],
"lvalue_reference_types" :
@@ -73,7 +73,7 @@
"referenced_type" : "_ZTIN11namespace_a1AE",
"self_type" : "_ZTIRN11namespace_a1AE",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
}
],
"pointer_types" :
@@ -85,7 +85,7 @@
"referenced_type" : "_ZTI12InvalidClass",
"self_type" : "_ZTIP12InvalidClass",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
},
{
"alignment" : 8,
@@ -94,7 +94,7 @@
"referenced_type" : "_ZTI15TemplateInMacroIJ1FEE",
"self_type" : "_ZTIP15TemplateInMacroIJ1FEE",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
}
],
"qualified_types" :
@@ -105,7 +105,7 @@
"name" : "const namespace_b::template_b<const B *>",
"referenced_type" : "_ZTIN11namespace_b10template_bIJPKNS_1BEEEE",
"self_type" : "_ZTIKN11namespace_b10template_bIJPKNS_1BEEEE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
}
],
"record_types" : [],
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86_64/known_issues.h.sdump b/vndk/tools/header-checker/tests/reference_dumps/x86_64/known_issues.h.sdump
index cc90665f8..791811d65 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86_64/known_issues.h.sdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86_64/known_issues.h.sdump
@@ -23,19 +23,19 @@
"linker_set_key" : "non_type_template",
"name" : "non_type_template",
"referenced_type" : "_ZTIi",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h"
},
{
"linker_set_key" : "return_type",
"name" : "return_type",
"referenced_type" : "_ZTI7STDCALL",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h"
},
{
"linker_set_key" : "template_arg_in_namespace",
"name" : "template_arg_in_namespace",
"referenced_type" : "_ZTIi",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/known_issues.h"
}
],
"lvalue_reference_types" : [],
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libc_and_cpp.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libc_and_cpp.so.lsdump
index 56e6aabd3..3da8342b1 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libc_and_cpp.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libc_and_cpp.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI3Foo"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTI3Foo"
self_type: "_ZTI3Foo"
}
@@ -29,7 +29,7 @@ record_types {
size: 4
alignment: 4
referenced_type: "_ZTI6Cinner"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTI6Cinner"
self_type: "_ZTI6Cinner"
}
@@ -48,7 +48,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI7Cstruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTI7Cstruct"
self_type: "_ZTI7Cstruct"
}
@@ -73,7 +73,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI3Foo"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTIP3Foo"
self_type: "_ZTIP3Foo"
}
@@ -84,7 +84,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI6Cinner"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTIP6Cinner"
self_type: "_ZTIP6Cinner"
}
@@ -95,7 +95,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI7Cstruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTIP7Cstruct"
self_type: "_ZTIP7Cstruct"
}
@@ -106,7 +106,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIP7Cstruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTIPP7Cstruct"
self_type: "_ZTIPP7Cstruct"
}
@@ -117,7 +117,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIi"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTIPi"
self_type: "_ZTIPi"
}
@@ -151,7 +151,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "CFunction"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
parameters {
referenced_type: "_ZTIPP7Cstruct"
default_arg: false
@@ -163,7 +163,7 @@ functions {
functions {
return_type: "_ZTI3Foo"
function_name: "foo"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
parameters {
referenced_type: "_ZTIPi"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libc_and_cpp_with_unused_struct.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libc_and_cpp_with_unused_struct.so.lsdump
index cdca30e63..6987e9022 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libc_and_cpp_with_unused_struct.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libc_and_cpp_with_unused_struct.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 4
alignment: 4
referenced_type: "_ZTI12UnusedStruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTI12UnusedStruct"
self_type: "_ZTI12UnusedStruct"
}
@@ -23,7 +23,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI3Foo"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTI3Foo"
self_type: "_ZTI3Foo"
}
@@ -48,7 +48,7 @@ record_types {
size: 4
alignment: 4
referenced_type: "_ZTI6Cinner"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTI6Cinner"
self_type: "_ZTI6Cinner"
}
@@ -67,7 +67,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI7Cstruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTI7Cstruct"
self_type: "_ZTI7Cstruct"
}
@@ -92,7 +92,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI3Foo"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTIP3Foo"
self_type: "_ZTIP3Foo"
}
@@ -103,7 +103,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI6Cinner"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTIP6Cinner"
self_type: "_ZTIP6Cinner"
}
@@ -114,7 +114,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI7Cstruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTIP7Cstruct"
self_type: "_ZTIP7Cstruct"
}
@@ -125,7 +125,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIP7Cstruct"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
linker_set_key: "_ZTIPP7Cstruct"
self_type: "_ZTIPP7Cstruct"
}
@@ -136,7 +136,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIi"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
linker_set_key: "_ZTIPi"
self_type: "_ZTIPi"
}
@@ -170,7 +170,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "CFunction"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_include.h"
parameters {
referenced_type: "_ZTIPP7Cstruct"
default_arg: false
@@ -182,7 +182,7 @@ functions {
functions {
return_type: "_ZTI3Foo"
function_name: "foo"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h"
parameters {
referenced_type: "_ZTIPi"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp.so.lsdump
index 0dc35015c..953df5203 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_add_function.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_add_function.so.lsdump
index 84829bfd8..84fa217d7 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_add_function.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_add_function.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::~SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -379,7 +379,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIi"
function_name: "HighVolumeSpeaker::AddedFunction"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -408,7 +408,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -420,7 +420,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_add_function_sybmol_only.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_add_function_sybmol_only.so.lsdump
index 06526ecab..4bcb92e97 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_add_function_sybmol_only.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_add_function_sybmol_only.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::~SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -379,7 +379,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -408,7 +408,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_add_global_variable.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_add_global_variable.so.lsdump
index 86969d83f..77c3c1386 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_add_global_variable.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_add_global_variable.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::~SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -379,7 +379,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -408,7 +408,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -419,7 +419,7 @@ functions {
}
global_vars {
name: "HighVolumeSpeaker::global_unprotected_id"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZN17HighVolumeSpeaker21global_unprotected_idE"
referenced_type: "_ZTIi"
access: public_access
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_change_function_access.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_change_function_access.so.lsdump
index 2c7f9da89..bc609ddd9 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_change_function_access.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_change_function_access.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_change_member_access.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_change_member_access.so.lsdump
index b3d2098a7..ae744eba3 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_change_member_access.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_change_member_access.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_enum_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_enum_diff.so.lsdump
index b4c23b3f8..5b8162a5b 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_enum_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_enum_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -210,7 +210,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -221,7 +221,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -232,7 +232,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -243,7 +243,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -303,7 +303,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -315,7 +315,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -327,7 +327,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -339,7 +339,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -351,7 +351,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -363,7 +363,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -380,7 +380,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -392,7 +392,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_enum_extended.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_enum_extended.so.lsdump
index 8ccd95469..3ac47c61b 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_enum_extended.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_enum_extended.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -218,7 +218,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -229,7 +229,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -240,7 +240,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -251,7 +251,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -311,7 +311,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -323,7 +323,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -335,7 +335,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -347,7 +347,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -359,7 +359,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -371,7 +371,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -388,7 +388,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -400,7 +400,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_inheritance_type_changed.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_inheritance_type_changed.so.lsdump
index 4be1bf6d4..fc447ab1f 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_inheritance_type_changed.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_inheritance_type_changed.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 40
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -189,7 +189,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -245,7 +245,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -274,7 +274,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -285,7 +285,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -296,7 +296,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -307,7 +307,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -367,7 +367,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -379,7 +379,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -391,7 +391,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -403,7 +403,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -415,7 +415,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -427,7 +427,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -444,7 +444,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -456,7 +456,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_json.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_json.so.lsdump
index 713d8e8df..90193c13d 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_json.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_json.so.lsdump
@@ -107,7 +107,7 @@
"referenced_type" : "_ZTIN12SuperSpeaker6VolumeE",
"self_type" : "_ZTIN12SuperSpeaker6VolumeE",
"size" : 4,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h",
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h",
"underlying_type" : "_ZTIj"
}
],
@@ -125,7 +125,7 @@
}
],
"return_type" : "_ZTIv",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
},
{
"function_name" : "SuperSpeaker::CreateSuperSpeaker",
@@ -137,7 +137,7 @@
}
],
"return_type" : "_ZTIP12SuperSpeaker",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
},
{
"function_name" : "SuperSpeaker::SpeakLoud",
@@ -150,7 +150,7 @@
}
],
"return_type" : "_ZTIN12SuperSpeaker6VolumeE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
},
{
"function_name" : "LowVolumeSpeaker::Speak",
@@ -163,7 +163,7 @@
}
],
"return_type" : "_ZTIv",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
},
{
"function_name" : "LowVolumeSpeaker::Listen",
@@ -176,7 +176,7 @@
}
],
"return_type" : "_ZTIv",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
},
{
"function_name" : "HighVolumeSpeaker::BadPractice",
@@ -192,7 +192,7 @@
}
],
"return_type" : "_ZTIP17HighVolumeSpeaker",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
},
{
"function_name" : "HighVolumeSpeaker::Speak",
@@ -205,7 +205,7 @@
}
],
"return_type" : "_ZTIv",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
},
{
"function_name" : "HighVolumeSpeaker::Listen",
@@ -218,7 +218,7 @@
}
],
"return_type" : "_ZTIv",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
}
],
"global_vars" : [],
@@ -232,7 +232,7 @@
"referenced_type" : "_ZTI12SuperSpeaker",
"self_type" : "_ZTIP12SuperSpeaker",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
},
{
"alignment" : 8,
@@ -241,7 +241,7 @@
"referenced_type" : "_ZTI16LowVolumeSpeaker",
"self_type" : "_ZTIP16LowVolumeSpeaker",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
},
{
"alignment" : 8,
@@ -250,7 +250,7 @@
"referenced_type" : "_ZTI17HighVolumeSpeaker",
"self_type" : "_ZTIP17HighVolumeSpeaker",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
},
{
"alignment" : 8,
@@ -259,7 +259,7 @@
"referenced_type" : "_ZTIf",
"self_type" : "_ZTIPf",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
}
],
"qualified_types" : [],
@@ -282,7 +282,7 @@
"referenced_type" : "_ZTI12SuperSpeaker",
"self_type" : "_ZTI12SuperSpeaker",
"size" : 16,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h",
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h",
"vtable_components" :
[
{
@@ -337,7 +337,7 @@
"referenced_type" : "_ZTI16LowVolumeSpeaker",
"self_type" : "_ZTI16LowVolumeSpeaker",
"size" : 24,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h",
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h",
"vtable_components" :
[
{
@@ -377,7 +377,7 @@
"referenced_type" : "_ZTI17HighVolumeSpeaker",
"self_type" : "_ZTI17HighVolumeSpeaker",
"size" : 16,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h",
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h",
"vtable_components" :
[
{
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_member_cv_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_member_cv_diff.so.lsdump
index 2fc25a834..f0218d371 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_member_cv_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_member_cv_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIKf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPKf"
self_type: "_ZTIPKf"
}
@@ -310,7 +310,7 @@ qualified_types {
size: 4
alignment: 4
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIKf"
self_type: "_ZTIKf"
}
@@ -321,7 +321,7 @@ qualified_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -333,7 +333,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -345,7 +345,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -357,7 +357,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -369,7 +369,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -381,7 +381,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -398,7 +398,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -410,7 +410,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_member_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_member_diff.so.lsdump
index 023a2be50..ba7f51a6b 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_member_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_member_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 32
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIx"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPx"
self_type: "_ZTIPx"
}
@@ -320,7 +320,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -332,7 +332,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -344,7 +344,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -356,7 +356,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -368,7 +368,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -380,7 +380,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -397,7 +397,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -409,7 +409,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_member_fake_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_member_fake_diff.so.lsdump
index e076de61f..cd47f1590 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_member_fake_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_member_fake_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -320,7 +320,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -332,7 +332,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -344,7 +344,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -356,7 +356,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -368,7 +368,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -380,7 +380,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -397,7 +397,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -409,7 +409,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_member_integral_type_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_member_integral_type_diff.so.lsdump
index 70bc99777..239f88a81 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_member_integral_type_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_member_integral_type_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_member_name_changed.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_member_name_changed.so.lsdump
index 43e8b2607..f5ede60d6 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_member_name_changed.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_member_name_changed.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_parameter_type_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_parameter_type_diff.so.lsdump
index ab77b9209..d4be52cdd 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_parameter_type_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_parameter_type_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::~SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -379,7 +379,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -408,7 +408,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_return_type_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_return_type_diff.so.lsdump
index 9aeadfd07..834c600e2 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_return_type_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_return_type_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIi"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIi"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_unreferenced_elf_symbol_removed.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_unreferenced_elf_symbol_removed.so.lsdump
index f3516e972..f840c63a0 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_unreferenced_elf_symbol_removed.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_unreferenced_elf_symbol_removed.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,7 +307,7 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -319,7 +319,7 @@ functions {
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -331,7 +331,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -343,7 +343,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -355,7 +355,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -367,7 +367,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -384,7 +384,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -396,7 +396,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_vtable_diff.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_vtable_diff.so.lsdump
index fc7cd2a08..42e0e9f67 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_vtable_diff.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libgolden_cpp_vtable_diff.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTI12SuperSpeaker"
self_type: "_ZTI12SuperSpeaker"
}
@@ -61,7 +61,7 @@ record_types {
size: 24
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTI16LowVolumeSpeaker"
self_type: "_ZTI16LowVolumeSpeaker"
}
@@ -129,7 +129,7 @@ record_types {
size: 16
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTI17HighVolumeSpeaker"
self_type: "_ZTI17HighVolumeSpeaker"
}
@@ -185,7 +185,7 @@ enum_types {
size: 4
alignment: 4
referenced_type: "_ZTIN12SuperSpeaker6VolumeE"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIN12SuperSpeaker6VolumeE"
self_type: "_ZTIN12SuperSpeaker6VolumeE"
}
@@ -214,7 +214,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI12SuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZTIP12SuperSpeaker"
self_type: "_ZTIP12SuperSpeaker"
}
@@ -225,7 +225,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI16LowVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIP16LowVolumeSpeaker"
self_type: "_ZTIP16LowVolumeSpeaker"
}
@@ -236,7 +236,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI17HighVolumeSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
linker_set_key: "_ZTIP17HighVolumeSpeaker"
self_type: "_ZTIP17HighVolumeSpeaker"
}
@@ -247,7 +247,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTIf"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
linker_set_key: "_ZTIPf"
self_type: "_ZTIPf"
}
@@ -307,14 +307,14 @@ builtin_types {
functions {
return_type: "_ZTIv"
function_name: "SuperSpeaker::SpeakLouder"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
linker_set_key: "_ZN12SuperSpeaker11SpeakLouderEv"
access: public_access
}
functions {
return_type: "_ZTIP12SuperSpeaker"
function_name: "SuperSpeaker::CreateSuperSpeaker"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIi"
default_arg: false
@@ -326,7 +326,7 @@ functions {
functions {
return_type: "_ZTIN12SuperSpeaker6VolumeE"
function_name: "SuperSpeaker::SpeakLoud"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/abstract_class.h"
parameters {
referenced_type: "_ZTIP12SuperSpeaker"
default_arg: false
@@ -338,7 +338,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -350,7 +350,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "LowVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/low_volume_speaker.h"
parameters {
referenced_type: "_ZTIP16LowVolumeSpeaker"
default_arg: false
@@ -362,7 +362,7 @@ functions {
functions {
return_type: "_ZTIP17HighVolumeSpeaker"
function_name: "HighVolumeSpeaker::BadPractice"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -379,7 +379,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Speak"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
@@ -391,7 +391,7 @@ functions {
functions {
return_type: "_ZTIv"
function_name: "HighVolumeSpeaker::Listen"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/gold/include/high_volume_speaker.h"
parameters {
referenced_type: "_ZTIP17HighVolumeSpeaker"
default_arg: false
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libifunc.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libifunc.so.lsdump
new file mode 100644
index 000000000..dedcd5f47
--- /dev/null
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libifunc.so.lsdump
@@ -0,0 +1,24 @@
+builtin_types {
+ type_info {
+ name: "void"
+ size: 0
+ alignment: 0
+ referenced_type: "_ZTIv"
+ source_file: ""
+ linker_set_key: "_ZTIv"
+ self_type: "_ZTIv"
+ }
+ is_unsigned: false
+ is_integral: false
+}
+functions {
+ return_type: "_ZTIv"
+ function_name: "ifunc"
+ source_file: "development/vndk/tools/header-checker/tests/integration/ifunc/ifunc.c"
+ linker_set_key: "ifunc"
+ access: public_access
+}
+elf_functions {
+ name: "ifunc"
+ binding: Global
+}
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libpure_virtual_function.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libpure_virtual_function.so.lsdump
index 1660a6f1c..ae53101cf 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libpure_virtual_function.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libpure_virtual_function.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 8
alignment: 8
referenced_type: "_ZTI10DerivedBar"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
linker_set_key: "_ZTI10DerivedBar"
self_type: "_ZTI10DerivedBar"
}
@@ -60,7 +60,7 @@ record_types {
size: 8
alignment: 8
referenced_type: "_ZTI15PureVirtualBase"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
linker_set_key: "_ZTI15PureVirtualBase"
self_type: "_ZTI15PureVirtualBase"
}
@@ -111,7 +111,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI10DerivedBar"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
linker_set_key: "_ZTIP10DerivedBar"
self_type: "_ZTIP10DerivedBar"
}
@@ -122,7 +122,7 @@ pointer_types {
size: 8
alignment: 8
referenced_type: "_ZTI15PureVirtualBase"
- source_file: "/development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/cpp/pure_virtual/include/header1.h"
linker_set_key: "_ZTIP15PureVirtualBase"
self_type: "_ZTIP15PureVirtualBase"
}
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libreproducability.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libreproducability.so.lsdump
index 0f49dc421..6a15f800a 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libreproducability.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libreproducability.so.lsdump
@@ -4,7 +4,7 @@ record_types {
size: 4
alignment: 4
referenced_type: "_ZTI11ShouldRepro"
- source_file: "/development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/reproducability_c.h"
+ source_file: "development/vndk/tools/header-checker/tests/integration/c_and_cpp/include/reproducability_c.h"
linker_set_key: "_ZTI11ShouldRepro"
self_type: "_ZTI11ShouldRepro"
}
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86_64/undeclared_types.h.sdump b/vndk/tools/header-checker/tests/reference_dumps/x86_64/undeclared_types.h.sdump
index 4b2e58a90..b68d6657f 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86_64/undeclared_types.h.sdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86_64/undeclared_types.h.sdump
@@ -17,7 +17,7 @@
}
],
"return_type" : "_ZTIRN11namespace_a1AE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
},
{
"access" : "private",
@@ -34,7 +34,7 @@
}
],
"return_type" : "_ZTIN12InvalidClass1DE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
}
],
"global_vars" :
@@ -43,25 +43,25 @@
"linker_set_key" : "a",
"name" : "a",
"referenced_type" : "_ZTIN11namespace_a1AE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
},
{
"linker_set_key" : "b",
"name" : "b",
"referenced_type" : "_ZTIN11namespace_b10template_bIJPKNS_1BEEEE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
},
{
"linker_set_key" : "c",
"name" : "c",
"referenced_type" : "_ZTIKN11namespace_b10template_bIJPKNS_1BEEEE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
},
{
"linker_set_key" : "template_in_macro",
"name" : "template_in_macro",
"referenced_type" : "_ZTIP15TemplateInMacroIJ1FEE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
}
],
"lvalue_reference_types" :
@@ -73,7 +73,7 @@
"referenced_type" : "_ZTIN11namespace_a1AE",
"self_type" : "_ZTIRN11namespace_a1AE",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
}
],
"pointer_types" :
@@ -85,7 +85,7 @@
"referenced_type" : "_ZTI12InvalidClass",
"self_type" : "_ZTIP12InvalidClass",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
},
{
"alignment" : 8,
@@ -94,7 +94,7 @@
"referenced_type" : "_ZTI15TemplateInMacroIJ1FEE",
"self_type" : "_ZTIP15TemplateInMacroIJ1FEE",
"size" : 8,
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
}
],
"qualified_types" :
@@ -105,7 +105,7 @@
"name" : "const namespace_b::template_b<const B *>",
"referenced_type" : "_ZTIN11namespace_b10template_bIJPKNS_1BEEEE",
"self_type" : "_ZTIKN11namespace_b10template_bIJPKNS_1BEEEE",
- "source_file" : "/development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
+ "source_file" : "development/vndk/tools/header-checker/tests/integration/cpp/header/undeclared_types.h"
}
],
"record_types" : [],
diff --git a/vndk/tools/header-checker/tests/test.py b/vndk/tools/header-checker/tests/test.py
index b1da06b62..f4718843b 100755
--- a/vndk/tools/header-checker/tests/test.py
+++ b/vndk/tools/header-checker/tests/test.py
@@ -1,38 +1,40 @@
#!/usr/bin/env python3
import os
-import unittest
+import shutil
+import subprocess
import sys
import tempfile
+import unittest
import_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
import_path = os.path.abspath(os.path.join(import_path, 'utils'))
sys.path.insert(1, import_path)
-from utils import (AOSP_DIR, read_output_content, run_abi_diff,
- run_header_abi_dumper)
+from utils import run_abi_diff, run_header_abi_dumper
from module import Module
SCRIPT_DIR = os.path.abspath(os.path.dirname(__file__))
INPUT_DIR = os.path.join(SCRIPT_DIR, 'input')
EXPECTED_DIR = os.path.join(SCRIPT_DIR, 'expected')
+EXPORTED_HEADER_DIRS = (INPUT_DIR,)
REF_DUMP_DIR = os.path.join(SCRIPT_DIR, 'reference_dumps')
def make_and_copy_reference_dumps(module, reference_dump_dir=REF_DUMP_DIR):
- output_content = module.make_dump()
-
dump_dir = os.path.join(reference_dump_dir, module.arch)
os.makedirs(dump_dir, exist_ok=True)
-
dump_path = os.path.join(dump_dir, module.get_dump_name())
- with open(dump_path, 'w') as f:
- f.write(output_content)
-
+ module.make_dump(dump_path)
return dump_path
+def _read_output_content(dump_path):
+ with open(dump_path, 'r') as f:
+ return f.read()
+
+
class HeaderCheckerTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
@@ -54,7 +56,12 @@ class HeaderCheckerTest(unittest.TestCase):
def run_and_compare(self, input_path, expected_path, cflags=[]):
with open(expected_path, 'r') as f:
expected_output = f.read()
- actual_output = run_header_abi_dumper(input_path, cflags)
+ with tempfile.NamedTemporaryFile(dir=self.get_tmp_dir(),
+ delete=False) as f:
+ output_path = f.name
+ run_header_abi_dumper(input_path, output_path, cflags,
+ EXPORTED_HEADER_DIRS)
+ actual_output = _read_output_content(output_path)
self.assertEqual(actual_output, expected_output)
def run_and_compare_name(self, name, cflags=[]):
@@ -111,9 +118,8 @@ class HeaderCheckerTest(unittest.TestCase):
self.assertEqual(old_module.arch, new_module.arch)
old_ref_dump_path = self.get_or_create_ref_dump(old_module, False)
new_ref_dump_path = self.get_or_create_ref_dump(new_module, True)
- self.assertEqual(
- read_output_content(old_ref_dump_path, AOSP_DIR),
- read_output_content(new_ref_dump_path, AOSP_DIR))
+ self.assertEqual(_read_output_content(old_ref_dump_path),
+ _read_output_content(new_ref_dump_path))
def test_example1_cpp(self):
self.run_and_compare_name_cpp('example1.cpp')
@@ -372,6 +378,26 @@ class HeaderCheckerTest(unittest.TestCase):
self.prepare_and_absolute_diff_all_archs(
"libanonymous_enum_odr", "libanonymous_enum_odr")
+ def test_libifunc(self):
+ self.prepare_and_absolute_diff_all_archs(
+ "libifunc", "libifunc")
+
+ def test_merge_multi_definitions(self):
+ self.prepare_and_absolute_diff_all_archs(
+ "libmerge_multi_definitions", "libmerge_multi_definitions")
+
+ def test_print_resource_dir(self):
+ dumper_path = shutil.which("header-abi-dumper")
+ self.assertIsNotNone(dumper_path)
+ dumper_path = os.path.realpath(dumper_path)
+ common_dir = os.path.dirname(os.path.dirname(dumper_path))
+ resource_dir = subprocess.check_output(
+ ["header-abi-dumper", "-print-resource-dir"], text=True,
+ stderr=subprocess.DEVNULL).strip()
+ self.assertEqual(os.path.dirname(resource_dir),
+ os.path.join(common_dir, "lib64", "clang"))
+ self.assertRegex(os.path.basename(resource_dir), r"^[\d.]+$")
+
if __name__ == '__main__':
unittest.main()
diff --git a/vndk/tools/header-checker/utils/create_reference_dumps.py b/vndk/tools/header-checker/utils/create_reference_dumps.py
index e842decb0..5db48c5d2 100755
--- a/vndk/tools/header-checker/utils/create_reference_dumps.py
+++ b/vndk/tools/header-checker/utils/create_reference_dumps.py
@@ -13,8 +13,7 @@ from utils import (
read_lsdump_paths)
-PRODUCTS_DEFAULT = ['aosp_arm_ab', 'aosp_arm', 'aosp_arm64', 'aosp_x86_ab',
- 'aosp_x86', 'aosp_x86_64']
+PRODUCTS_DEFAULT = ['aosp_arm', 'aosp_arm64', 'aosp_x86', 'aosp_x86_64']
PREBUILTS_ABI_DUMPS_DEFAULT = os.path.join(AOSP_DIR, 'prebuilts', 'abi-dumps')
diff --git a/vndk/tools/header-checker/utils/utils.py b/vndk/tools/header-checker/utils/utils.py
index 448c6ad99..e0fd5cf42 100644
--- a/vndk/tools/header-checker/utils/utils.py
+++ b/vndk/tools/header-checker/utils/utils.py
@@ -2,6 +2,8 @@
import gzip
import os
+import re
+import shutil
import subprocess
import sys
import tempfile
@@ -24,11 +26,6 @@ BUILTIN_HEADERS_DIR = (
'clang-headers'),
)
-EXPORTED_HEADERS_DIR = (
- os.path.join(AOSP_DIR, 'development', 'vndk', 'tools', 'header-checker',
- 'tests'),
-)
-
SO_EXT = '.so'
SOURCE_ABI_DUMP_EXT_END = '.lsdump'
SOURCE_ABI_DUMP_EXT = SO_EXT + SOURCE_ABI_DUMP_EXT_END
@@ -80,43 +77,33 @@ class Target(object):
return self.get_arch_str() + cpu_variant
+def _validate_dump_content(dump_path):
+ """Make sure that the dump contains relative source paths."""
+ with open(dump_path, 'r') as f:
+ if AOSP_DIR in f.read():
+ raise ValueError(
+ dump_path + ' contains absolute path to $ANDROID_BUILD_TOP.')
+
+
def copy_reference_dump(lib_path, reference_dump_dir, compress):
reference_dump_path = os.path.join(
reference_dump_dir, os.path.basename(lib_path))
if compress:
reference_dump_path += '.gz'
os.makedirs(os.path.dirname(reference_dump_path), exist_ok=True)
- output_content = read_output_content(lib_path, AOSP_DIR)
+ _validate_dump_content(lib_path)
if compress:
- with gzip.open(reference_dump_path, 'wb') as f:
- f.write(bytes(output_content, 'utf-8'))
+ with open(lib_path, 'rb') as src_file:
+ with gzip.open(reference_dump_path, 'wb') as dst_file:
+ shutil.copyfileobj(src_file, dst_file)
else:
- with open(reference_dump_path, 'wb') as f:
- f.write(bytes(output_content, 'utf-8'))
+ shutil.copyfile(lib_path, reference_dump_path)
print('Created abi dump at', reference_dump_path)
return reference_dump_path
-def read_output_content(output_path, replace_str):
- with open(output_path, 'r') as f:
- return f.read().replace(replace_str, '')
-
-
-def run_header_abi_dumper(input_path, cflags=tuple(),
- export_include_dirs=EXPORTED_HEADERS_DIR,
- flags=tuple()):
- """Run header-abi-dumper to dump ABI from `input_path` and return the
- output."""
- with tempfile.TemporaryDirectory() as tmp:
- output_path = os.path.join(tmp, os.path.basename(input_path)) + '.dump'
- run_header_abi_dumper_on_file(input_path, output_path,
- export_include_dirs, cflags, flags)
- return read_output_content(output_path, AOSP_DIR)
-
-
-def run_header_abi_dumper_on_file(input_path, output_path,
- export_include_dirs=tuple(), cflags=tuple(),
- flags=tuple()):
+def run_header_abi_dumper(input_path, output_path, cflags=tuple(),
+ export_include_dirs=tuple(), flags=tuple()):
"""Run header-abi-dumper to dump ABI from `input_path` and the output is
written to `output_path`."""
input_ext = os.path.splitext(input_path)[1]
@@ -140,10 +127,11 @@ def run_header_abi_dumper_on_file(input_path, output_path,
# The export include dirs imply local include dirs.
for dir in export_include_dirs:
cmd += ['-I', dir]
- subprocess.check_call(cmd)
+ subprocess.check_call(cmd, cwd=AOSP_DIR)
+ _validate_dump_content(output_path)
-def run_header_abi_linker(output_path, inputs, version_script, api, arch,
+def run_header_abi_linker(inputs, output_path, version_script, api, arch,
flags=tuple()):
"""Link inputs, taking version_script into account"""
cmd = ['header-abi-linker', '-o', output_path, '-v', version_script,
@@ -154,8 +142,8 @@ def run_header_abi_linker(output_path, inputs, version_script, api, arch,
if '-output-format' not in flags:
cmd += ['-output-format', DEFAULT_FORMAT]
cmd += inputs
- subprocess.check_call(cmd)
- return read_output_content(output_path, AOSP_DIR)
+ subprocess.check_call(cmd, cwd=AOSP_DIR)
+ _validate_dump_content(output_path)
def make_targets(product, variant, targets):
@@ -190,9 +178,12 @@ def get_lsdump_paths_file_path(product, variant):
return os.path.join(product_out, 'lsdump_paths.txt')
-def _is_sanitizer_variation(variation):
- """Check whether the variation is introduced by a sanitizer."""
- return variation in {'asan', 'hwasan', 'tsan', 'intOverflow', 'cfi', 'scs'}
+def _get_module_variant_sort_key(suffix):
+ for variant in suffix.split('_'):
+ match = re.match(r'apex(\d+)$', variant)
+ if match:
+ return (int(match.group(1)), suffix)
+ return (-1, suffix)
def _get_module_variant_dir_name(tag, vndk_version, arch_cpu_str):
@@ -245,13 +236,10 @@ def _read_lsdump_paths(lsdump_paths_file_path, vndk_version, targets):
if not variant.startswith(prefix):
continue
new_suffix = variant[len(prefix):]
- # Skip if the suffix contains APEX variations.
- new_variations = [x for x in new_suffix.split('_') if x]
- if new_variations and not all(_is_sanitizer_variation(x)
- for x in new_variations):
- continue
old_suffix = suffixes[libname].get(arch_cpu)
- if not old_suffix or new_suffix > old_suffix:
+ if (not old_suffix or
+ _get_module_variant_sort_key(new_suffix) >
+ _get_module_variant_sort_key(old_suffix)):
lsdump_paths[libname][arch_cpu][tag] = path
suffixes[libname][arch_cpu] = new_suffix
return lsdump_paths
diff --git a/vndk/tools/image-diff-tool/Android.bp b/vndk/tools/image-diff-tool/Android.bp
index 5b7255293..ac5936eb9 100644
--- a/vndk/tools/image-diff-tool/Android.bp
+++ b/vndk/tools/image-diff-tool/Android.bp
@@ -14,6 +14,10 @@
// limitations under the License.
//
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
python_binary_host {
name: "compare_images",
main: "diff.py",
diff --git a/vndk/tools/image-diff-tool/whitelist.txt b/vndk/tools/image-diff-tool/allowlist.txt
index 569804c79..87efe8ae9 100644
--- a/vndk/tools/image-diff-tool/whitelist.txt
+++ b/vndk/tools/image-diff-tool/allowlist.txt
@@ -1,3 +1,4 @@
+# Common whitelist
system/build.prop=ro.system.build.date
system/build.prop=ro.system.build.fingerprint
system/build.prop=ro.system.build.version.incremental
diff --git a/vndk/tools/image-diff-tool/compare_images_and_print.sh b/vndk/tools/image-diff-tool/compare_images_and_print.sh
index 23b45f7ee..8c94cd396 100755
--- a/vndk/tools/image-diff-tool/compare_images_and_print.sh
+++ b/vndk/tools/image-diff-tool/compare_images_and_print.sh
@@ -41,26 +41,26 @@ readonly CHECK_DIFF_RESULT
. build/envsetup.sh
lunch aosp_arm64
build/soong/soong_ui.bash --make-mode compare_images
-COMMON_WHITELIST=development/vndk/tools/image-diff-tool/whitelist.txt
-out/host/linux-x86/bin/compare_images $1 -u -w "${COMMON_WHITELIST}"
+COMMON_ALLOWLIST=development/vndk/tools/image-diff-tool/allowlist.txt
+out/host/linux-x86/bin/compare_images $1 -u -w "${COMMON_ALLOWLIST}"
if [ -v DIST_DIR ]; then
- cp common.csv diff.csv whitelisted_diff.csv "${DIST_DIR}"
+ cp common.csv diff.csv allowlisted_diff.csv "${DIST_DIR}"
fi
echo >&2
-echo >&2 " - Different parts (that are whitelisted)"
-cat >&2 whitelisted_diff.csv
+echo >&2 " - Different parts (that are allowlisted)"
+cat >&2 allowlisted_diff.csv
echo >&2
-echo >&2 " - Different parts (that are not whitelisted)"
+echo >&2 " - Different parts (that are not allowlisted)"
cat >&2 diff.csv
if [ "$(wc -l diff.csv | cut -d' ' -f1)" -gt "1" ]; then
cat >&2 <<EOF
[ERROR] Unexpected diffing files.
-There are diffing files that are not ignored by whitelist.
-The whitelist may need to be updated.
+There are diffing files that are not ignored by allowlist.
+The allowlist may need to be updated.
EOF
if [ -n "${CHECK_DIFF_RESULT}" ]; then
exit 1
diff --git a/vndk/tools/image-diff-tool/diff.py b/vndk/tools/image-diff-tool/diff.py
index ff3b0ae6b..d12609f94 100644
--- a/vndk/tools/image-diff-tool/diff.py
+++ b/vndk/tools/image-diff-tool/diff.py
@@ -12,41 +12,38 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
-
-import os
-import subprocess
-import sys
-from collections import defaultdict
-from pathlib import Path
-import hashlib
import argparse
-import zipfile
+import collections
import fnmatch
+import hashlib
+import os
+import pathlib
+import subprocess
import tempfile
-
+import zipfile
def silent_call(cmd):
- return subprocess.call(cmd, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) == 0
-
+ return subprocess.call(
+ cmd, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) == 0
def sha1sum(f):
- with open(f, 'rb') as fin:
+ with open(f, "rb") as fin:
return hashlib.sha1(fin.read()).hexdigest()
-
def sha1sum_without_signing_key(filepath):
apk = zipfile.ZipFile(filepath)
l = []
for f in sorted(apk.namelist()):
- if f.startswith('META-INF/'):
+ if f.startswith("META-INF/"):
continue
l.append(hashlib.sha1(apk.read(f)).hexdigest())
l.append(f)
return hashlib.sha1(",".join(l).encode()).hexdigest()
-
def strip_and_sha1sum(filepath):
- # TODO: save striped file in tmp directory to support readonly directory.
- tmp_filepath = filepath + '.tmp.no-build-id'
- strip_all_and_remove_build_id = lambda: silent_call(
- ["llvm-strip", "--strip-all", "--keep-section=.ARM.attributes",
- "--remove-section=.note.gnu.build-id", filepath, "-o", tmp_filepath])
+ """Strip informations of elf file and calculate sha1 hash."""
+ tmp_filepath = filepath + ".tmp.no-build-id"
+ llvm_strip = [
+ "llvm-strip", "--strip-all", "--keep-section=.ARM.attributes",
+ "--remove-section=.note.gnu.build-id", filepath, "-o", tmp_filepath
+ ]
+ strip_all_and_remove_build_id = lambda: silent_call(llvm_strip)
try:
if strip_all_and_remove_build_id():
return sha1sum(tmp_filepath)
@@ -55,61 +52,51 @@ def strip_and_sha1sum(filepath):
finally:
if os.path.exists(tmp_filepath):
os.remove(tmp_filepath)
-
return sha1sum(filepath)
-
-
-def make_filter_from_whitelists(whitelists, all_targets):
- """Creates a callable filter from a list of whitelist files.
-
- Whitelist can contain pathname patterns or ignored lines. Pathnames are case
+def make_filter_from_allowlists(allowlists, all_targets):
+ """Creates a callable filter from a list of allowlist files.
+ Allowlist can contain pathname patterns or skipped lines. Pathnames are case
insensitive.
-
+ Allowlist can contain single-line comments. Comment lines begin with #
For example, this ignores the file "system/build.prop":
SYSTEM/build.prop
-
This ignores txt files:
*.txt
-
This ignores files in directory "system/dontcare/"
SYSTEM/dontcare/*
-
This ignores lines prefixed with pat1 or pat2 in file "system/build.prop":
SYSTEM/build.prop=pat1 pat2
-
Args:
- whitelists: A list of whitelist filenames.
+ allowlists: A list of allowlist filenames.
all_targets: A list of targets to compare.
-
Returns:
A callable object that accepts a file pathname and returns True if the file
- is ignored by the whitelists and False when it is not.
+ is skipped by the allowlists and False when it is not.
"""
- ignored_patterns = set()
- ignored_lines = defaultdict(list)
- for whitelist in whitelists:
- if not os.path.isfile(whitelist):
+ skipped_patterns = set()
+ skipped_lines = collections.defaultdict(list)
+ for allowlist in allowlists:
+ if not os.path.isfile(allowlist):
continue
- with open(whitelist, 'rb') as f:
+ with open(allowlist, "rb") as f:
for line in f:
pat = line.strip().decode()
- if pat and pat[-1] == '\\':
- pat = pat.rstrip('\\')
- if '=' in pat:
- filename, prefixes = pat.split('=', 1)
+ if pat.startswith("#"):
+ continue
+ if pat and pat[-1] == "\\":
+ pat = pat.rstrip("\\")
+ if "=" in pat:
+ filename, prefixes = pat.split("=", 1)
prefixes = prefixes.split()
if prefixes:
- ignored_lines[filename.lower()].extend(prefixes)
+ skipped_lines[filename.lower()].extend(prefixes)
elif pat:
- ignored_patterns.add(pat.lower())
-
- def diff_with_ignored_lines(filename, prefixes):
+ skipped_patterns.add(pat.lower())
+ def diff_with_skipped_lines(filename, prefixes):
"""Compares sha1 digest of file while ignoring lines.
-
Args:
filename: File to compare among each target.
- prefixes: A list of prefixes. Lines that start with prefix are ignored.
-
+ prefixes: A list of prefixes. Lines that start with prefix are skipped.
Returns:
True if file is identical among each target.
"""
@@ -119,7 +106,7 @@ def make_filter_from_whitelists(whitelists, all_targets):
if not os.path.isfile(pathname):
return False
sha1 = hashlib.sha1()
- with open(pathname, 'rb') as f:
+ with open(pathname, "rb") as f:
for line in f:
line_text = line.decode()
if not any(line_text.startswith(prefix) for prefix in prefixes):
@@ -127,101 +114,111 @@ def make_filter_from_whitelists(whitelists, all_targets):
file_digest_respect_ignore.append(sha1.hexdigest())
return (len(file_digest_respect_ignore) == len(all_targets) and
len(set(file_digest_respect_ignore)) == 1)
-
- def whitelist_filter(filename):
+ def allowlist_filter(filename):
norm_filename = filename.lower()
- for pattern in ignored_patterns:
+ for pattern in skipped_patterns:
if fnmatch.fnmatch(norm_filename, pattern):
return True
- if norm_filename in ignored_lines:
- ignored_prefixes = ignored_lines[norm_filename]
- return diff_with_ignored_lines(filename, ignored_prefixes)
+ if norm_filename in skipped_lines:
+ skipped_prefixes = skipped_lines[norm_filename]
+ return diff_with_skipped_lines(filename, skipped_prefixes)
return False
-
- return whitelist_filter
-
-
-def main(all_targets, search_paths, whitelists, ignore_signing_key=False):
+ return allowlist_filter
+def main(all_targets,
+ search_paths,
+ allowlists,
+ ignore_signing_key=False,
+ list_only=False):
def run(path):
- is_native_component = silent_call(["llvm-objdump", "-a", path])
- is_apk = path.endswith('.apk')
- if is_native_component:
+ is_executable_component = silent_call(["llvm-objdump", "-a", path])
+ is_apk = path.endswith(".apk")
+ if is_executable_component:
return strip_and_sha1sum(path)
elif is_apk and ignore_signing_key:
return sha1sum_without_signing_key(path)
else:
return sha1sum(path)
-
# artifact_sha1_target_map[filename][sha1] = list of targets
- artifact_sha1_target_map = defaultdict(lambda: defaultdict(list))
+ artifact_sha1_target_map = collections.defaultdict(
+ lambda: collections.defaultdict(list))
for target in all_targets:
paths = []
for search_path in search_paths:
- for path in Path(target, search_path).glob('**/*'):
+ for path in pathlib.Path(target, search_path).glob("**/*"):
if path.exists() and not path.is_dir():
paths.append((str(path), str(path.relative_to(target))))
-
target_basename = os.path.basename(os.path.normpath(target))
for path, filename in paths:
- sha1 = run(path)
+ sha1 = 0
+ if not list_only:
+ sha1 = run(path)
artifact_sha1_target_map[filename][sha1].append(target_basename)
-
- def pretty_print(sha1, filename, targets):
- return '{}, {}, {}\n'.format(filename, sha1[:10], ';'.join(targets))
-
+ def pretty_print(sha1, filename, targets, exclude_sha1):
+ if exclude_sha1:
+ return "{}, {}\n".format(filename, ";".join(targets))
+ return "{}, {}, {}\n".format(filename, sha1[:10], ";".join(targets))
def is_common(sha1_target_map):
- for sha1, targets in sha1_target_map.items():
+ for _, targets in sha1_target_map.items():
return len(sha1_target_map) == 1 and len(targets) == len(all_targets)
return False
-
- whitelist_filter = make_filter_from_whitelists(whitelists, all_targets)
-
+ allowlist_filter = make_filter_from_allowlists(allowlists, all_targets)
common = []
diff = []
- whitelisted_diff = []
+ allowlisted_diff = []
for filename, sha1_target_map in artifact_sha1_target_map.items():
if is_common(sha1_target_map):
for sha1, targets in sha1_target_map.items():
- common.append(pretty_print(sha1, filename, targets))
+ common.append(pretty_print(sha1, filename, targets, list_only))
else:
- if whitelist_filter(filename):
+ if allowlist_filter(filename):
for sha1, targets in sha1_target_map.items():
- whitelisted_diff.append(pretty_print(sha1, filename, targets))
+ allowlisted_diff.append(
+ pretty_print(sha1, filename, targets, list_only))
else:
for sha1, targets in sha1_target_map.items():
- diff.append(pretty_print(sha1, filename, targets))
-
+ diff.append(pretty_print(sha1, filename, targets, list_only))
common = sorted(common)
diff = sorted(diff)
- whitelisted_diff = sorted(whitelisted_diff)
-
+ allowlisted_diff = sorted(allowlisted_diff)
header = "filename, sha1sum, targets\n"
-
- with open("common.csv", 'w') as fout:
+ if list_only:
+ header = "filename, targets\n"
+ with open("common.csv", "w") as fout:
fout.write(header)
fout.writelines(common)
- with open("diff.csv", 'w') as fout:
+ with open("diff.csv", "w") as fout:
fout.write(header)
fout.writelines(diff)
- with open("whitelisted_diff.csv", 'w') as fout:
+ with open("allowlisted_diff.csv", "w") as fout:
fout.write(header)
- fout.writelines(whitelisted_diff)
-
-def main_with_zip(extracted_paths, args):
- for origin_path, tmp_path in zip(args.target, extracted_paths):
+ fout.writelines(allowlisted_diff)
+def main_with_zip(extracted_paths, main_args):
+ for origin_path, tmp_path in zip(main_args.target, extracted_paths):
unzip_cmd = ["unzip", "-qd", tmp_path, os.path.join(origin_path, "*.zip")]
- unzip_cmd.extend([os.path.join(s, "*") for s in args.search_path])
+ unzip_cmd.extend([os.path.join(s, "*") for s in main_args.search_path])
subprocess.call(unzip_cmd)
- main(extracted_paths, args.search_path, args.whitelist, args.ignore_signing_key)
-
+ main(
+ extracted_paths,
+ main_args.search_path,
+ main_args.allowlist,
+ main_args.ignore_signing_key,
+ list_only=main_args.list_only)
if __name__ == "__main__":
- parser = argparse.ArgumentParser(prog="compare_images", usage="compare_images -t model1 model2 [model...] -s dir1 [dir...] [-i] [-u] [-p] [-w whitelist1] [-w whitelist2]")
- parser.add_argument("-t", "--target", nargs='+', required=True)
- parser.add_argument("-s", "--search_path", nargs='+', required=True)
- parser.add_argument("-i", "--ignore_signing_key", action='store_true')
- parser.add_argument("-u", "--unzip", action='store_true')
- parser.add_argument("-p", "--preserve_extracted_files", action='store_true')
- parser.add_argument("-w", "--whitelist", action="append", default=[])
+ parser = argparse.ArgumentParser(
+ prog="compare_images",
+ usage="compare_images -t model1 model2 [model...] -s dir1 [dir...] [-i] [-u] [-p] [-w allowlist1] [-w allowlist2]"
+ )
+ parser.add_argument("-t", "--target", nargs="+", required=True)
+ parser.add_argument("-s", "--search_path", nargs="+", required=True)
+ parser.add_argument("-i", "--ignore_signing_key", action="store_true")
+ parser.add_argument(
+ "-l",
+ "--list_only",
+ action="store_true",
+ help="Compare file list only and ignore SHA-1 diff")
+ parser.add_argument("-u", "--unzip", action="store_true")
+ parser.add_argument("-p", "--preserve_extracted_files", action="store_true")
+ parser.add_argument("-w", "--allowlist", action="append", default=[])
args = parser.parse_args()
if len(args.target) < 2:
parser.error("The number of targets has to be at least two.")
@@ -235,4 +232,9 @@ if __name__ == "__main__":
os.makedirs(p)
main_with_zip(target_in_tmp, args)
else:
- main(args.target, args.search_path, args.whitelist, args.ignore_signing_key)
+ main(
+ args.target,
+ args.search_path,
+ args.allowlist,
+ args.ignore_signing_key,
+ list_only=args.list_only)
diff --git a/vndk/tools/sourcedr/blueprint/blueprint.py b/vndk/tools/sourcedr/blueprint/blueprint.py
index e418270c2..93bf61ced 100755
--- a/vndk/tools/sourcedr/blueprint/blueprint.py
+++ b/vndk/tools/sourcedr/blueprint/blueprint.py
@@ -861,6 +861,10 @@ class RecursiveParser(object):
envs.pop()
# Filter sub directories
+ if '.out-dir' in filenames:
+ # Stop at OUT_DIR
+ dirnames[:] = []
+ continue
new_dirnames = []
for name in dirnames:
if name in {'.git', '.repo'}: