Full Code of facebook/stetho for AI

main 2198797c0ff9 cached
321 files
1.1 MB
274.0k tokens
2352 symbols
1 requests
Download .txt
Showing preview only (1,281K chars total). Download the full file or copy to clipboard to get everything.
Repository: facebook/stetho
Branch: main
Commit: 2198797c0ff9
Files: 321
Total size: 1.1 MB

Directory structure:
gitextract_88n_xe_i/

├── .gitignore
├── .travis.yml
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── build-tools/
│   ├── protocol.json
│   ├── readme.md
│   └── scraper.js
├── build.gradle
├── gradle/
│   └── wrapper/
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── release.gradle
├── scripts/
│   ├── .gitignore
│   ├── dumpapp
│   ├── hprof_dump.sh
│   └── stetho_open.py
├── settings.gradle
├── stetho/
│   ├── .gitignore
│   ├── build.gradle
│   ├── gradle.properties
│   ├── proguard-consumer.pro
│   └── src/
│       ├── main/
│       │   ├── AndroidManifest.xml
│       │   └── java/
│       │       └── com/
│       │           └── facebook/
│       │               └── stetho/
│       │                   ├── DumperPluginsProvider.java
│       │                   ├── InspectorModulesProvider.java
│       │                   ├── Stetho.java
│       │                   ├── common/
│       │                   │   ├── Accumulator.java
│       │                   │   ├── ArrayListAccumulator.java
│       │                   │   ├── ExceptionUtil.java
│       │                   │   ├── ListUtil.java
│       │                   │   ├── LogRedirector.java
│       │                   │   ├── LogUtil.java
│       │                   │   ├── Predicate.java
│       │                   │   ├── ProcessUtil.java
│       │                   │   ├── ReflectionUtil.java
│       │                   │   ├── StringUtil.java
│       │                   │   ├── ThreadBound.java
│       │                   │   ├── UncheckedCallable.java
│       │                   │   ├── Utf8Charset.java
│       │                   │   ├── Util.java
│       │                   │   └── android/
│       │                   │       ├── AccessibilityUtil.java
│       │                   │       ├── DialogFragmentAccessor.java
│       │                   │       ├── FragmentAccessor.java
│       │                   │       ├── FragmentActivityAccessor.java
│       │                   │       ├── FragmentCompat.java
│       │                   │       ├── FragmentCompatFramework.java
│       │                   │       ├── FragmentCompatSupportLib.java
│       │                   │       ├── FragmentCompatUtil.java
│       │                   │       ├── FragmentManagerAccessor.java
│       │                   │       ├── HandlerUtil.java
│       │                   │       ├── ResourcesUtil.java
│       │                   │       ├── ViewGroupUtil.java
│       │                   │       └── ViewUtil.java
│       │                   ├── dumpapp/
│       │                   │   ├── ArgsHelper.java
│       │                   │   ├── DumpException.java
│       │                   │   ├── DumpUsageException.java
│       │                   │   ├── DumpappFramingException.java
│       │                   │   ├── DumpappHttpSocketLikeHandler.java
│       │                   │   ├── DumpappOutputBrokenException.java
│       │                   │   ├── DumpappSocketLikeHandler.java
│       │                   │   ├── Dumper.java
│       │                   │   ├── DumperContext.java
│       │                   │   ├── DumperPlugin.java
│       │                   │   ├── Framer.java
│       │                   │   ├── GlobalOptions.java
│       │                   │   ├── UnexpectedFrameException.java
│       │                   │   └── plugins/
│       │                   │       ├── CrashDumperPlugin.java
│       │                   │       ├── FilesDumperPlugin.java
│       │                   │       ├── HprofDumperPlugin.java
│       │                   │       └── SharedPreferencesDumperPlugin.java
│       │                   ├── inspector/
│       │                   │   ├── ChromeDevtoolsServer.java
│       │                   │   ├── ChromeDiscoveryHandler.java
│       │                   │   ├── DevtoolsSocketHandler.java
│       │                   │   ├── MessageHandlingException.java
│       │                   │   ├── MethodDispatcher.java
│       │                   │   ├── MismatchedResponseException.java
│       │                   │   ├── console/
│       │                   │   │   ├── CLog.java
│       │                   │   │   ├── ConsolePeerManager.java
│       │                   │   │   ├── RuntimeRepl.java
│       │                   │   │   └── RuntimeReplFactory.java
│       │                   │   ├── database/
│       │                   │   │   ├── ContentProviderDatabaseDriver.java
│       │                   │   │   ├── ContentProviderSchema.java
│       │                   │   │   ├── DatabaseConnectionProvider.java
│       │                   │   │   ├── DatabaseDriver2Adapter.java
│       │                   │   │   ├── DatabaseFilesProvider.java
│       │                   │   │   ├── DefaultDatabaseConnectionProvider.java
│       │                   │   │   ├── DefaultDatabaseFilesProvider.java
│       │                   │   │   ├── SQLiteDatabaseCompat.java
│       │                   │   │   └── SqliteDatabaseDriver.java
│       │                   │   ├── domstorage/
│       │                   │   │   ├── DOMStoragePeerManager.java
│       │                   │   │   └── SharedPreferencesHelper.java
│       │                   │   ├── elements/
│       │                   │   │   ├── AbstractChainedDescriptor.java
│       │                   │   │   ├── AttributeAccumulator.java
│       │                   │   │   ├── ChainedDescriptor.java
│       │                   │   │   ├── ComputedStyleAccumulator.java
│       │                   │   │   ├── Descriptor.java
│       │                   │   │   ├── DescriptorMap.java
│       │                   │   │   ├── DescriptorProvider.java
│       │                   │   │   ├── DescriptorRegistrar.java
│       │                   │   │   ├── Document.java
│       │                   │   │   ├── DocumentProvider.java
│       │                   │   │   ├── DocumentProviderFactory.java
│       │                   │   │   ├── DocumentProviderListener.java
│       │                   │   │   ├── DocumentView.java
│       │                   │   │   ├── ElementInfo.java
│       │                   │   │   ├── NodeDescriptor.java
│       │                   │   │   ├── NodeType.java
│       │                   │   │   ├── ObjectDescriptor.java
│       │                   │   │   ├── Origin.java
│       │                   │   │   ├── ShadowDocument.java
│       │                   │   │   ├── StyleAccumulator.java
│       │                   │   │   ├── StyleRuleNameAccumulator.java
│       │                   │   │   └── android/
│       │                   │   │       ├── AccessibilityNodeInfoWrapper.java
│       │                   │   │       ├── ActivityDescriptor.java
│       │                   │   │       ├── ActivityTracker.java
│       │                   │   │       ├── AndroidDescriptorHost.java
│       │                   │   │       ├── AndroidDocumentConstants.java
│       │                   │   │       ├── AndroidDocumentProvider.java
│       │                   │   │       ├── AndroidDocumentProviderFactory.java
│       │                   │   │       ├── AndroidDocumentRoot.java
│       │                   │   │       ├── ApplicationDescriptor.java
│       │                   │   │       ├── DialogDescriptor.java
│       │                   │   │       ├── DialogFragmentDescriptor.java
│       │                   │   │       ├── DocumentHiddenView.java
│       │                   │   │       ├── FragmentDescriptor.java
│       │                   │   │       ├── HighlightableDescriptor.java
│       │                   │   │       ├── MethodInvoker.java
│       │                   │   │       ├── TextViewDescriptor.java
│       │                   │   │       ├── ViewDescriptor.java
│       │                   │   │       ├── ViewGroupDescriptor.java
│       │                   │   │       ├── ViewHighlightOverlays.java
│       │                   │   │       ├── ViewHighlighter.java
│       │                   │   │       ├── WindowDescriptor.java
│       │                   │   │       └── window/
│       │                   │   │           ├── WindowRootViewCompactV16Impl.java
│       │                   │   │           ├── WindowRootViewCompactV18Impl.java
│       │                   │   │           ├── WindowRootViewCompactV19Impl.java
│       │                   │   │           └── WindowRootViewCompat.java
│       │                   │   ├── helper/
│       │                   │   │   ├── ChromePeerManager.java
│       │                   │   │   ├── IntegerFormatter.java
│       │                   │   │   ├── ObjectIdMapper.java
│       │                   │   │   ├── PeerRegistrationListener.java
│       │                   │   │   ├── PeersRegisteredListener.java
│       │                   │   │   └── ThreadBoundProxy.java
│       │                   │   ├── jsonrpc/
│       │                   │   │   ├── DisconnectReceiver.java
│       │                   │   │   ├── JsonRpcException.java
│       │                   │   │   ├── JsonRpcPeer.java
│       │                   │   │   ├── JsonRpcResult.java
│       │                   │   │   ├── PendingRequest.java
│       │                   │   │   ├── PendingRequestCallback.java
│       │                   │   │   └── protocol/
│       │                   │   │       ├── EmptyResult.java
│       │                   │   │       ├── JsonRpcError.java
│       │                   │   │       ├── JsonRpcEvent.java
│       │                   │   │       ├── JsonRpcRequest.java
│       │                   │   │       └── JsonRpcResponse.java
│       │                   │   ├── network/
│       │                   │   │   ├── AsyncPrettyPrinter.java
│       │                   │   │   ├── AsyncPrettyPrinterExecutorHolder.java
│       │                   │   │   ├── AsyncPrettyPrinterFactory.java
│       │                   │   │   ├── AsyncPrettyPrinterInitializer.java
│       │                   │   │   ├── AsyncPrettyPrinterRegistry.java
│       │                   │   │   ├── CountingOutputStream.java
│       │                   │   │   ├── DecompressionHelper.java
│       │                   │   │   ├── DefaultResponseHandler.java
│       │                   │   │   ├── DownloadingAsyncPrettyPrinterFactory.java
│       │                   │   │   ├── GunzippingOutputStream.java
│       │                   │   │   ├── MimeMatcher.java
│       │                   │   │   ├── NetworkEventReporter.java
│       │                   │   │   ├── NetworkEventReporterImpl.java
│       │                   │   │   ├── NetworkPeerManager.java
│       │                   │   │   ├── PrettyPrinterDisplayType.java
│       │                   │   │   ├── RequestBodyHelper.java
│       │                   │   │   ├── ResourceTypeHelper.java
│       │                   │   │   ├── ResponseBodyData.java
│       │                   │   │   ├── ResponseBodyFileManager.java
│       │                   │   │   ├── ResponseHandler.java
│       │                   │   │   ├── ResponseHandlingInputStream.java
│       │                   │   │   ├── SimpleBinaryInspectorWebSocketFrame.java
│       │                   │   │   └── SimpleTextInspectorWebSocketFrame.java
│       │                   │   ├── protocol/
│       │                   │   │   ├── ChromeDevtoolsDomain.java
│       │                   │   │   ├── ChromeDevtoolsMethod.java
│       │                   │   │   └── module/
│       │                   │   │       ├── BaseDatabaseDriver.java
│       │                   │   │       ├── CSS.java
│       │                   │   │       ├── Console.java
│       │                   │   │       ├── DOM.java
│       │                   │   │       ├── DOMStorage.java
│       │                   │   │       ├── Database.java
│       │                   │   │       ├── DatabaseConstants.java
│       │                   │   │       ├── DatabaseDescriptor.java
│       │                   │   │       ├── DatabaseDriver2.java
│       │                   │   │       ├── Debugger.java
│       │                   │   │       ├── HeapProfiler.java
│       │                   │   │       ├── Inspector.java
│       │                   │   │       ├── Network.java
│       │                   │   │       ├── Page.java
│       │                   │   │       ├── Profiler.java
│       │                   │   │       ├── Runtime.java
│       │                   │   │       ├── SimpleBooleanResult.java
│       │                   │   │       └── Worker.java
│       │                   │   ├── runtime/
│       │                   │   │   └── RhinoDetectingRuntimeReplFactory.java
│       │                   │   └── screencast/
│       │                   │       └── ScreencastDispatcher.java
│       │                   ├── json/
│       │                   │   ├── ObjectMapper.java
│       │                   │   └── annotation/
│       │                   │       ├── JsonProperty.java
│       │                   │       └── JsonValue.java
│       │                   ├── server/
│       │                   │   ├── AddressNameHelper.java
│       │                   │   ├── CompositeInputStream.java
│       │                   │   ├── LazySocketHandler.java
│       │                   │   ├── LeakyBufferedInputStream.java
│       │                   │   ├── LocalSocketServer.java
│       │                   │   ├── PeerAuthorizationException.java
│       │                   │   ├── ProtocolDetectingSocketHandler.java
│       │                   │   ├── SecureSocketHandler.java
│       │                   │   ├── ServerManager.java
│       │                   │   ├── SocketHandler.java
│       │                   │   ├── SocketHandlerFactory.java
│       │                   │   ├── SocketLike.java
│       │                   │   ├── SocketLikeHandler.java
│       │                   │   └── http/
│       │                   │       ├── ExactPathMatcher.java
│       │                   │       ├── HandlerRegistry.java
│       │                   │       ├── HttpHandler.java
│       │                   │       ├── HttpHeaders.java
│       │                   │       ├── HttpStatus.java
│       │                   │       ├── LightHttpBody.java
│       │                   │       ├── LightHttpMessage.java
│       │                   │       ├── LightHttpRequest.java
│       │                   │       ├── LightHttpResponse.java
│       │                   │       ├── LightHttpServer.java
│       │                   │       ├── PathMatcher.java
│       │                   │       └── RegexpPathMatcher.java
│       │                   └── websocket/
│       │                       ├── CloseCodes.java
│       │                       ├── Frame.java
│       │                       ├── FrameHelper.java
│       │                       ├── MaskingHelper.java
│       │                       ├── ReadCallback.java
│       │                       ├── ReadHandler.java
│       │                       ├── SimpleEndpoint.java
│       │                       ├── SimpleSession.java
│       │                       ├── WebSocketHandler.java
│       │                       ├── WebSocketSession.java
│       │                       ├── WriteCallback.java
│       │                       └── WriteHandler.java
│       └── test/
│           └── java/
│               └── com/
│                   └── facebook/
│                       └── stetho/
│                           ├── PluginBuilderTest.java
│                           ├── inspector/
│                           │   ├── database/
│                           │   │   └── DatabasePeerManagerTest.java
│                           │   ├── elements/
│                           │   │   └── android/
│                           │   │       ├── MethodInvokerTest.java
│                           │   │       └── ViewDescriptorTest.java
│                           │   └── network/
│                           │       ├── AsyncPrettyPrintResponseBodyTest.java
│                           │       ├── GunzippingOutputStreamTest.java
│                           │       └── ResponseHandlingInputStreamTest.java
│                           └── json/
│                               └── ObjectMapperTest.java
├── stetho-js-rhino/
│   ├── .gitignore
│   ├── README.md
│   ├── build.gradle
│   ├── gradle.properties
│   ├── proguard-consumer.pro
│   └── src/
│       ├── main/
│       │   ├── AndroidManifest.xml
│       │   └── java/
│       │       └── com/
│       │           └── facebook/
│       │               └── stetho/
│       │                   └── rhino/
│       │                       ├── JsConsole.java
│       │                       ├── JsFormat.java
│       │                       ├── JsRuntimeRepl.java
│       │                       └── JsRuntimeReplFactoryBuilder.java
│       └── test/
│           └── java/
│               └── com/
│                   └── facebook/
│                       └── stetho/
│                           └── rhino/
│                               └── JsFormatTest.java
├── stetho-okhttp/
│   ├── .gitignore
│   ├── build.gradle
│   ├── gradle.properties
│   └── src/
│       ├── main/
│       │   ├── AndroidManifest.xml
│       │   └── java/
│       │       └── com/
│       │           └── facebook/
│       │               └── stetho/
│       │                   └── okhttp/
│       │                       └── StethoInterceptor.java
│       └── test/
│           └── java/
│               └── com/
│                   └── facebook/
│                       └── stetho/
│                           └── okhttp/
│                               └── StethoInterceptorTest.java
├── stetho-okhttp3/
│   ├── .gitignore
│   ├── build.gradle
│   ├── gradle.properties
│   └── src/
│       ├── main/
│       │   ├── AndroidManifest.xml
│       │   └── java/
│       │       └── com/
│       │           └── facebook/
│       │               └── stetho/
│       │                   └── okhttp3/
│       │                       └── StethoInterceptor.java
│       └── test/
│           └── java/
│               └── com/
│                   └── facebook/
│                       └── stetho/
│                           └── okhttp3/
│                               └── StethoInterceptorTest.java
├── stetho-sample/
│   ├── .gitignore
│   ├── build.gradle
│   └── src/
│       ├── debug/
│       │   ├── AndroidManifest.xml
│       │   └── java/
│       │       └── com/
│       │           └── facebook/
│       │               └── stetho/
│       │                   └── sample/
│       │                       ├── APODDumperPlugin.java
│       │                       ├── HelloWorldDumperPlugin.java
│       │                       └── SampleDebugApplication.java
│       └── main/
│           ├── AndroidManifest.xml
│           ├── java/
│           │   └── com/
│           │       └── facebook/
│           │           └── stetho/
│           │               └── sample/
│           │                   ├── APODActivity.java
│           │                   ├── APODContentProvider.java
│           │                   ├── APODContract.java
│           │                   ├── APODRssFetcher.java
│           │                   ├── Constants.java
│           │                   ├── HtmlScraper.java
│           │                   ├── IRCChatActivity.java
│           │                   ├── IRCClientConnection.java
│           │                   ├── IRCConnectActivity.java
│           │                   ├── MainActivity.java
│           │                   ├── Networker.java
│           │                   ├── SampleApplication.java
│           │                   └── SettingsActivity.java
│           └── res/
│               ├── layout/
│               │   ├── apod_list_item.xml
│               │   ├── dialog_layout.xml
│               │   ├── irc_chat_activity.xml
│               │   ├── irc_connect_activity.xml
│               │   ├── irc_console_row.xml
│               │   └── main_activity.xml
│               ├── values/
│               │   ├── arrays.xml
│               │   ├── dimens.xml
│               │   └── strings.xml
│               └── xml/
│                   └── settings.xml
├── stetho-timber/
│   ├── .gitignore
│   ├── build.gradle
│   ├── gradle.properties
│   └── src/
│       └── main/
│           ├── AndroidManifest.xml
│           └── java/
│               └── com/
│                   └── facebook/
│                       └── stetho/
│                           └── timber/
│                               └── StethoTree.java
└── stetho-urlconnection/
    ├── .gitignore
    ├── build.gradle
    ├── gradle.properties
    └── src/
        └── main/
            ├── AndroidManifest.xml
            └── java/
                └── com/
                    └── facebook/
                        └── stetho/
                            └── urlconnection/
                                ├── ByteArrayRequestEntity.java
                                ├── SimpleRequestEntity.java
                                ├── StethoURLConnectionManager.java
                                ├── StethoURLConnectionManagerImpl.java
                                ├── URLConnectionInspectorHeaders.java
                                ├── URLConnectionInspectorRequest.java
                                ├── URLConnectionInspectorResponse.java
                                └── Util.java

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
.gradle
/local.properties
/.idea
*.iml
.DS_Store
/build


================================================
FILE: .travis.yml
================================================
language: android

jdk:
  - oraclejdk8

before_install:
  - yes | sdkmanager "platforms;android-27"

android:
  components:
    - tools
    - android-28
    - platform-tools

branches:
  except:
    - gh-pages

# Disable Travis container-based infrastructure to correct
# resource consumption in gradle presumably due to dexing.
sudo: true


================================================
FILE: CHANGELOG.md
================================================
Change Log
==========

## Version 1.6.0
_2021-03-17_

 * Fix #662/665: AndroidX upgrade.

## Version 1.5.1
_2019-03-17_

 * **Fix view inspection crash on Android P+**
   View highlighting was using a legacy pre-O API which was removed in P that caused
   a crash when highlighting a view in the Elements tab.  This has now been fixed (#607)
   and the Elements tab is expected to work normally again.

 * Fix #325/295: Add ability to track windows in Elements tab (dialog, popups, etc)
 * Fix #614: Add the ability to manually control Runtime class object tracking (for 
   J2V8 integration)
 * Fix #612/613: Fix issue subclassing Runtime class and other devtools domain modules
 * Fix #602: Make it possible to change welcome banner (see Page class constructor)
 * Fix #600: Actually make .remove() method work properly in DefaultDumperPluginsBuilder
 * Fix #596: Sort SharedPreferences entries
 * Fix #623: dumpapp now supports ADB_SERVER_SOCKET variable
 * Fix #589: Fix parsing issue using dumpapp script causing failure to connect
 * Fix #529: WebSocket session info now displayed correctly on upgrade
 * Fix #541/580: Avoid crash when installing the Stetho interceptor in the 
   wrong okhttp chain (the request chain lacks a connection instance)

## Version 1.5.0
_2017_04_13_

 * **Generic socket support**
   Added the ability to inspect arbitrary sockets via Chrome devtools'
   WebSocket APIs.  This support is integrated into stetho-sample
   as a demo, and in future releases we'd like to make it available
   generically for at least okhttp customers.

 * **Major Elements tab extensibility points**
   Significant expansion to AndroidDocumentProviderFactory which allows 
   for a much greater degree of customization, including the
   ability to have editable styles.  Over time we'd like to incorporate
   this support into native Android UI but also to make it even
   easier to unlock powerful new customizations for custom view or
   entire rendering systems.

 * Fix #392: Fix database id mapping for multiple database providers
 * Fix #521: Fix hit testing for empty view groups
 * Fix #513: Fix LeakCanary false positive
 * Fix #514: Handle runtime exceptions from database drivers
 * Fix #511: Remove accidental hard dependency on support library
 * Fix #406: Fix stetho-rhino importClass/Package not working properly
 * Fix #499: Treat HttpURLConnection headers as case insensitive
 * Fix #512: Fix severe stdin issue in dumpapp script
 * Fix #486: Fix TextViewDescriptor NPE when text is null

## Version 1.4.2
_2016_12_14_

 * **Bug fixes**
  Fixes a few bugs in the Elements tab.

 * Fix #381: Fixes NPE while rotating the device with retained fragments.
 * Fix #447: Support Instant Run in android studio, by fixing ObjectMapper
 * Fix #456: Support ANDROID_ADB_SERVER_PORT
 * Fix #454: Upgrade to OkHttp 3.4.2
 * Fix #449: Make sure only unfocusable children's descriptions are being
   co-opted by parents


## Version 1.4.1
_2016_09_13_

  * Fix #432 Have DefaultDatabaseProvider return filename

    v1.4.0 exposed a long standing bug relating to loading databases.


## Version 1.4.0
_2016_09_07_

 * **Add UI Accessibility Properties to Styles tab**
   Added support for accessibility inspection, which allows users to select
   a View and see whether or not it will be focusable by an Accessibility
   Service, why it will or won't be focusable, the text description sent to
   Accessibility Services, and any AccessibilityActions that are currently
   available on the View.

 * Fix #367: Fixed SqliteDatabaseDriver with custom DatabaseFilesProvider
 * Fix #424: Make aar be the default packaging in maven

## Version 1.3.1

_2016-02-25_

 * **Major performance improvements in Elements tab**
   Several performance, correctness, and stability improvements related to
   how Stetho performs tree diffing.

 * Fix #349: Fix dumpapp scripts under various edge cases.
 * Fix #357: Remove static fields from exported view "styles".

## Version 1.3.0

_2016-01-20_

 * **okhttp3 support!**
   A new module, stetho-okhttp3, has been added which supports the new
   okhttp3 APIs.  Note that stetho-okhttp is now deprecated.

 * **Removed Apache HttpClient dependency**
   A new, lightweight HTTP server implementation replaces it in Stetho
   and the dumpapp protocol has been modified to no longer use HTTP.
   Old dumpapp scripts will still work with new clients, however the
   opposite will hang!

 * **Custom database drivers**
   Completely custom or ContentProvider-based database drivers are available
   which allow greater inspection options with some configuration.  See
   `DefaultInspectorModulesBuilder#provideDatabaseDriver`.

 * New #282: Show view margins in "Styles" subtab.
 * New #289: Show SQLite views as tables.
 * New #294: dumpapp now responds to `STETHO_PROCESS` env variable in addition
   to the `--process` flag.
 * Fix #286: Minor JsConsole improvements.
 * Fix #297: Sort CSS properties by name.
 * Fix #292: Minor JSON serialization fixes.
 * Fix #299: Memory leak fixes in view inspection (still some likely remain).
 * Fix #305: Add proguard rules to stetho-js-rhino aar artifact.
 * Fix #313: Work around issues formatting `Long.MIN_VALUE` and possibly others
   when showing in the database view.
 * Fix #332: NPE in ShadowDocument.getGarbageElements().

## Version 1.2.0

_2015-09-11_

 * **View properties support!**
   The "Styles" and "Computed" sub-tabs in "Elements" are now implemented,
   complete with the box model diagram and a summary of the most useful view
   properties.

 * **Screencasting**
   Click the small screen icon in the upper right to view a live preview of
   your phone's screen while using Stetho!  Coming soon: mouse/keyboard
   support.

 * **Console tab support**
   Arbitrary Java/JavaScript support added to the Console with the optional
   `stetho-js-rhino` dependency.  See
   [`stetho-sample/build.gradle`](stetho-sample/build.gradle) for details.

 * **New simpler initialization and customization API**
   Most callers can now just use `Stetho.initializeWithDefaults(context)`.

 * New #218: Ability to pass pretty printers for binary data in the Network tab.
 * New #248: Implement transparent request decompression.
 * New #225: Ability to search View hierarchy (invoke with CTRL+F on the Elements tab).
 * New #238: Add EXPLAIN support in SQL console.
 * New #222: Add PRAGMA support in SQL console. 
 * New #207: Add `dumpapp files` plugin.
 * New #181: Highlight view margins and padding when hovering over DOM entry.
 * New #211: Implement DialogFragment in Elements tab.
 * Fix #231: Sort database and shared preferences entries by name.
 * Fix #206: Fix small memory leak in View hierarchy support.
 * Fix #204: Use DOM tree diffing to fix ListView and a number of other edge
   case view hierarchies.
 * Fix #183: Fix Fragment support in Elements tab.

## Version 1.1.1

_2015-05-01_

 * **Updated patent grant!**
   See https://code.facebook.com/posts/1639473982937255/updating-our-open-source-patent-grant/

 * New: `stetho-timber` added to redirect log messages to the Stetho console.
 * Fix #140: More efficient and simpler Fragment accessor code.
 * Fix #123: All view inspection features are now available for ICS (API 15)
   and up (some features required JB MR2, API 18).
 * Fix #154: Fix subtle race when a database is removed after the DevTools
   UI is opened.
 * Fix #151: Crash when rapidly adding/removing SharedPreferences keys.
 * Fix #142: View inspection "hit testing" didn't work as intended with its
   two-pass design.
 * Fix: Ignore extraneous files when WAL is enabled for SQLite databases.

## Version 1.1.0

_2015-04-02_

 * **View inspection!**
   For ICS (API 15) and up, we now have full View inspection support in the
   "Elements" tab!  Lots of goodies such as `<fragment>` instances virtually
   placed in the hierarchy, view highlighting, and the ability to tap on a view
   to jump to its position in the hierarchy.  Some features are only available
   for JB MR2 (API 18).

 * New #109: Add `dumpapp hprof` plugin to conveniently extract HPROF memory
   dumps.
 * New #110: Add `dumpapp crash` plugin to mechanize process death in a variety
   of ways.
 * New #105: Simplify excluding Stetho from release builds (exercised in
   `stetho-sample`).
 * New #40: Support SQLite databases in arbitrary directories.
 * Fix #115: Support multiple headers with the same name (most notably, HTTP
   cookies).
 * Fix #108: Workaround throughput issue in Android's LocalSocket#flush()
   method.
 * Fix #88: Avoid OOM on huge request/response HTTP payloads.
 * Fix #82: Provide visual feedback for INSERT/UPDATE/DELETE statements.
 * Fix: Javadoc JAR should now be uploaded properly to Maven.

## Version 1.0.1

_2015-02-27_

 * **`SharedPreferences` inspection.**
   It's now possible to inspect SharedPreference files from the "Resources"
   tab.

 * New #65: Show non-default process name to chrome://inspect UI.
 * Fix #57: HTTP responses without the Content-Type header do not appear in the
   DevTools UI.
 * Fix #49: Unconditional "Could not bind to socket" error.
 * Fix #37: Duplicate dumpapp endpoints for the same process.
 * Fix: Use raw process name for Stetho sockets to fix an issue formatting
   choices in `dumpapp`

## Version 1.0.0

_2015-02-18_

 * Initial release.


================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Code of Conduct

Facebook has adopted a Code of Conduct that we expect project participants to adhere to.
Please read the [full text](https://code.fb.com/codeofconduct/)
so that you can understand what actions will and will not be tolerated.


================================================
FILE: CONTRIBUTING.md
================================================
# Contributing to Stetho
We want to make contributing to this project as easy and transparent as
possible.

## Our Development Process
We work directly in the github project and provide versioned releases
appropriate for major milestones and minor bug fixes or improvements.  GitHub
is used directly for issues and pull requests and the developers actively
respond to requests.

## Pull Requests
We actively welcome your pull requests.  

1. Fork the repo and create your branch from `master`.  
2. If you've added code that should be tested, add tests  
3. If you've changed APIs, update the documentation.  
4. Ensure the test suite passes.  
5. Make sure your code lints.  
6. If you haven't already, complete the Contributor License Agreement ("CLA").

## Contributor License Agreement ("CLA")
In order to accept your pull request, we need you to submit a CLA. You only need
to do this once to work on any of Facebook's open source projects.

Complete your CLA here: <https://code.facebook.com/cla>

## Issues  
We use GitHub issues to track public bugs. Please ensure your description is
clear and has sufficient instructions to be able to reproduce the issue.

Facebook has a [bounty program](https://www.facebook.com/whitehat/) for the safe
disclosure of security bugs. In those cases, please go through the process
outlined on that page and do not file a public issue.

## Coding Style  
* 2 spaces for indentation rather than tabs
* Line wrapping indents 4 spaces
* 100 character line length
* One parameter per line when line wrapping is required
* Use the `m` member variable prefix for private fields
* Opening braces to appear on the same line as code

## License
By contributing to Stetho, you agree that your contributions will be licensed
under its MIT license.  See LICENSE file for details.


================================================
FILE: LICENSE
================================================
MIT License

Copyright (c) Facebook, Inc. and its affiliates.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: README.md
================================================
# Stetho [![Build Status](https://travis-ci.org/facebook/stetho.svg?branch=master)](https://travis-ci.org/facebook/stetho)

[Stetho](https://facebook.github.io/stetho) is a sophisticated debug bridge for Android applications. When enabled,
developers have access to the Chrome Developer Tools feature natively part of
the Chrome desktop browser. Developers can also choose to enable the optional
`dumpapp` tool which offers a powerful command-line interface to application
internals.

Once you complete the set-up instructions below, just start your app and point
your laptop browser to `chrome://inspect`.  Click the "Inspect" button to
begin.

## Set-up

### Download
Download [the latest JARs](https://github.com/facebook/stetho/releases/latest) or grab via Gradle:
```groovy
implementation 'com.facebook.stetho:stetho:1.6.0'
```
or Maven:
```xml
<dependency>
  <groupId>com.facebook.stetho</groupId>
  <artifactId>stetho</artifactId>
  <version>1.6.0</version>
</dependency>
```

Only the main `stetho` dependency is strictly required; however, you may also wish to use one of the network helpers:

```groovy
implementation 'com.facebook.stetho:stetho-okhttp3:1.6.0'
```
or:
```groovy
implementation 'com.facebook.stetho:stetho-urlconnection:1.6.0'
```

You can also enable a JavaScript console with:

```groovy
implementation 'com.facebook.stetho:stetho-js-rhino:1.6.0'
```
For more details on how to customize the JavaScript runtime see [stetho-js-rhino](stetho-js-rhino/).

### Putting it together
Integrating with Stetho is intended to be seamless and straightforward for
most existing Android applications.  There is a simple initialization step
which occurs in your `Application` class:

```java
public class MyApplication extends Application {
  public void onCreate() {
    super.onCreate();
    Stetho.initializeWithDefaults(this);
  }
}
```
Also ensure that your `MyApplication` Java class is registered in your `AndroidManifest.xml` file, otherwise you will not see an "Inspect" button in `chrome://inspect/#devices` :

```xml
<manifest
        xmlns:android="http://schemas.android.com/apk/res/android"
        ...>
        <application
                android:name="MyApplication"
                ...>
         </application>
</manifest>                
```

This brings up most of the default configuration but does not enable some
additional hooks (most notably, network inspection).  See below for specific
details on individual subsystems.

### Enable network inspection
If you are using the popular [OkHttp](https://github.com/square/okhttp)
library at the 3.x release, you can use the
[Interceptors](https://github.com/square/okhttp/wiki/Interceptors) system to
automatically hook into your existing stack.  This is currently the simplest
and most straightforward way to enable network inspection:

```java
new OkHttpClient.Builder()
    .addNetworkInterceptor(new StethoInterceptor())
    .build()
```

Note that okhttp 2.x will work as well, but with slightly different syntax and you must use the `stetho-okhttp` artifact (not `stetho-okhttp3`).

As interceptors can modify the request and response, add the Stetho interceptor after all others to get an accurate view of the network traffic.

If you are using `HttpURLConnection`, you can use `StethoURLConnectionManager`
to assist with integration though you should be aware that there are some
caveats with this approach.  In particular, you must explicitly add
`Accept-Encoding: gzip` to the request headers and manually handle compressed
responses in order for Stetho to report compressed payload sizes.

See the [`stetho-sample` project](stetho-sample) for more details.

## Going further

### Custom dumpapp plugins
Custom plugins are the preferred means of extending the `dumpapp` system and
can be added easily during configuration.  Simply replace your configuration
step as such:

```java
Stetho.initialize(Stetho.newInitializerBuilder(context)
    .enableDumpapp(new DumperPluginsProvider() {
      @Override
      public Iterable<DumperPlugin> get() {
        return new Stetho.DefaultDumperPluginsBuilder(context)
            .provide(new MyDumperPlugin())
            .finish();
      }
    })
    .enableWebKitInspector(Stetho.defaultInspectorModulesProvider(context))
    .build())
```

See the [`stetho-sample` project](stetho-sample) for more details.

## Improve Stetho!
See the [CONTRIBUTING.md](CONTRIBUTING.md) file for how to help out.

## License
Stetho is MIT-licensed. See LICENSE file for more details.


================================================
FILE: build-tools/protocol.json
================================================
{
    "version": { "major": "1", "minor": "1" },
    "domains": [{
        "domain": "Inspector",
        "hidden": true,
        "types": [],
        "commands": [
            {
                "name": "enable",
                "description": "Enables inspector domain notifications.",
                "handlers": ["browser", "renderer"]
            },
            {
                "name": "disable",
                "description": "Disables inspector domain notifications."
            }
        ],
        "events": [
            {
                "name": "evaluateForTestInFrontend",
                "parameters": [
                    { "name": "testCallId", "type": "integer" },
                    { "name": "script", "type": "string" }
                ]
            },
            {
                "name": "inspect",
                "parameters": [
                    { "name": "object", "$ref": "Runtime.RemoteObject" },
                    { "name": "hints", "type": "object" }
                ]
            },
            {
                "name": "detached",
                "description": "Fired when remote debugging connection is about to be terminated. Contains detach reason.",
                "parameters": [
                    { "name": "reason", "type": "string", "description": "The reason why connection has been terminated." }
                ],
                "handlers": ["browser"]
            },
            {
                "name": "targetCrashed",
                "description": "Fired when debugging target has crashed",
                "handlers": ["browser"]
            }
        ]
    },
    {
        "domain": "Memory",
        "hidden": true,
        "commands": [
            {
                "name": "getDOMCounters",
                "returns": [
                    { "name": "documents", "type": "integer" },
                    { "name": "nodes", "type": "integer" },
                    { "name": "jsEventListeners", "type": "integer" }
                ]
            }
        ]
    },
    {
        "domain": "Page",
        "description": "Actions and events related to the inspected page belong to the page domain.",
        "types": [
            {
                "id": "ResourceType",
                "type": "string",
                "enum": ["Document", "Stylesheet", "Image", "Media", "Font", "Script", "TextTrack", "XHR", "WebSocket", "Other"],
                "description": "Resource type as it was perceived by the rendering engine."
            },
            {
              "id": "FrameId",
              "type": "string",
              "description": "Unique frame identifier."
            },
            {
                "id": "Frame",
                "type": "object",
                "description": "Information about the Frame on the page.",
                "properties": [
                    { "name": "id", "type": "string", "description": "Frame unique identifier." },
                    { "name": "parentId", "type": "string", "optional": true, "description": "Parent frame identifier." },
                    { "name": "loaderId", "$ref": "Network.LoaderId", "description": "Identifier of the loader associated with this frame." },
                    { "name": "name", "type": "string", "optional": true, "description": "Frame's name as specified in the tag." },
                    { "name": "url", "type": "string", "description": "Frame document's URL." },
                    { "name": "securityOrigin", "type": "string", "description": "Frame document's security origin." },
                    { "name": "mimeType", "type": "string", "description": "Frame document's mimeType as determined by the browser." }
                ]
            },
            {
                "id": "FrameResourceTree",
                "type": "object",
                "description": "Information about the Frame hierarchy along with their cached resources.",
                "properties": [
                    { "name": "frame", "$ref": "Frame", "description": "Frame information for this tree item." },
                    { "name": "childFrames", "type": "array", "optional": true, "items": { "$ref": "FrameResourceTree" }, "description": "Child frames." },
                    { "name": "resources", "type": "array",
                        "items": {
                            "type": "object",
                            "properties": [
                                { "name": "url", "type": "string", "description": "Resource URL." },
                                { "name": "type", "$ref": "ResourceType", "description": "Type of this resource." },
                                { "name": "mimeType", "type": "string", "description": "Resource mimeType as determined by the browser." },
                                { "name": "failed", "type": "boolean", "optional": true, "description": "True if the resource failed to load." },
                                { "name": "canceled", "type": "boolean", "optional": true, "description": "True if the resource was canceled during loading." }
                            ]
                        },
                        "description": "Information about frame resources."
                    }
                ],
                "hidden": true
            },
            {
                "id": "ScriptIdentifier",
                "type": "string",
                "description": "Unique script identifier.",
                "hidden": true
            },
            {
                "id": "NavigationEntry",
                "type": "object",
                "description": "Navigation history entry.",
                "properties": [
                  { "name": "id", "type": "integer", "description": "Unique id of the navigation history entry." },
                  { "name": "url", "type": "string", "description": "URL of the navigation history entry." },
                  { "name": "title", "type": "string", "description": "Title of the navigation history entry." }
                ],
                "hidden": true
            },
            {
                "id": "ScreencastFrameMetadata",
                "type": "object",
                "description": "Screencast frame metadata",
                "properties": [
                    { "name": "offsetTop", "type": "number", "hidden": true, "description": "Top offset in DIP." },
                    { "name": "pageScaleFactor", "type": "number", "hidden": true, "description": "Page scale factor." },
                    { "name": "deviceWidth", "type": "number", "hidden": true, "description": "Device screen width in DIP." },
                    { "name": "deviceHeight", "type": "number", "hidden": true, "description": "Device screen height in DIP." },
                    { "name": "scrollOffsetX", "type": "number", "hidden": true, "description": "Position of horizontal scroll in CSS pixels." },
                    { "name": "scrollOffsetY", "type": "number", "hidden": true, "description": "Position of vertical scroll in CSS pixels." },
                    { "name": "timestamp", "type": "number", "optional": true, "hidden": true, "description": "Frame swap timestamp." }
                ],
                "hidden": true
            },
            {
                "id": "DialogType",
                "description": "Javascript dialog type",
                "type": "string",
                "enum": ["alert", "confirm", "prompt", "beforeunload"],
                "hidden": true
            }
        ],
        "commands": [
            {
                "name": "enable",
                "description": "Enables page domain notifications.",
                "handlers": ["browser", "renderer"]
            },
            {
                "name": "disable",
                "description": "Disables page domain notifications.",
                "handlers": ["browser", "renderer"]
            },
            {
                "name": "addScriptToEvaluateOnLoad",
                "parameters": [
                    { "name": "scriptSource", "type": "string" }
                ],
                "returns": [
                    { "name": "identifier", "$ref": "ScriptIdentifier", "description": "Identifier of the added script." }
                ],
                "hidden": true
            },
            {
                "name": "removeScriptToEvaluateOnLoad",
                "parameters": [
                    { "name": "identifier", "$ref": "ScriptIdentifier" }
                ],
                "hidden": true
            },
            {
                "name": "reload",
                "parameters": [
                    { "name": "ignoreCache", "type": "boolean", "optional": true, "description": "If true, browser cache is ignored (as if the user pressed Shift+refresh)." },
                    { "name": "scriptToEvaluateOnLoad", "type": "string", "optional": true, "description": "If set, the script will be injected into all frames of the inspected page after reload." }
                ],
                "description": "Reloads given page optionally ignoring the cache.",
                "handlers": ["browser", "renderer"]
            },
            {
                "name": "navigate",
                "parameters": [
                    { "name": "url", "type": "string", "description": "URL to navigate the page to." }
                ],
                "returns": [
                    { "name": "frameId", "$ref": "FrameId", "hidden": true, "description": "Frame id that will be navigated." }
                ],
                "description": "Navigates current page to the given URL.",
                "handlers": ["browser", "renderer"]
            },
            {
              "name": "getNavigationHistory",
              "parameters": [],
              "returns": [
                { "name": "currentIndex", "type": "integer", "description": "Index of the current navigation history entry." },
                { "name": "entries", "type": "array", "items": { "$ref": "NavigationEntry" }, "description": "Array of navigation history entries." }
              ],
              "description": "Returns navigation history for the current page.",
              "hidden": true,
              "handlers": ["browser"]
            },
            {
              "name": "navigateToHistoryEntry",
              "parameters": [
                  { "name": "entryId", "type": "integer", "description": "Unique id of the entry to navigate to." }
              ],
              "description": "Navigates current page to the given history entry.",
              "hidden": true,
              "handlers": ["browser"]
            },
            {
                "name": "getCookies",
                "returns": [
                    { "name": "cookies", "type": "array", "items": { "$ref": "Network.Cookie" }, "description": "Array of cookie objects." }
                ],
                "description": "Returns all browser cookies. Depending on the backend support, will return detailed cookie information in the <code>cookies</code> field.",
                "handlers": ["browser"],
                "async": true,
                "hidden": true,
                "redirect": "Network"
            },
            {
                "name": "deleteCookie",
                "parameters": [
                    { "name": "cookieName", "type": "string", "description": "Name of the cookie to remove." },
                    { "name": "url", "type": "string", "description": "URL to match cooke domain and path." }
                ],
                "description": "Deletes browser cookie with given name, domain and path.",
                "handlers": ["browser"],
                "async": true,
                "hidden": true,
                "redirect": "Network"
            },
            {
                "name": "getResourceTree",
                "description": "Returns present frame / resource tree structure.",
                "returns": [
                    { "name": "frameTree", "$ref": "FrameResourceTree", "description": "Present frame / resource tree structure." }
                ],
                "hidden": true
            },
            {
                "name": "getResourceContent",
                "async": true,
                "description": "Returns content of the given resource.",
                "parameters": [
                    { "name": "frameId", "$ref": "FrameId", "description": "Frame id to get resource for." },
                    { "name": "url", "type": "string", "description": "URL of the resource to get content for." }
                ],
                "returns": [
                    { "name": "content", "type": "string", "description": "Resource content." },
                    { "name": "base64Encoded", "type": "boolean", "description": "True, if content was served as base64." }
                ],
                "hidden": true
            },
            {
                "name": "searchInResource",
                "description": "Searches for given string in resource content.",
                "parameters": [
                    { "name": "frameId", "$ref": "FrameId", "description": "Frame id for resource to search in." },
                    { "name": "url", "type": "string", "description": "URL of the resource to search in." },
                    { "name": "query", "type": "string", "description": "String to search for."  },
                    { "name": "caseSensitive", "type": "boolean", "optional": true, "description": "If true, search is case sensitive." },
                    { "name": "isRegex", "type": "boolean", "optional": true, "description": "If true, treats string parameter as regex." }
                ],
                "returns": [
                    { "name": "result", "type": "array", "items": { "$ref": "Debugger.SearchMatch" }, "description": "List of search matches." }
                ],
                "hidden": true
            },
            {
                "name": "setDocumentContent",
                "description": "Sets given markup as the document's HTML.",
                "parameters": [
                    { "name": "frameId", "$ref": "FrameId", "description": "Frame id to set HTML for." },
                    { "name": "html", "type": "string", "description": "HTML content to set."  }
                ],
                "hidden": true
            },
            {
                "name": "setDeviceMetricsOverride",
                "description": "Overrides the values of device screen dimensions (window.screen.width, window.screen.height, window.innerWidth, window.innerHeight, and \"device-width\"/\"device-height\"-related CSS media query results).",
                "parameters": [
                    { "name": "width", "type": "integer", "description": "Overriding width value in pixels (minimum 0, maximum 10000000). 0 disables the override." },
                    { "name": "height", "type": "integer", "description": "Overriding height value in pixels (minimum 0, maximum 10000000). 0 disables the override." },
                    { "name": "deviceScaleFactor", "type": "number", "description": "Overriding device scale factor value. 0 disables the override." },
                    { "name": "mobile", "type": "boolean", "description": "Whether to emulate mobile device. This includes viewport meta tag, overlay scrollbars, text autosizing and more." },
                    { "name": "fitWindow", "type": "boolean", "description": "Whether a view that exceeds the available browser window area should be scaled down to fit." },
                    { "name": "scale", "type": "number", "optional": true, "description": "Scale to apply to resulting view image. Ignored in |fitWindow| mode." },
                    { "name": "offsetX", "type": "number", "optional": true, "description": "X offset to shift resulting view image by. Ignored in |fitWindow| mode." },
                    { "name": "offsetY", "type": "number", "optional": true, "description": "Y offset to shift resulting view image by. Ignored in |fitWindow| mode." },
                    { "name": "screenWidth", "type": "integer", "optional": true, "description": "Overriding screen width value in pixels (minimum 0, maximum 10000000). Only used for |mobile==true|." },
                    { "name": "screenHeight", "type": "integer", "optional": true, "description": "Overriding screen height value in pixels (minimum 0, maximum 10000000). Only used for |mobile==true|." },
                    { "name": "positionX", "type": "integer", "optional": true, "description": "Overriding view X position on screen in pixels (minimum 0, maximum 10000000). Only used for |mobile==true|." },
                    { "name": "positionY", "type": "integer", "optional": true, "description": "Overriding view Y position on screen in pixels (minimum 0, maximum 10000000). Only used for |mobile==true|." }
                ],
                "handlers": ["browser"],
                "redirect": "Emulation",
                "hidden": true
            },
            {
                "name": "clearDeviceMetricsOverride",
                "description": "Clears the overriden device metrics.",
                "handlers": ["browser"],
                "redirect": "Emulation",
                "hidden": true
            },
            {
                "name": "setGeolocationOverride",
                "description": "Overrides the Geolocation Position or Error. Omitting any of the parameters emulates position unavailable.",
                "parameters": [
                    { "name": "latitude", "type": "number", "optional": true, "description": "Mock latitude"},
                    { "name": "longitude", "type": "number", "optional": true, "description": "Mock longitude"},
                    { "name": "accuracy", "type": "number", "optional": true, "description": "Mock accuracy"}
                ],
                "redirect": "Emulation",
                "handlers": ["browser"]
            },
            {
                "name": "clearGeolocationOverride",
                "description": "Clears the overriden Geolocation Position and Error.",
                "redirect": "Emulation",
                "handlers": ["browser"]
            },
            {
                "name": "setDeviceOrientationOverride",
                "description": "Overrides the Device Orientation.",
                "parameters": [
                    { "name": "alpha", "type": "number", "description": "Mock alpha"},
                    { "name": "beta", "type": "number", "description": "Mock beta"},
                    { "name": "gamma", "type": "number", "description": "Mock gamma"}
                ],
                "redirect": "DeviceOrientation",
                "hidden": true
            },
            {
                "name": "clearDeviceOrientationOverride",
                "description": "Clears the overridden Device Orientation.",
                "redirect": "DeviceOrientation",
                "hidden": true
            },
            {
                "name": "setTouchEmulationEnabled",
                "parameters": [
                    { "name": "enabled", "type": "boolean", "description": "Whether the touch event emulation should be enabled." },
                    { "name": "configuration", "type": "string", "enum": ["mobile", "desktop"], "optional": true, "description": "Touch/gesture events configuration. Default: current platform." }
                ],
                "description": "Toggles mouse event-based touch event emulation.",
                "hidden": true,
                "redirect": "Emulation",
                "handlers": ["browser", "renderer"]
            },
            {
                "name": "captureScreenshot",
                "async": true,
                "description": "Capture page screenshot.",
                "parameters": [],
                "returns": [
                    { "name": "data", "type": "string", "description": "Base64-encoded image data (PNG)." }
                ],
                "hidden": true,
                "handlers": ["browser"]
            },
            {
                "name": "canScreencast",
                "description": "Tells whether screencast is supported.",
                "returns": [
                  { "name": "result", "type": "boolean", "description": "True if screencast is supported." }
                ],
                "hidden": true,
                "handlers": ["browser"]
            },
            {
                "name": "startScreencast",
                "description": "Starts sending each frame using the <code>screencastFrame</code> event.",
                "parameters": [
                    { "name": "format", "type": "string", "optional": true, "enum": ["jpeg", "png"], "description": "Image compression format." },
                    { "name": "quality", "type": "integer", "optional": true, "description": "Compression quality from range [0..100]." },
                    { "name": "maxWidth", "type": "integer", "optional": true, "description": "Maximum screenshot width." },
                    { "name": "maxHeight", "type": "integer", "optional": true, "description": "Maximum screenshot height." }
                ],
                "hidden": true,
                "handlers": ["browser", "renderer"]
            },
            {
                "name": "stopScreencast",
                "description": "Stops sending each frame in the <code>screencastFrame</code>.",
                "hidden": true,
                "handlers": ["browser", "renderer"]
            },
            {
                "name": "screencastFrameAck",
                "description": "Acknowledges that a screencast frame has been received by the frontend.",
                "parameters": [
                    { "name": "frameNumber", "type": "integer", "description": "Frame number." }
                ],
                "hidden": true,
                "handlers": ["browser"]
            },
            {
                "name": "handleJavaScriptDialog",
                "description": "Accepts or dismisses a JavaScript initiated dialog (alert, confirm, prompt, or onbeforeunload).",
                "parameters": [
                    { "name": "accept", "type": "boolean", "description": "Whether to accept or dismiss the dialog." },
                    { "name": "promptText", "type": "string", "optional": true, "description": "The text to enter into the dialog prompt before accepting. Used only if this is a prompt dialog." }
                ],
                "hidden": true,
                "handlers": ["browser"]
            },
            {
                "name": "setShowViewportSizeOnResize",
                "description": "Paints viewport size upon main frame resize.",
                "parameters": [
                    { "name": "show", "type": "boolean", "description": "Whether to paint size or not." },
                    { "name": "showGrid", "type": "boolean", "optional": true, "description": "Whether to paint grid as well." }
                ],
                "hidden": true
            },
            {
                "name": "setColorPickerEnabled",
                "parameters": [
                    { "name": "enabled", "type": "boolean", "description": "Shows / hides color picker" }
                ],
                "description": "Shows / hides color picker",
                "hidden": true,
                "handlers": ["browser"]
            },
            {
                "name": "setOverlayMessage",
                "parameters": [
                    { "name": "message", "type": "string", "optional": true, "description": "Overlay message to display when paused in debugger." }
                ],
                "hidden": true,
                "description": "Sets overlay message."
            }
        ],
        "events": [
            {
                "name": "domContentEventFired",
                "parameters": [
                    { "name": "timestamp", "type": "number" }
                ]
            },
            {
                "name": "loadEventFired",
                "parameters": [
                    { "name": "timestamp", "type": "number" }
                ]
            },
            {
                "name": "frameAttached",
                "description": "Fired when frame has been attached to its parent.",
                "parameters": [
                    { "name": "frameId", "$ref": "FrameId", "description": "Id of the frame that has been attached." },
                    { "name": "parentFrameId", "$ref": "FrameId", "description": "Parent frame identifier." }
                ]
            },
            {
                "name": "frameNavigated",
                "description": "Fired once navigation of the frame has completed. Frame is now associated with the new loader.",
                "parameters": [
                    { "name": "frame", "$ref": "Frame", "description": "Frame object." }
                ]
            },
            {
                "name": "frameDetached",
                "description": "Fired when frame has been detached from its parent.",
                "parameters": [
                    { "name": "frameId", "$ref": "FrameId", "description": "Id of the frame that has been detached." }
                ]
            },
            {
                "name": "frameStartedLoading",
                "description": "Fired when frame has started loading.",
                "parameters": [
                    { "name": "frameId", "$ref": "FrameId", "description": "Id of the frame that has started loading." }
                ],
                "hidden": true
            },
            {
                "name": "frameStoppedLoading",
                "description": "Fired when frame has stopped loading.",
                "parameters": [
                    { "name": "frameId", "$ref": "FrameId", "description": "Id of the frame that has stopped loading." }
                ],
                "hidden": true
            },
            {
                "name": "frameScheduledNavigation",
                "description": "Fired when frame schedules a potential navigation.",
                "parameters": [
                    { "name": "frameId", "$ref": "FrameId", "description": "Id of the frame that has scheduled a navigation." },
                    { "name": "delay", "type": "number", "description": "Delay (in seconds) until the navigation is scheduled to begin. The navigation is not guaranteed to start." }
                ],
                "hidden": true
            },
            {
                "name": "frameClearedScheduledNavigation",
                "description": "Fired when frame no longer has a scheduled navigation.",
                "parameters": [
                    { "name": "frameId", "$ref": "FrameId", "description": "Id of the frame that has cleared its scheduled navigation." }
                ],
                "hidden": true
            },
            {
                "name": "frameResized",
                "hidden": true
            },
            {
                "name": "javascriptDialogOpening",
                "description": "Fired when a JavaScript initiated dialog (alert, confirm, prompt, or onbeforeunload) is about to open.",
                "parameters": [
                    { "name": "message", "type": "string", "description": "Message that will be displayed by the dialog." },
                    { "name": "type", "$ref": "DialogType", "description": "Dialog type." }
                ],
                "hidden": true
            },
            {
                "name": "javascriptDialogClosed",
                "description": "Fired when a JavaScript initiated dialog (alert, confirm, prompt, or onbeforeunload) has been closed.",
                "parameters": [
                    { "name": "result", "type": "boolean", "description": "Whether dialog was confirmed." }
                ],
                "hidden": true
            },
            {
                "name": "screencastFrame",
                "description": "Compressed image data requested by the <code>startScreencast</code>.",
                "parameters": [
                    { "name": "data", "type": "string", "description": "Base64-encoded compressed image." },
                    { "name": "metadata", "$ref": "ScreencastFrameMetadata", "description": "Screencast frame metadata."},
                    { "name": "frameNumber", "type": "integer", "optional": true, "description": "Frame number."}
                ],
                "hidden": true,
                "handlers": ["browser"]
            },
            {
                "name": "screencastVisibilityChanged",
                "description": "Fired when the page with currently enabled screencast was shown or hidden </code>.",
                "parameters": [
                    { "name": "visible", "type": "boolean", "description": "True if the page is visible." }
                ],
                "hidden": true,
                "handlers": ["browser"]
            },
            {
                "name": "colorPicked",
                "description": "Fired when a color has been picked.",
                "parameters": [
                    { "name": "color", "$ref": "DOM.RGBA", "description": "RGBA of the picked color." }
                ],
                "hidden": true,
                "handlers": ["browser"]
            },
            {
                "name": "interstitialShown",
                "description": "Fired when interstitial page was shown",
                "hidden": true,
                "handlers": ["browser"]
            },
            {
                "name": "interstitialHidden",
                "description": "Fired when interstitial page was hidden",
                "hidden": true,
                "handlers": ["browser"]
            }
        ]
    },
    {
        "domain": "Rendering",
        "description": "This domain allows to control rendering of the page.",
        "hidden": true,
        "commands": [
            {
                "name": "setShowPaintRects",
                "description": "Requests that backend shows paint rectangles",
                "parameters": [
                    { "name": "result", "type": "boolean", "description": "True for showing paint rectangles" }
                ]
            },
            {
                "name": "setShowDebugBorders",
                "description": "Requests that backend shows debug borders on layers",
                "parameters": [
                    { "name": "show", "type": "boolean", "description": "True for showing debug borders" }
                ]
            },
            {
                "name": "setShowFPSCounter",
                "description": "Requests that backend shows the FPS counter",
                "parameters": [
                    { "name": "show", "type": "boolean", "description": "True for showing the FPS counter" }
                ]
            },
            {
                "name": "setContinuousPaintingEnabled",
                "description": "Requests that backend enables continuous painting",
                "parameters": [
                    { "name": "enabled", "type": "boolean", "description": "True for enabling cointinuous painting" }
                ]
            },
            {
                "name": "setShowScrollBottleneckRects",
                "description": "Requests that backend shows scroll bottleneck rects",
                "parameters": [
                    { "name": "show", "type": "boolean", "description": "True for showing scroll bottleneck rects" }
                ]
            }
        ]
    },
    {
        "domain": "Emulation",
        "description": "This domain emulates different environments for the page.",
        "hidden": true,
        "types": [
            {
                "id": "Viewport",
                "type": "object",
                "description": "Visible page viewport",
                "properties": [
                    { "name": "scrollX", "type": "number", "description": "X scroll offset in CSS pixels." },
                    { "name": "scrollY", "type": "number", "description": "Y scroll offset in CSS pixels." },
                    { "name": "contentsWidth", "type": "number", "description": "Contents width in CSS pixels." },
                    { "name": "contentsHeight", "type": "number", "description": "Contents height in CSS pixels." },
                    { "name": "pageScaleFactor", "type": "number", "description": "Page scale factor." },
                    { "name": "minimumPageScaleFactor", "type": "number", "description": "Minimum page scale factor." },
                    { "name": "maximumPageScaleFactor", "type": "number", "description": "Maximum page scale factor." }
                ]
            }
        ],
        "commands": [
            {
                "name": "setDeviceMetricsOverride",
                "description": "Overrides the values of device screen dimensions (window.screen.width, window.screen.height, window.innerWidth, window.innerHeight, and \"device-width\"/\"device-height\"-related CSS media query results).",
                "parameters": [
                    { "name": "width", "type": "integer", "description": "Overriding width value in pixels (minimum 0, maximum 10000000). 0 disables the override." },
                    { "name": "height", "type": "integer", "description": "Overriding height value in pixels (minimum 0, maximum 10000000). 0 disables the override." },
                    { "name": "deviceScaleFactor", "type": "number", "description": "Overriding device scale factor value. 0 disables the override." },
                    { "name": "mobile", "type": "boolean", "description": "Whether to emulate mobile device. This includes viewport meta tag, overlay scrollbars, text autosizing and more." },
                    { "name": "fitWindow", "type": "boolean", "description": "Whether a view that exceeds the available browser window area should be scaled down to fit." },
                    { "name": "scale", "type": "number", "optional": true, "description": "Scale to apply to resulting view image. Ignored in |fitWindow| mode." },
                    { "name": "offsetX", "type": "number", "optional": true, "description": "X offset to shift resulting view image by. Ignored in |fitWindow| mode." },
                    { "name": "offsetY", "type": "number", "optional": true, "description": "Y offset to shift resulting view image by. Ignored in |fitWindow| mode." },
                    { "name": "screenWidth", "type": "integer", "optional": true, "description": "Overriding screen width value in pixels (minimum 0, maximum 10000000). Only used for |mobile==true|." },
                    { "name": "screenHeight", "type": "integer", "optional": true, "description": "Overriding screen height value in pixels (minimum 0, maximum 10000000). Only used for |mobile==true|." },
                    { "name": "positionX", "type": "integer", "optional": true, "description": "Overriding view X position on screen in pixels (minimum 0, maximum 10000000). Only used for |mobile==true|." },
                    { "name": "positionY", "type": "integer", "optional": true, "description": "Overriding view Y position on screen in pixels (minimum 0, maximum 10000000). Only used for |mobile==true|." }
                ],
                "handlers": ["browser"]
            },
            {
                "name": "clearDeviceMetricsOverride",
                "description": "Clears the overriden device metrics.",
                "handlers": ["browser"]
            },
            {
                "name": "resetScrollAndPageScaleFactor",
                "description": "Requests that scroll offsets and page scale factor are reset to initial values."
            },
            {
                "name": "setPageScaleFactor",
                "description": "Sets a specified page scale factor.",
                "parameters": [
                    { "name": "pageScaleFactor", "type": "number", "description": "Page scale factor." }
                ]
            },
            {
                "name": "setScriptExecutionDisabled",
                "description": "Switches script execution in the page.",
                "parameters": [
                    { "name": "value", "type": "boolean", "description": "Whether script execution should be disabled in the page." }
                ]
            },
            {
                "name": "setGeolocationOverride",
                "description": "Overrides the Geolocation Position or Error. Omitting any of the parameters emulates position unavailable.",
                "parameters": [
                    { "name": "latitude", "type": "number", "optional": true, "description": "Mock latitude"},
                    { "name": "longitude", "type": "number", "optional": true, "description": "Mock longitude"},
                    { "name": "accuracy", "type": "number", "optional": true, "description": "Mock accuracy"}
                ],
                "handlers": ["browser"]
            },
            {
                "name": "clearGeolocationOverride",
                "description": "Clears the overriden Geolocation Position and Error.",
                "handlers": ["browser"]
            },
            {
                "name": "setTouchEmulationEnabled",
                "parameters": [
                    { "name": "enabled", "type": "boolean", "description": "Whether the touch event emulation should be enabled." },
                    { "name": "configuration", "type": "string", "enum": ["mobile", "desktop"], "optional": true, "description": "Touch/gesture events configuration. Default: current platform." }
                ],
                "description": "Toggles mouse event-based touch event emulation.",
                "handlers": ["browser", "renderer"]
            },
            {
                "name": "setEmulatedMedia",
                "parameters": [
                    { "name": "media", "type": "string", "description": "Media type to emulate. Empty string disables the override." }
                ],
                "description": "Emulates the given media for CSS media queries."
            },
            {
                "name": "canEmulate",
                "description": "Tells whether emulation is supported.",
                "returns": [
                    { "name": "result", "type": "boolean", "description": "True if emulation is supported." }
                ],
                "handlers": ["browser"]
            }
        ],
        "events": [
            {
                "name": "viewportChanged",
                "description": "Fired when a visible page viewport has changed. Only fired when device metrics are overridden.",
                "parameters": [
                    { "name": "viewport", "$ref": "Viewport", "description": "Viewport description." }
                ]
            }
        ]
    },
    {
        "domain": "Runtime",
        "description": "Runtime domain exposes JavaScript runtime by means of remote evaluation and mirror objects. Evaluation results are returned as mirror object that expose object type, string representation and unique identifier that can be used for further object reference. Original objects are maintained in memory unless they are either explicitly released or are released along with the other objects in their object group.",
        "types": [
            {
                "id": "RemoteObjectId",
                "type": "string",
                "description": "Unique object identifier."
            },
            {
                "id": "RemoteObject",
                "type": "object",
                "description": "Mirror object referencing original JavaScript object.",
                "properties": [
                    { "name": "type", "type": "string", "enum": ["object", "function", "undefined", "string", "number", "boolean", "symbol"], "description": "Object type." },
                    { "name": "subtype", "type": "string", "optional": true, "enum": ["array", "null", "node", "regexp", "date", "map", "set", "iterator", "generator", "error"], "description": "Object subtype hint. Specified for <code>object</code> type values only." },
                    { "name": "className", "type": "string", "optional": true, "description": "Object class (constructor) name. Specified for <code>object</code> type values only." },
                    { "name": "value", "type": "any", "optional": true, "description": "Remote object value in case of primitive values or JSON values (if it was requested), or description string if the value can not be JSON-stringified (like NaN, Infinity, -Infinity, -0)." },
                    { "name": "description", "type": "string", "optional": true, "description": "String representation of the object." },
                    { "name": "objectId", "$ref": "RemoteObjectId", "optional": true, "description": "Unique object identifier (for non-primitive values)." },
                    { "name": "preview", "$ref": "ObjectPreview", "optional": true, "description": "Preview containing abbreviated property values. Specified for <code>object</code> type values only.", "hidden": true },
                    { "name": "customPreview", "$ref": "CustomPreview", "optional": true, "hidden": true}
                ]
            },
            {   "id": "CustomPreview",
                "type": "object",
                "hidden": true,
                "properties": [
                    { "name": "header", "type": "string"},
                    { "name": "hasBody", "type": "boolean"},
                    {"name": "formatterObjectId", "$ref": "RemoteObjectId"},
                    {"name": "configObjectId", "$ref": "RemoteObjectId", "optional": true}
                ]
            },
            {
                "id": "ObjectPreview",
                "type": "object",
                "hidden": true,
                "description": "Object containing abbreviated remote object value.",
                "properties": [
                    { "name": "type", "type": "string", "enum": ["object", "function", "undefined", "string", "number", "boolean", "symbol"], "description": "Object type." },
                    { "name": "subtype", "type": "string", "optional": true, "enum": ["array", "null", "node", "regexp", "date", "map", "set", "iterator", "generator", "error"], "description": "Object subtype hint. Specified for <code>object</code> type values only." },
                    { "name": "description", "type": "string", "optional": true, "description": "String representation of the object." },
                    { "name": "lossless", "type": "boolean", "description": "Determines whether preview is lossless (contains all information of the original object)." },
                    { "name": "overflow", "type": "boolean", "description": "True iff some of the properties or entries of the original object did not fit." },
                    { "name": "properties", "type": "array", "items": { "$ref": "PropertyPreview" }, "description": "List of the properties." },
                    { "name": "entries", "type": "array", "items": { "$ref": "EntryPreview" }, "optional": true, "description": "List of the entries. Specified for <code>map</code> and <code>set</code> subtype values only." }
                ]
            },
            {
                "id": "PropertyPreview",
                "type": "object",
                "hidden": true,
                "properties": [
                    { "name": "name", "type": "string", "description": "Property name." },
                    { "name": "type", "type": "string", "enum": ["object", "function", "undefined", "string", "number", "boolean", "symbol", "accessor"], "description": "Object type. Accessor means that the property itself is an accessor property." },
                    { "name": "value", "type": "string", "optional": true, "description": "User-friendly property value string." },
                    { "name": "valuePreview", "$ref": "ObjectPreview", "optional": true, "description": "Nested value preview." },
                    { "name": "subtype", "type": "string", "optional": true, "enum": ["array", "null", "node", "regexp", "date", "map", "set", "iterator", "generator", "error"], "description": "Object subtype hint. Specified for <code>object</code> type values only." }
                ]
            },
            {
                "id": "EntryPreview",
                "type": "object",
                "hidden": true,
                "properties": [
                    { "name": "key", "$ref": "ObjectPreview", "optional": true, "description": "Preview of the key. Specified for map-like collection entries." },
                    { "name": "value", "$ref": "ObjectPreview", "description": "Preview of the value." }
                ]
            },
            {
                "id": "PropertyDescriptor",
                "type": "object",
                "description": "Object property descriptor.",
                "properties": [
                    { "name": "name", "type": "string", "description": "Property name or symbol description." },
                    { "name": "value", "$ref": "RemoteObject", "optional": true, "description": "The value associated with the property." },
                    { "name": "writable", "type": "boolean", "optional": true, "description": "True if the value associated with the property may be changed (data descriptors only)." },
                    { "name": "get", "$ref": "RemoteObject", "optional": true, "description": "A function which serves as a getter for the property, or <code>undefined</code> if there is no getter (accessor descriptors only)." },
                    { "name": "set", "$ref": "RemoteObject", "optional": true, "description": "A function which serves as a setter for the property, or <code>undefined</code> if there is no setter (accessor descriptors only)." },
                    { "name": "configurable", "type": "boolean", "description": "True if the type of this property descriptor may be changed and if the property may be deleted from the corresponding object." },
                    { "name": "enumerable", "type": "boolean", "description": "True if this property shows up during enumeration of the properties on the corresponding object." },
                    { "name": "wasThrown", "type": "boolean", "optional": true, "description": "True if the result was thrown during the evaluation." },
                    { "name": "isOwn", "optional": true, "type": "boolean", "description": "True if the property is owned for the object.", "hidden": true },
                    { "name": "symbol", "$ref": "RemoteObject", "optional": true, "description": "Property symbol object, if the property is of the <code>symbol</code> type.", "hidden": true }
                ]
            },
            {
                "id": "InternalPropertyDescriptor",
                "type": "object",
                "description": "Object internal property descriptor. This property isn't normally visible in JavaScript code.",
                "properties": [
                    { "name": "name", "type": "string", "description": "Conventional property name." },
                    { "name": "value", "$ref": "RemoteObject", "optional": true, "description": "The value associated with the property." }
                ],
                "hidden": true
            },
            {
                "id": "CallArgument",
                "type": "object",
                "description": "Represents function call argument. Either remote object id <code>objectId</code> or primitive <code>value</code> or neither of (for undefined) them should be specified.",
                "properties": [
                    { "name": "value", "type": "any", "optional": true, "description": "Primitive value, or description string if the value can not be JSON-stringified (like NaN, Infinity, -Infinity, -0)." },
                    { "name": "objectId", "$ref": "RemoteObjectId", "optional": true, "description": "Remote object handle." },
                    { "name": "type", "optional": true, "hidden": true, "type": "string", "enum": ["object", "function", "undefined", "string", "number", "boolean", "symbol"], "description": "Object type." }
                ]
            },
            {
                "id": "ExecutionContextId",
                "type": "integer",
                "description": "Id of an execution context."
            },
            {
                "id": "ExecutionContextDescription",
                "type": "object",
                "description": "Description of an isolated world.",
                "properties": [
                    { "name": "id", "$ref": "ExecutionContextId", "description": "Unique id of the execution context. It can be used to specify in which execution context script evaluation should be performed." },
                    { "name": "type", "type": "string", "optional": true, "description": "Context type. It is used e.g. to distinguish content scripts from web page script.", "hidden": true },
                    { "name": "origin", "type": "string", "description": "Execution context origin.", "hidden": true},
                    { "name": "name", "type": "string", "description": "Human readable name describing given context.", "hidden": true},
                    { "name": "frameId", "type": "string", "description": "Id of the owning frame. May be an empty string if the context is not associated with a frame." }
                ]
            }
        ],
        "commands": [
            {
                "name": "evaluate",
                "parameters": [
                    { "name": "expression", "type": "string", "description": "Expression to evaluate." },
                    { "name": "objectGroup", "type": "string", "optional": true, "description": "Symbolic group name that can be used to release multiple objects." },
                    { "name": "includeCommandLineAPI", "type": "boolean", "optional": true, "description": "Determines whether Command Line API should be available during the evaluation.", "hidden": true },
                    { "name": "doNotPauseOnExceptionsAndMuteConsole", "type": "boolean", "optional": true, "description": "Specifies whether evaluation should stop on exceptions and mute console. Overrides setPauseOnException state.", "hidden": true },
                    { "name": "contextId", "$ref": "ExecutionContextId", "optional": true, "description": "Specifies in which isolated context to perform evaluation. Each content script lives in an isolated context and this parameter may be used to specify one of those contexts. If the parameter is omitted or 0 the evaluation will be performed in the context of the inspected page." },
                    { "name": "returnByValue", "type": "boolean", "optional": true, "description": "Whether the result is expected to be a JSON object that should be sent by value." },
                    { "name": "generatePreview", "type": "boolean", "optional": true, "hidden": true, "description": "Whether preview should be generated for the result." }
                ],
                "returns": [
                    { "name": "result", "$ref": "RemoteObject", "description": "Evaluation result." },
                    { "name": "wasThrown", "type": "boolean", "optional": true, "description": "True if the result was thrown during the evaluation." },
                    { "name": "exceptionDetails", "$ref": "Debugger.ExceptionDetails", "optional": true, "hidden": true, "description": "Exception details."}
                ],
                "description": "Evaluates expression on global object."
            },
            {
                "name": "callFunctionOn",
                "parameters": [
                    { "name": "objectId", "$ref": "RemoteObjectId", "description": "Identifier of the object to call function on." },
                    { "name": "functionDeclaration", "type": "string", "description": "Declaration of the function to call." },
                    { "name": "arguments", "type": "array", "items": { "$ref": "CallArgument", "description": "Call argument." }, "optional": true, "description": "Call arguments. All call arguments must belong to the same JavaScript world as the target object." },
                    { "name": "doNotPauseOnExceptionsAndMuteConsole", "type": "boolean", "optional": true, "description": "Specifies whether function call should stop on exceptions and mute console. Overrides setPauseOnException state.", "hidden": true },
                    { "name": "returnByValue", "type": "boolean", "optional": true, "description": "Whether the result is expected to be a JSON object which should be sent by value." },
                    { "name": "generatePreview", "type": "boolean", "optional": true, "hidden": true, "description": "Whether preview should be generated for the result." }
                ],
                "returns": [
                    { "name": "result", "$ref": "RemoteObject", "description": "Call result." },
                    { "name": "wasThrown", "type": "boolean", "optional": true, "description": "True if the result was thrown during the evaluation." }
                ],
                "description": "Calls function with given declaration on the given object. Object group of the result is inherited from the target object."
            },
            {
                "name": "getProperties",
                "parameters": [
                    { "name": "objectId", "$ref": "RemoteObjectId", "description": "Identifier of the object to return properties for." },
                    { "name": "ownProperties", "optional": true, "type": "boolean", "description": "If true, returns properties belonging only to the element itself, not to its prototype chain." },
                    { "name": "accessorPropertiesOnly", "optional": true, "type": "boolean", "description": "If true, returns accessor properties (with getter/setter) only; internal properties are not returned either.", "hidden": true },
                    { "name": "generatePreview", "type": "boolean", "optional": true, "hidden": true, "description": "Whether preview should be generated for the results." }
                ],
                "returns": [
                    { "name": "result", "type": "array", "items": { "$ref": "PropertyDescriptor" }, "description": "Object properties." },
                    { "name": "internalProperties", "optional": true, "type": "array", "items": { "$ref": "InternalPropertyDescriptor" }, "description": "Internal object properties (only of the element itself).", "hidden": true },
                    { "name": "exceptionDetails", "$ref": "Debugger.ExceptionDetails", "optional": true, "hidden": true, "description": "Exception details."}
                ],
                "description": "Returns properties of a given object. Object group of the result is inherited from the target object."
            },
            {
                "name": "releaseObject",
                "parameters": [
                    { "name": "objectId", "$ref": "RemoteObjectId", "description": "Identifier of the object to release." }
                ],
                "description": "Releases remote object with given id."
            },
            {
                "name": "releaseObjectGroup",
                "parameters": [
                    { "name": "objectGroup", "type": "string", "description": "Symbolic object group name." }
                ],
                "description": "Releases all remote objects that belong to a given group."
            },
            {
                "name": "run",
                "hidden": true,
                "description": "Tells inspected instance(worker or page) that it can run in case it was started paused."
            },
            {
                "name": "enable",
                "description": "Enables reporting of execution contexts creation by means of <code>executionContextCreated</code> event. When the reporting gets enabled the event will be sent immediately for each existing execution context."
            },
            {
                "name": "disable",
                "hidden": true,
                "description": "Disables reporting of execution contexts creation."
            },
            {
                "name": "isRunRequired",
                "returns": [
                    { "name": "result", "type": "boolean", "description": "True if the Runtime is in paused on start state." }
                ],
                "hidden": true
            },
            {
                "name": "setCustomObjectFormatterEnabled",
                "parameters": [
                    {
                        "name": "enabled",
                        "type": "boolean"
                    }
                ],
                "hidden": true
            }
        ],
        "events": [
            {
                "name": "executionContextCreated",
                "parameters": [
                    { "name": "context", "$ref": "ExecutionContextDescription", "description": "A newly created execution contex." }
                ],
                "description": "Issued when new execution context is created."
            },
            {
                "name": "executionContextDestroyed",
                "parameters": [
                    { "name": "executionContextId", "$ref": "ExecutionContextId", "description": "Id of the destroyed context" }
                ],
                "description": "Issued when execution context is destroyed."
            },
            {
                "name": "executionContextsCleared",
                "description": "Issued when all executionContexts were cleared in browser"
            }
        ]
    },
    {
        "domain": "Console",
        "description": "Console domain defines methods and events for interaction with the JavaScript console. Console collects messages created by means of the <a href='http://getfirebug.com/wiki/index.php/Console_API'>JavaScript Console API</a>. One needs to enable this domain using <code>enable</code> command in order to start receiving the console messages. Browser collects messages issued while console domain is not enabled as well and reports them using <code>messageAdded</code> notification upon enabling.",
        "types": [
            {
                "id": "Timestamp",
                "type": "number",
                "description": "Number of seconds since epoch.",
                "hidden": true
            },
            {
                "id": "ConsoleMessage",
                "type": "object",
                "description": "Console message.",
                "properties": [
                    { "name": "source", "type": "string", "enum": ["xml", "javascript", "network", "console-api", "storage", "appcache", "rendering", "security", "other", "deprecation"], "description": "Message source." },
                    { "name": "level", "type": "string", "enum": ["log", "warning", "error", "debug", "info", "revokedError"], "description": "Message severity." },
                    { "name": "text", "type": "string", "description": "Message text." },
                    { "name": "type", "type": "string", "optional": true, "enum": ["log", "dir", "dirxml", "table", "trace", "clear", "startGroup", "startGroupCollapsed", "endGroup", "assert", "profile", "profileEnd"], "description": "Console message type." },
                    { "name": "scriptId", "type": "string", "optional": true, "description": "Script ID of the message origin." },
                    { "name": "url", "type": "string", "optional": true, "description": "URL of the message origin." },
                    { "name": "line", "type": "integer", "optional": true, "description": "Line number in the resource that generated this message." },
                    { "name": "column", "type": "integer", "optional": true, "description": "Column number in the resource that generated this message." },
                    { "name": "repeatCount", "type": "integer", "optional": true, "description": "Repeat count for repeated messages." },
                    { "name": "parameters", "type": "array", "items": { "$ref": "Runtime.RemoteObject" }, "optional": true, "description": "Message parameters in case of the formatted message." },
                    { "name": "stackTrace", "$ref": "StackTrace", "optional": true, "description": "JavaScript stack trace for assertions and error messages." },
                    { "name": "asyncStackTrace", "$ref": "AsyncStackTrace", "optional": true, "description": "Asynchronous JavaScript stack trace that preceded this message, if available.", "hidden": true },
                    { "name": "networkRequestId", "$ref": "Network.RequestId", "optional": true, "description": "Identifier of the network request associated with this message." },
                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp, when this message was fired.", "hidden": true },
                    { "name": "executionContextId", "$ref": "Runtime.ExecutionContextId", "optional": true, "description": "Identifier of the context where this message was created", "hidden": true },
                    { "name": "messageId", "type": "integer", "hidden": true, "optional": true, "description": "Message id." },
                    { "name": "relatedMessageId", "type": "integer", "hidden": true, "optional": true, "description": "Related message id." }
                ]
            },
            {
                "id": "CallFrame",
                "type": "object",
                "description": "Stack entry for console errors and assertions.",
                "properties": [
                    { "name": "functionName", "type": "string", "description": "JavaScript function name." },
                    { "name": "scriptId", "type": "string", "description": "JavaScript script id." },
                    { "name": "url", "type": "string", "description": "JavaScript script name or url." },
                    { "name": "lineNumber", "type": "integer", "description": "JavaScript script line number." },
                    { "name": "columnNumber", "type": "integer", "description": "JavaScript script column number." }
                ]
            },
            {
                "id": "StackTrace",
                "type": "array",
                "items": { "$ref": "CallFrame" },
                "description": "Call frames for assertions or error messages."
            },
            {
                "id": "AsyncStackTrace",
                "type": "object",
                "properties": [
                    { "name": "callFrames", "type": "array", "items": { "$ref": "CallFrame" }, "description": "Call frames of the stack trace." },
                    { "name": "description", "type": "string", "optional": true, "description": "String label of this stack trace. For async traces this may be a name of the function that initiated the async call." },
                    { "name": "asyncStackTrace", "$ref": "AsyncStackTrace", "optional": true, "description": "Next asynchronous stack trace, if any." }
                ],
                "description": "Asynchronous JavaScript call stack.",
                "hidden": true
            }
        ],
        "commands": [
            {
                "name": "enable",
                "description": "Enables console domain, sends the messages collected so far to the client by means of the <code>messageAdded</code> notification."
            },
            {
                "name": "disable",
                "description": "Disables console domain, prevents further console messages from being reported to the client."
            },
            {
                "name": "clearMessages",
                "description": "Clears console messages collected in the browser."
            }
        ],
        "events": [
            {
                "name": "messageAdded",
                "parameters": [
                    { "name": "message", "$ref": "ConsoleMessage", "description": "Console message that has been added." }
                ],
                "description": "Issued when new console message is added."
            },
            {
                "name": "messageRepeatCountUpdated",
                "parameters": [
                    { "name": "count", "type": "integer", "description": "New repeat count value." },
                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp of most recent message in batch.", "hidden": true }
                ],
                "description": "Is not issued. Will be gone in the future versions of the protocol.",
                "deprecated": true
            },
            {
                "name": "messagesCleared",
                "description": "Issued when console is cleared. This happens either upon <code>clearMessages</code> command or after page navigation."
            }
        ]
    },
    {
        "domain": "Network",
        "description": "Network domain allows tracking network activities of the page. It exposes information about http, file, data and other requests and responses, their headers, bodies, timing, etc.",
        "types": [
            {
                "id": "LoaderId",
                "type": "string",
                "description": "Unique loader identifier."
            },
            {
                "id": "RequestId",
                "type": "string",
                "description": "Unique request identifier."
            },
            {
                "id": "Timestamp",
                "type": "number",
                "description": "Number of seconds since epoch."
            },
            {
                "id": "Headers",
                "type": "object",
                "description": "Request / response headers as keys / values of JSON object."
            },
            {
                "id": "ResourceTiming",
                "type": "object",
                "description": "Timing information for the request.",
                "properties": [
                    { "name": "requestTime", "type": "number", "description": "Timing's requestTime is a baseline in seconds, while the other numbers are ticks in milliseconds relatively to this requestTime." },
                    { "name": "proxyStart", "type": "number", "description": "Started resolving proxy." },
                    { "name": "proxyEnd", "type": "number", "description": "Finished resolving proxy." },
                    { "name": "dnsStart", "type": "number", "description": "Started DNS address resolve." },
                    { "name": "dnsEnd", "type": "number", "description": "Finished DNS address resolve." },
                    { "name": "connectStart", "type": "number", "description": "Started connecting to the remote host." },
                    { "name": "connectEnd", "type": "number", "description": "Connected to the remote host." },
                    { "name": "sslStart", "type": "number", "description": "Started SSL handshake." },
                    { "name": "sslEnd", "type": "number", "description": "Finished SSL handshake." },
                    { "name": "workerStart", "type": "number", "description": "Started running ServiceWorker.", "hidden": true },
                    { "name": "workerReady", "type": "number", "description": "Finished Starting ServiceWorker.", "hidden": true },
                    { "name": "sendStart", "type": "number", "description": "Started sending request." },
                    { "name": "sendEnd", "type": "number", "description": "Finished sending request." },
                    { "name": "receiveHeadersEnd", "type": "number", "description": "Finished receiving response headers." }
                ]
            },
            {
                "id": "Request",
                "type": "object",
                "description": "HTTP request data.",
                "properties": [
                    { "name": "url", "type": "string", "description": "Request URL." },
                    { "name": "method", "type": "string", "description": "HTTP request method." },
                    { "name": "headers", "$ref": "Headers", "description": "HTTP request headers." },
                    { "name": "postData", "type": "string", "optional": true, "description": "HTTP POST request data." }
                ]
            },
            {
                "id": "Response",
                "type": "object",
                "description": "HTTP response data.",
                "properties": [
                    { "name": "url", "type": "string", "description": "Response URL. This URL can be different from CachedResource.url in case of redirect." },
                    { "name": "status", "type": "number", "description": "HTTP response status code." },
                    { "name": "statusText", "type": "string", "description": "HTTP response status text." },
                    { "name": "headers", "$ref": "Headers", "description": "HTTP response headers." },
                    { "name": "headersText", "type": "string", "optional": true, "description": "HTTP response headers text." },
                    { "name": "mimeType", "type": "string", "description": "Resource mimeType as determined by the browser." },
                    { "name": "requestHeaders", "$ref": "Headers", "optional": true, "description": "Refined HTTP request headers that were actually transmitted over the network." },
                    { "name": "requestHeadersText", "type": "string", "optional": true, "description": "HTTP request headers text." },
                    { "name": "connectionReused", "type": "boolean", "description": "Specifies whether physical connection was actually reused for this request." },
                    { "name": "connectionId", "type": "number", "description": "Physical connection id that was actually used for this request." },
                    { "name": "remoteIPAddress", "type": "string", "optional": true, "hidden": true, "description": "Remote IP address." },
                    { "name": "remotePort", "type": "integer", "optional": true, "hidden": true, "description": "Remote port."},
                    { "name": "fromDiskCache", "type": "boolean", "optional": true, "description": "Specifies that the request was served from the disk cache." },
                    { "name": "fromServiceWorker", "type": "boolean", "optional": true, "description": "Specifies that the request was served from the ServiceWorker." },
                    { "name": "encodedDataLength", "type": "number", "optional": false, "description": "Total number of bytes received for this request so far." },
                    { "name": "timing", "$ref": "ResourceTiming", "optional": true, "description": "Timing information for the given request." },
                    { "name": "protocol", "type": "string", "optional": true, "description": "Protocol used to fetch this request." }
                ]
            },
            {
                "id": "WebSocketRequest",
                "type": "object",
                "description": "WebSocket request data.",
                "hidden": true,
                "properties": [
                    { "name": "headers", "$ref": "Headers", "description": "HTTP request headers." }
                ]
            },
            {
                "id": "WebSocketResponse",
                "type": "object",
                "description": "WebSocket response data.",
                "hidden": true,
                "properties": [
                    { "name": "status", "type": "number", "description": "HTTP response status code." },
                    { "name": "statusText", "type": "string", "description": "HTTP response status text." },
                    { "name": "headers", "$ref": "Headers", "description": "HTTP response headers." },
                    { "name": "headersText", "type": "string", "optional": true, "description": "HTTP response headers text." },
                    { "name": "requestHeaders", "$ref": "Headers", "optional": true, "description": "HTTP request headers." },
                    { "name": "requestHeadersText", "type": "string", "optional": true, "description": "HTTP request headers text." }
                ]
            },
            {
                "id": "WebSocketFrame",
                "type": "object",
                "description": "WebSocket frame data.",
                "hidden": true,
                "properties": [
                    { "name": "opcode", "type": "number", "description": "WebSocket frame opcode." },
                    { "name": "mask", "type": "boolean", "description": "WebSocke frame mask." },
                    { "name": "payloadData", "type": "string", "description": "WebSocke frame payload data." }
                ]
            },
            {
                "id": "CachedResource",
                "type": "object",
                "description": "Information about the cached resource.",
                "properties": [
                    { "name": "url", "type": "string", "description": "Resource URL. This is the url of the original network request." },
                    { "name": "type", "$ref": "Page.ResourceType", "description": "Type of this resource." },
                    { "name": "response", "$ref": "Response", "optional": true, "description": "Cached response data." },
                    { "name": "bodySize", "type": "number", "description": "Cached response body size." }
                ]
            },
            {
                "id": "Initiator",
                "type": "object",
                "description": "Information about the request initiator.",
                "properties": [
                    { "name": "type", "type": "string", "enum": ["parser", "script", "other"], "description": "Type of this initiator." },
                    { "name": "stackTrace", "$ref": "Console.StackTrace", "optional": true, "description": "Initiator JavaScript stack trace, set for Script only." },
                    { "name": "url", "type": "string", "optional": true, "description": "Initiator URL, set for Parser type only." },
                    { "name": "lineNumber", "type": "number", "optional": true, "description": "Initiator line number, set for Parser type only." },
                    { "name": "asyncStackTrace", "$ref": "Console.AsyncStackTrace", "optional": true, "description": "Initiator asynchronous JavaScript stack trace, if available.", "hidden": true }
                ]
            },
            {
                "id": "Cookie",
                "type": "object",
                "description": "Cookie object",
                "properties": [
                    { "name": "name", "type": "string", "description": "Cookie name." },
                    { "name": "value", "type": "string", "description": "Cookie value." },
                    { "name": "domain", "type": "string", "description": "Cookie domain." },
                    { "name": "path", "type": "string", "description": "Cookie path." },
                    { "name": "expires", "type": "number", "description": "Cookie expires." },
                    { "name": "size", "type": "integer", "description": "Cookie size." },
                    { "name": "httpOnly", "type": "boolean", "description": "True if cookie is http-only." },
                    { "name": "secure", "type": "boolean", "description": "True if cookie is secure." },
                    { "name": "session", "type": "boolean", "description": "True in case of session cookie." }
                ],
                "hidden": true
            }
        ],
        "commands": [
            {
                "name": "enable",
                "description": "Enables network tracking, network events will now be delivered to the client."
            },
            {
                "name": "disable",
                "description": "Disables network tracking, prevents network events from being sent to the client."
            },
            {
                "name": "setUserAgentOverride",
                "description": "Allows overriding user agent with the given string.",
                "parameters": [
                    { "name": "userAgent", "type": "string", "description": "User agent to use." }
                ]
            },
            {
                "name": "setExtraHTTPHeaders",
                "description": "Specifies whether to always send extra HTTP headers with the requests from this page.",
                "parameters": [
                    { "name": "headers", "$ref": "Headers", "description": "Map with extra HTTP headers." }
                ]
            },
            {
                "name": "getResponseBody",
                "async": true,
                "description": "Returns content served for the given request.",
                "parameters": [
                    { "name": "requestId", "$ref": "RequestId", "description": "Identifier of the network request to get content for." }
                ],
                "returns": [
                    { "name": "body", "type": "string", "description": "Response body." },
                    { "name": "base64Encoded", "type": "boolean", "description": "True, if content was sent as base64." }
                ]
            },
            {
                "name": "replayXHR",
                "description": "This method sends a new XMLHttpRequest which is identical to the original one. The following parameters should be identical: method, url, async, request body, extra headers, withCredentials attribute, user, password.",
                "parameters": [
                    { "name": "requestId", "$ref": "RequestId", "description": "Identifier of XHR to replay." }
                ],
                "hidden": true
            },
            {
                "name": "setMonitoringXHREnabled",
                "parameters": [
                    { "name": "enabled", "type": "boolean", "description": "Monitoring enabled state." }
                ],
                "description": "Toggles monitoring of XMLHttpRequest. If <code>true</code>, console will receive messages upon each XHR issued.",
                "hidden": true
            },
            {
                "name": "canClearBrowserCache",
                "description": "Tells whether clearing browser cache is supported.",
                "returns": [
                    { "name": "result", "type": "boolean", "description": "True if browser cache can be cleared." }
                ]
            },
            {
                "name": "clearBrowserCache",
                "description": "Clears browser cache.",
                "handlers": ["browser"]
            },
            {
                "name": "canClearBrowserCookies",
                "description": "Tells whether clearing browser cookies is supported.",
                "returns": [
                    { "name": "result", "type": "boolean", "description": "True if browser cookies can be cleared." }
                ]
            },
            {
                "name": "clearBrowserCookies",
                "description": "Clears browser cookies.",
                "handlers": ["browser"]
            },
            {
                "name": "getCookies",
                "returns": [
                    { "name": "cookies", "type": "array", "items": { "$ref": "Cookie" }, "description": "Array of cookie objects." }
                ],
                "description": "Returns all browser cookies. Depending on the backend support, will return detailed cookie information in the <code>cookies</code> field.",
                "handlers": ["browser"],
                "async": true,
                "hidden": true
            },
            {
                "name": "deleteCookie",
                "parameters": [
                    { "name": "cookieName", "type": "string", "description": "Name of the cookie to remove." },
                    { "name": "url", "type": "string", "description": "URL to match cooke domain and path." }
                ],
                "description": "Deletes browser cookie with given name, domain and path.",
                "handlers": ["browser"],
                "async": true,
                "hidden": true
            },
            {
                "name": "canEmulateNetworkConditions",
                "description": "Tells whether emulation of network conditions is supported.",
                "returns": [
                  { "name": "result", "type": "boolean", "description": "True if emulation of network conditions is supported." }
                ],
                "hidden": true,
                "handlers": ["browser"]
            },
            {
                "name": "emulateNetworkConditions",
                "description": "Activates emulation of network conditions.",
                "parameters": [
                    { "name": "offline", "type": "boolean", "description": "True to emulate internet disconnection." },
                    { "name": "latency", "type": "number", "description": "Additional latency (ms)." },
                    { "name": "downloadThroughput", "type": "number", "description": "Maximal aggregated download throughput." },
                    { "name": "uploadThroughput", "type": "number", "description": "Maximal aggregated upload throughput." }
                ],
                "hidden": true,
                "handlers": ["browser", "renderer"]
            },
            {
                "name": "setCacheDisabled",
                "parameters": [
                    { "name": "cacheDisabled", "type": "boolean", "description": "Cache disabled state." }
                ],
                "description": "Toggles ignoring cache for each request. If <code>true</code>, cache will not be used."
            },
            {
                "name": "setDataSizeLimitsForTest",
                "parameters": [
                    { "name": "maxTotalSize", "type": "integer", "description": "Maximum total buffer size." },
                    { "name": "maxResourceSize", "type": "integer", "description": "Maximum per-resource size." }
                ],
                "description": "For testing.",
                "hidden": true
            }
        ],
        "events": [
            {
                "name": "requestWillBeSent",
                "description": "Fired when page is about to send HTTP request.",
                "parameters": [
                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
                    { "name": "frameId", "$ref": "Page.FrameId", "description": "Frame identifier.", "hidden": true },
                    { "name": "loaderId", "$ref": "LoaderId", "description": "Loader identifier." },
                    { "name": "documentURL", "type": "string", "description": "URL of the document this request is loaded for." },
                    { "name": "request", "$ref": "Request", "description": "Request data." },
                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
                    { "name": "wallTime", "$ref": "Timestamp", "hidden": true, "description": "UTC Timestamp." },
                    { "name": "initiator", "$ref": "Initiator", "description": "Request initiator." },
                    { "name": "redirectResponse", "optional": true, "$ref": "Response", "description": "Redirect response data." },
                    { "name": "type", "$ref": "Page.ResourceType", "optional": true, "hidden": true, "description": "Type of this resource." }
                ]
            },
            {
                "name": "requestServedFromCache",
                "description": "Fired if request ended up loading from cache.",
                "parameters": [
                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." }
                ]
            },
            {
                "name": "responseReceived",
                "description": "Fired when HTTP response is available.",
                "parameters": [
                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
                    { "name": "frameId", "$ref": "Page.FrameId", "description": "Frame identifier.", "hidden": true },
                    { "name": "loaderId", "$ref": "LoaderId", "description": "Loader identifier." },
                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
                    { "name": "type", "$ref": "Page.ResourceType", "description": "Resource type." },
                    { "name": "response", "$ref": "Response", "description": "Response data." }
                ]
            },
            {
                "name": "dataReceived",
                "description": "Fired when data chunk was received over the network.",
                "parameters": [
                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
                    { "name": "dataLength", "type": "integer", "description": "Data chunk length." },
                    { "name": "encodedDataLength", "type": "integer", "description": "Actual bytes received (might be less than dataLength for compressed encodings)." }
                ]
            },
            {
                "name": "loadingFinished",
                "description": "Fired when HTTP request has finished loading.",
                "parameters": [
                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
                    { "name": "encodedDataLength", "type": "number", "description": "Total number of bytes received for this request." }
                ]
            },
            {
                "name": "loadingFailed",
                "description": "Fired when HTTP request has failed to load.",
                "parameters": [
                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
                    { "name": "type", "$ref": "Page.ResourceType", "description": "Resource type." },
                    { "name": "errorText", "type": "string", "description": "User friendly error message." },
                    { "name": "canceled", "type": "boolean", "optional": true, "description": "True if loading was canceled." }
                ]
            },
            {
                "name": "webSocketWillSendHandshakeRequest",
                "description": "Fired when WebSocket is about to initiate handshake.",
                "parameters": [
                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
                    { "name": "wallTime", "$ref": "Timestamp", "hidden": true, "description": "UTC Timestamp." },
                    { "name": "request", "$ref": "WebSocketRequest", "description": "WebSocket request data." }
                ],
                "hidden": true
            },
            {
                "name": "webSocketHandshakeResponseReceived",
                "description": "Fired when WebSocket handshake response becomes available.",
                "parameters": [
                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
                    { "name": "response", "$ref": "WebSocketResponse", "description": "WebSocket response data." }
                ],
                "hidden": true
            },
            {
                "name": "webSocketCreated",
                "description": "Fired upon WebSocket creation.",
                "parameters": [
                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
                    { "name": "url", "type": "string", "description": "WebSocket request URL." }
                ],
                "hidden": true
            },
            {
                "name": "webSocketClosed",
                "description": "Fired when WebSocket is closed.",
                "parameters": [
                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." }
                ],
                "hidden": true
            },
            {
                "name": "webSocketFrameReceived",
                "description": "Fired when WebSocket frame is received.",
                "parameters": [
                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
                    { "name": "response", "$ref": "WebSocketFrame", "description": "WebSocket response data." }
                ],
                "hidden": true
            },
            {
                "name": "webSocketFrameError",
                "description": "Fired when WebSocket frame error occurs.",
                "parameters": [
                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
                    { "name": "errorMessage", "type": "string", "description": "WebSocket frame error message." }
                ],
                "hidden": true
            },
            {
                "name": "webSocketFrameSent",
                "description": "Fired when WebSocket frame is sent.",
                "parameters": [
                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
                    { "name": "response", "$ref": "WebSocketFrame", "description": "WebSocket response data." }
                ],
                "hidden": true
            },
            {
                "name": "eventSourceMessageReceived",
                "description": "Fired when EventSource message is received.",
                "parameters": [
                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
                    { "name": "eventName", "type": "string", "description": "Message type." },
                    { "name": "eventId", "type": "string", "description": "Message identifier." },
                    { "name": "data", "type": "string", "description": "Message content." }
                ],
                "hidden": true
            }
        ]
    },
    {
        "domain": "Database",
        "hidden": true,
        "types": [
            {
                "id": "DatabaseId",
                "type": "string",
                "description": "Unique identifier of Database object.",
                "hidden": true
            },
            {
                "id": "Database",
                "type": "object",
                "description": "Database object.",
                "hidden": true,
                "properties": [
                    { "name": "id", "$ref": "DatabaseId", "description": "Database ID." },
                    { "name": "domain", "type": "string", "description": "Database domain." },
                    { "name": "name", "type": "string", "description": "Database name." },
                    { "name": "version", "type": "string", "description": "Database version." }
                ]
            },
            {
                "id": "Error",
                "type": "object",
                "description": "Database error.",
                "properties": [
                    { "name": "message", "type": "string", "description": "Error message." },
                    { "name": "code", "type": "integer", "description": "Error code." }
                ]
            }
        ],
        "commands": [
            {
                "name": "enable",
                "description": "Enables database tracking, database events will now be delivered to the client."
            },
            {
                "name": "disable",
                "description": "Disables database tracking, prevents database events from being sent to the client."
            },
            {
                "name": "getDatabaseTableNames",
                "parameters": [
                    { "name": "databaseId", "$ref": "DatabaseId" }
                ],
                "returns": [
                    { "name": "tableNames", "type": "array", "items": { "type": "string" } }
                ]
            },
            {
                "name": "executeSQL",
                "async": true,
                "parameters": [
                    { "name": "databaseId", "$ref": "DatabaseId" },
                    { "name": "query", "type": "string" }
                ],
                "returns": [
                    { "name": "columnNames", "type": "array", "optional": true, "items": { "type": "string" } },
                    { "name": "values", "type": "array", "optional": true, "items": { "type": "any" }},
                    { "name": "sqlError", "$ref": "Error", "optional": true }
                ]
            }
        ],
        "events": [
            {
                "name": "addDatabase",
                "parameters": [
                    { "name": "database", "$ref": "Database" }
                ]
            }
        ]
    },
    {
        "domain": "IndexedDB",
        "hidden": true,
        "types": [
            {
                "id": "DatabaseWithObjectStores",
                "type": "object",
                "description": "Database with an array of object stores.",
                "properties": [
                    { "name": "name", "type": "string", "description": "Database name." },
                    { "name": "version", "type": "string", "description": "Deprecated string database version." },
                    { "name": "intVersion", "type": "integer", "description": "Integer database version." },
                    { "name": "objectStores", "type": "array", "items": { "$ref": "ObjectStore" }, "description": "Object stores in this database." }
                ]
            },
            {
                "id": "ObjectStore",
                "type": "object",
                "description": "Object store.",
                "properties": [
                    { "name": "name", "type": "string", "description": "Object store name." },
                    { "name": "keyPath", "$ref": "KeyPath", "description": "Object store key path." },
                    { "name": "autoIncrement", "type": "boolean", "description": "If true, object store has auto increment flag set." },
                    { "name": "indexes", "type": "array", "items": { "$ref": "ObjectStoreIndex" }, "description": "Indexes in this object store." }
                ]
            },
            {
                "id": "ObjectStoreIndex",
                "type": "object",
                "description": "Object store index.",
                "properties": [
                    { "name": "name", "type": "string", "description": "Index name." },
                    { "name": "keyPath", "$ref": "KeyPath", "description": "Index key path." },
                    { "name": "unique", "type": "boolean", "description": "If true, index is unique." },
                    { "name": "multiEntry", "type": "boolean", "description": "If true, index allows multiple entries for a key." }
                ]
            },
            {
                "id": "Key",
                "type": "object",
                "description": "Key.",
                "properties": [
                    { "name": "type", "type": "string", "enum": ["number", "string", "date", "array"], "description": "Key type." },
                    { "name": "number", "type": "number", "optional": true, "description": "Number value." },
                    { "name": "string", "type": "string", "optional": true, "description": "String value." },
                    { "name": "date", "type": "number", "optional": true, "description": "Date value." },
                    { "name": "array", "type": "array", "optional": true, "items": { "$ref": "Key" }, "description": "Array value." }
                ]
            },
            {
                "id": "KeyRange",
                "type": "object",
                "description": "Key range.",
                "properties": [
                    { "name": "lower", "$ref": "Key", "optional": true, "description": "Lower bound." },
                    { "name": "upper", "$ref": "Key", "optional": true, "description": "Upper bound." },
                    { "name": "lowerOpen", "type": "boolean", "description": "If true lower bound is open." },
                    { "name": "upperOpen", "type": "boolean", "description": "If true upper bound is open." }
                ]
            },
            {
                "id": "DataEntry",
                "type": "object",
                "description": "Data entry.",
                "properties": [
                    { "name": "key", "type": "string", "description": "JSON-stringified key object." },
                    { "name": "primaryKey", "type": "string", "description": "JSON-stringified primary key object." },
                    { "name": "value", "type": "string", "description": "JSON-stringified value object." }
                ]
            },
            {
                "id": "KeyPath",
                "type": "object",
                "description": "Key path.",
                "properties": [
                    { "name": "type", "type": "string", "enum": ["null", "string", "array"], "description": "Key path type." },
                    { "name": "string", "type": "string", "optional": true, "description": "String value." },
                    { "name": "array", "type": "array", "optional": true, "items": { "type": "string" }, "description": "Array value." }
                ]
            }
        ],
        "commands": [
            {
                "name": "enable",
                "description": "Enables events from backend."
            },
            {
                "name": "disable",
                "description": "Disables events from backend."
            },
            {
                "name": "requestDatabaseNames",
                "async": true,
                "parameters": [
                    { "name": "securityOrigin", "type": "string", "description": "Security origin." }
                ],
                "returns": [
                    { "name": "databaseNames", "type": "array", "items": { "type": "string" }, "description": "Database names for origin." }
                ],
                "description": "Requests database names for given security origin."
            },
            {
                "name": "requestDatabase",
                "async": true,
                "parameters": [
                    { "name": "securityOrigin", "type": "string", "description": "Security origin." },
                    { "name": "databaseName", "type": "string", "description": "Database name." }
                ],
                "returns": [
                    { "name": "databaseWithObjectStores", "$ref": "DatabaseWithObjectStores", "description": "Database with an array of object stores." }
                ],
                "description": "Requests database with given name in given frame."
            },
            {
                "name": "requestData",
                "async": true,
                "parameters": [
                    { "name": "securityOrigin", "type": "string", "description": "Security origin." },
                    { "name": "databaseName", "type": "string", "description": "Database name." },
                    { "name": "objectStoreName", "type": "string", "description": "Object store name." },
                    { "name": "indexName", "type": "string", "description": "Index name, empty string for object store data requests." },
                    { "name": "skipCount", "type": "integer", "description": "Number of records to skip." },
                    { "name": "pageSize", "type": "integer", "description": "Number of records to fetch." },
                    { "name": "keyRange", "$ref": "KeyRange", "optional": true, "description": "Key range." }
                ],
                "returns": [
                    { "name": "objectStoreDataEntries", "type": "array", "items": { "$ref": "DataEntry" }, "description": "Array of object store data entries." },
                    { "name": "hasMore", "type": "boolean", "description": "If true, there are more entries to fetch in the given range." }
                ],
                "description": "Requests data from object store or index."
            },
            {
                "name": "clearObjectStore",
                "async": true,
                "parameters": [
                    { "name": "securityOrigin", "type": "string", "description": "Security origin." },
                    { "name": "databaseName", "type": "string", "description": "Database name." },
                    { "name": "objectStoreName", "type": "string", "description": "Object store name." }
                ],
                "returns": [
                ],
                "description": "Clears all entries from an object store."
            }
        ]
    },
    {
        "domain": "CacheStorage",
        "hidden": true,
        "types": [
            {
                "id": "CacheId",
                "type": "string",
                "description": "Unique identifier of the Cache object."
            },
            {
                "id": "DataEntry",
                "type": "object",
                "description": "Data entry.",
                "properties": [
                    { "name": "request", "type": "string", "description": "Request url spec." },
                    { "name": "response", "type": "string", "description": "Response stataus text." }
                ]
            },
            {
                "id": "Cache",
                "type": "object",
                "description": "Cache identifier.",
                "properties": [
                    { "name": "cacheId", "$ref": "CacheId", "description": "An opaque unique id of the cache." },
                    { "name": "securityOrigin", "type": "string", "description": "Security origin of the cache." },
                    { "name": "cacheName", "type": "string", "description": "The name of the cache." }
                ]
            }
        ],
        "commands": [
            {
                "name": "requestCacheNames",
                "async": true,
                "parameters": [
                    { "name": "securityOrigin", "type": "string", "description": "Security origin." }
                ],
                "returns": [
                    { "name": "caches", "type": "array", "items": { "$ref": "Cache" }, "description": "Caches for the security origin." }
                ],
                "description": "Requests cache names."
            },
            {
                "name": "requestEntries",
                "async": true,
                "parameters": [
                    { "name": "cacheId", "$ref": "CacheId", "description": "ID of cache to get entries from." },
                    { "name": "skipCount", "type": "integer", "description": "Number of records to skip." },
                    { "name": "pageSize", "type": "integer", "description": "Number of records to fetch." }
                ],
                "returns": [
                    { "name": "cacheDataEntries", "type": "array", "items": { "$ref": "DataEntry" }, "description": "Array of object store data entries." },
                    { "name": "hasMore", "type": "boolean", "description": "If true, there are more entries to fetch in the given range." }
                ],
                "description": "Requests data from cache."
            },
            {
                "name": "deleteCache",
                "async": true,
                "parameters": [
                    { "name": "cacheId", "$ref": "CacheId", "description": "Id of cache for deletion." }
                ],
                "description": "Deletes a cache."
            },
            {
                "name": "deleteEntry",
                "async": true,
                "parameters": [
                    { "name": "cacheId", "$ref": "CacheId", "description": "Id of cache where the entry will be deleted." },
                    { "name": "request", "type": "string", "description": "URL spec of the request." }
                ],
                "description": "Deletes a cache entry."
            }
        ]
    },
    {
        "domain": "DOMStorage",
        "hidden": true,
        "description": "Query and modify DOM storage.",
        "types": [
            {
                "id": "StorageId",
                "type": "object",
                "description": "DOM Storage identifier.",
                "hidden": true,
                "properties": [
                    { "name": "securityOrigin", "type": "string", "description": "Security origin for the storage." },
                    { "name": "isLocalStorage", "type": "boolean", "description": "Whether the storage is local storage (not session storage)." }
                ]
            },
            {
                "id": "Item",
                "type": "array",
                "description": "DOM Storage item.",
                "hidden": true,
                "items": { "type": "string" }
            }
        ],
        "commands": [
            {
                "name": "enable",
                "description": "Enables storage tracking, storage events will now be delivered to the client."
            },
            {
                "name": "disable",
                "description": "Disables storage tracking, prevents storage events from being sent to the client."
            },
            {
                "name": "getDOMStorageItems",
                "parameters": [
                    { "name": "storageId", "$ref": "StorageId" }
                ],
                "returns": [
                    { "name": "entries", "type": "array", "items": { "$ref": "Item" } }
                ]
            },
            {
                "name": "setDOMStorageItem",
                "parameters": [
                    { "name": "storageId", "$ref": "StorageId" },
                    { "name": "key", "type": "string" },
                    { "name": "value", "type": "string" }
                ]
            },
            {
                "name": "removeDOMStorageItem",
                "parameters": [
                    { "name": "storageId", "$ref": "StorageId" },
                    { "name": "key", "type": "string" }
                ]
            }
        ],
        "events": [
            {
                "name": "domStorageItemsCleared",
                "parameters": [
                    { "name": "storageId",  "$ref": "StorageId" }
                ]
            },
            {
                "name": "domStorageItemRemoved",
                "parameters": [
                    { "name": "storageId",  "$ref": "StorageId" },
                    { "name": "key", "type": "string" }
                ]
            },
            {
                "name": "domStorageItemAdded",
                "parameters": [
                    { "name": "storageId",  "$ref": "StorageId" },
                    { "name": "key", "type": "string" },
                    { "name": "newValue", "type": "string" }
                ]
            },
            {
                "name": "domStorageItemUpdated",
                "parameters": [
                    { "name": "storageId",  "$ref": "StorageId" },
                    { "name": "key", "type": "string" },
                    { "name": "oldValue", "type": "string" },
                    { "name": "newValue", "type": "string" }
                ]
            }
        ]
    },
    {
        "domain": "ApplicationCache",
        "hidden": true,
        "types": [
            {
                "id": "ApplicationCacheResource",
                "type": "object",
                "description": "Detailed application cache resource information.",
                "properties": [
                    { "name": "url", "type": "string", "description": "Resource url." },
                    { "name": "size", "type": "integer", "description": "Resource size." },
                    { "name": "type", "type": "string", "description": "Resource type." }
                ]
            },
            {
                "id": "ApplicationCache",
                "type": "object",
                "description": "Detailed application cache information.",
                "properties": [
                    { "name": "manifestURL", "type": "string", "description": "Manifest URL." },
                    { "name": "size", "type": "number", "description": "Application cache size." },
                    { "name": "creationTime", "type": "number", "description": "Application cache creation time." },
                    { "name": "updateTime", "type": "number", "description": "Application cache update time." },
                    { "name": "resources", "type": "array", "items": { "$ref": "ApplicationCacheResource" }, "description": "Application cache resources." }
                ]
            },
            {
                "id": "FrameWithManifest",
                "type": "object",
                "description": "Frame identifier - manifest URL pair.",
                "properties": [
                    { "name": "frameId", "$ref": "Page.FrameId", "description": "Frame identifier." },
                    { "name": "manifestURL", "type": "string", "description": "Manifest URL." },
                    { "name": "status", "type": "integer", "description": "Application cache status." }
                ]
            }
        ],
        "commands": [
            {
                "name": "getFramesWithManifests",
                "returns": [
                    { "name": "frameIds", "type": "array", "items": { "$ref": "FrameWithManifest" }, "description": "Array of frame identifiers with manifest urls for each frame containing a document associated with some application cache." }
                ],
                "description": "Returns array of frame identifiers with manifest urls for each frame containing a document associated with some application cache."
            },
            {
                "name": "enable",
                "description": "Enables application cache domain notifications."
            },
            {
                "name": "getManifestForFrame",
                "parameters": [
                    { "name": "frameId", "$ref": "Page.FrameId", "description": "Identifier of the frame containing document whose manifest is retrieved." }
                ],
                "returns": [
                    { "name": "manifestURL", "type": "string", "description": "Manifest URL for document in the given frame." }
                ],
                "description": "Returns manifest URL for document in the given frame."
            },
            {
                "name": "getApplicationCacheForFrame",
                "parameters": [
                    { "name": "frameId", "$ref": "Page.FrameId", "description": "Identifier of the frame containing document whose application cache is retrieved." }
                ],
                "returns": [
                    { "name": "applicationCache", "$ref": "ApplicationCache", "description": "Relevant application cache data for the document in given frame." }
                ],
                "description": "Returns relevant application cache data for the document in given frame."
            }
        ],
        "events": [
            {
                "name": "applicationCacheStatusUpdated",
                "parameters": [
                    { "name": "frameId", "$ref": "Page.FrameId", "description": "Identifier of the frame containing document whose application cache updated status." },
                    { "name": "manifestURL", "type": "string", "description": "Manifest URL." },
                    { "name": "status", "type": "integer", "description": "Updated application cache status." }
                ]
            },
            {
                "name": "networkStateUpdated",
                "parameters": [
                    { "name": "isNowOnline", "type": "boolean" }
                ]
            }
        ]
    },
    {
        "domain": "FileSystem",
        "hidden": true,
        "types": [
            {
                "id": "Entry",
                "type": "object",
                "properties": [
                    { "name": "url", "type": "string", "description": "filesystem: URL for the entry." },
                    { "name": "name", "type": "string", "description": "The name of the file or directory." },
                    { "name": "isDirectory", "type": "boolean", "description": "True if the entry is a directory." },
                    { "name": "mimeType", "type": "string", "optional": true, "description": "MIME type of the entry, available for a file only." },
                    { "name": "resourceType", "$ref": "Page.ResourceType", "optional": true, "description": "ResourceType of the entry, available for a file only." },
                    { "name": "isTextFile", "type": "boolean", "optional": true, "description": "True if the entry is a text file." }
                ],
                "description": "Represents a browser side file or directory."
            },
            {
                "id": "Metadata",
                "type": "object",
                "properties": [
                    { "name": "modificationTime", "type": "number", "description": "Modification time." },
                    { "name": "size", "type": "number", "description": "File size. This field is always zero for directories." }
                ],
                "description": "Represents metadata of a file or entry."
            }
        ],
        "commands": [
            {
                "name": "enable",
                "description": "Enables events from backend."
            },
            {
                "name": "disable",
                "description": "Disables events from backend."
            },
            {
                "name": "requestFileSystemRoot",
                "async": true,
                "parameters": [
                    { "name": "origin", "type": "string", "description": "Security origin of requesting FileSystem. One of frames in current page needs to have this security origin." },
                    { "name": "type", "type": "string", "enum": ["temporary", "persistent"], "description": "FileSystem type of requesting FileSystem." }
                ],
                "returns": [
                    { "name": "errorCode", "type": "integer", "description": "0, if no error. Otherwise, errorCode is set to FileError::ErrorCode value." },
                    { "name": "root", "$ref": "Entry", "optional": true, "description": "Contains root of the requested FileSystem if the command completed successfully." }
                ],
                "description": "Returns root directory of the FileSystem, if exists."
            },
            {
                "name": "requestDirectoryContent",
                "async": true,
                "parameters": [
                    { "name": "url", "type": "string", "description": "URL of the directory that the frontend is requesting to read from." }
                ],
                "returns": [
                    { "name": "errorCode", "type": "integer", "description": "0, if no error. Otherwise, errorCode is set to FileError::ErrorCode value." },
                    { "name": "entries", "type": "array", "items": { "$ref": "Entry" }, "optional": true, "description": "Contains all entries on directory if the command completed successfully." }
                ],
                "description": "Returns content of the directory."
            },
            {
                "name": "requestMetadata",
                "async": true,
                "parameters": [
                    { "name": "url", "type": "string", "description": "URL of the entry that the frontend is requesting to get metadata from." }
                ],
                "returns": [
                    { "name": "errorCode", "type": "integer", "description": "0, if no error. Otherwise, errorCode is set to FileError::ErrorCode value." },
                    { "name": "metadata", "$ref": "Metadata", "optional": true, "description": "Contains metadata of the entry if the command completed successfully." }
                ],
                "description": "Returns metadata of the entry."
            },
            {
                "name": "requestFileContent",
                "async": true,
                "parameters": [
                    { "name": "url", "type": "string", "description": "URL of the file that the frontend is requesting to read from." },
                    { "name": "readAsText", "type": "boolean", "description": "True if the content should be read as text, otherwise the result will be returned as base64 encoded text." },
                    { "name": "start", "type": "integer", "optional": true, "description": "Specifies the start of range to read." },
                    { "name": "end", "type": "integer", "optional": true, "description": "Specifies the end of range to read exclusively." },
                    { "name": "charset", "type": "string", "optional": true, "description": "Overrides charset of the content when content is served as text." }
                ],
                "returns": [
                    { "name": "errorCode", "type": "integer", "description": "0, if no error. Otherwise, errorCode is set to FileError::ErrorCode value." },
                    { "name": "content", "type": "string", "optional": true, "description": "Content of the file." },
                    { "name": "charset", "type": "string", "optional": true, "description": "Charset of the content if it is served as text." }
                ],
                "description": "Returns content of the file. Result should be sliced into [start, end)."
            },
            {
                "name": "deleteEntry",
                "async": true,
                "parameters": [
                    { "name": "url", "type": "string", "description": "URL of the entry to delete." }
                ],
                "returns": [
                    { "name": "errorCode", "type": "integer", "description": "0, if no error. Otherwise errorCode is set to FileError::ErrorCode value." }
                ],
                "description": "Deletes specified entry. If the entry is a directory, the agent deletes children recursively."
            }
        ]
    },
    {
        "domain": "DOM",
        "description": "This domain exposes DOM read/write operations. Each DOM Node is represented with its mirror object that has an <code>id</code>. This <code>id</code> can be used to get additional information on the Node, resolve it into the JavaScript object wrapper, etc. It is important that client receives DOM events only for the nodes that are known to the client. Backend keeps track of the nodes that were sent to the client and never sends the same node twice. It is client's responsibility to collect information about the nodes that were sent to the client.<p>Note that <code>iframe</code> owner elements will return corresponding document elements as their child nodes.</p>",
        "types": [
            {
                "id": "NodeId",
                "type": "integer",
                "description": "Unique DOM node identifier."
            },
            {
                "id": "BackendNodeId",
                "type": "integer",
                "description": "Unique DOM node identifier used to reference a node that may not have been pushed to the front-end.",
                "hidden": true
            },
            {
                "id": "BackendNode",
                "type": "object",
                "properties": [
                    { "name": "nodeType", "type": "integer", "description": "<code>Node</code>'s nodeType." },
                    { "name": "nodeName", "type": "string", "description": "<code>Node</code>'s nodeName." },
                    { "name": "backendNodeId", "$ref": "BackendNodeId" }
                ],
                "hidden": true,
                "description": "Backend node with a friendly name."
            },
            {
                "id": "PseudoType",
                "type": "string",
                "enum": [
                    "first-line",
                    "first-letter",
                    "before",
                    "after",
                    "backdrop",
                    "selection",
                    "first-line-inherited",
                    "scrollbar",
                    "scrollbar-thumb",
                    "scrollbar-button",
                    "scrollbar-track",
                    "scrollbar-track-piece",
                    "scrollbar-corner",
                    "resizer",
                    "input-list-button"
                ],
                "description": "Pseudo element type."
            },
            {
                "id": "ShadowRootType",
                "type": "string",
                "enum": ["user-agent", "author"],
                "description": "Shadow root type."
            },
            {
                "id": "Node",
                "type": "object",
                "properties": [
                    { "name": "nodeId", "$ref": "NodeId", "description": "Node identifier that is passed into the rest of the DOM messages as the <code>nodeId</code>. Backend will only push node with given <code>id</code> once. It is aware of all requested nodes and will only fire DOM events for nodes known to the client." },
                    { "name": "nodeType", "type": "integer", "description": "<code>Node</code>'s nodeType." },
                    { "name": "nodeName", "type": "string", "description": "<code>Node</code>'s nodeName." },
                    { "name": "localName", "type": "string", "description": "<code>Node</code>'s localName." },
                    { "name": "nodeValue", "type": "string", "description": "<code>Node</code>'s nodeValue." },
                    { "name": "childNodeCount", "type": "integer", "optional": true, "description": "Child count for <code>Container</code> nodes." },
                    { "name": "children", "type": "array", "optional": true, "items": { "$ref": "Node" }, "description": "Child nodes of this node when requested with children." },
                    { "name": "attributes", "type": "array", "optional": true, "items": { "type": "string" }, "description": "Attributes of the <code>Element</code> node in the form of flat array <code>[name1, value1, name2, value2]</code>." },
                    { "name": "documentURL", "type": "string", "optional": true, "description": "Document URL that <code>Document</code> or <code>FrameOwner</code> node points to." },
                    { "name": "baseURL", "type": "string", "optional": true, "description": "Base URL that <code>Document</code> or <code>FrameOwner</code> node uses for URL completion.", "hidden": true },
                    { "name": "publicId", "type": "string", "optional": true, "description": "<code>DocumentType</code>'s publicId." },
                    { "name": "systemId", "type": "string", "optional": true, "description": "<code>DocumentType</code>'s systemId." },
                    { "name": "internalSubset", "type": "string", "optional": true, "description": "<code>DocumentType</code>'s internalSubset." },
                    { "name": "xmlVersion", "type": "string", "optional": true, "description": "<code>Document</code>'s XML version in case of XML documents." },
                    { "name": "name", "type": "string", "optional": true, "description": "<code>Attr</code>'s name." },
                    { "name": "value", "type": "string", "optional": true, "description": "<code>Attr</code>'s value." },
                    { "name": "pseudoType", "$ref": "PseudoType", "optional": true, "description": "Pseudo element type for this node." },
                    { "name": "shadowRootType", "$ref": "ShadowRootType", "optional": true, "description": "Shadow root type." },
                    { "name": "frameId", "$ref": "Page.FrameId", "optional": true, "description": "Frame ID for frame owner elements.", "hidden": true },
                    { "name": "contentDocument", "$ref": "Node", "optional": true, "description": "Content document for frame owner elements." },
                    { "name": "shadowRoots", "type": "array", "optional": true, "items": { "$ref": "Node" }, "description": "Shadow root list for given element host.", "hidden": true },
                    { "name": "templateContent", "$ref": "Node", "optional": true, "description": "Content document fragment for template elements.", "hidden": true },
                    { "name": "pseudoElements", "type": "array", "items": { "$ref": "Node" }, "optional": true, "description": "Pseudo elements associated with this node.", "hidden": true },
                    { "name": "importedDocument", "$ref": "Node", "optional": true, "description": "Import document for the HTMLImport links." },
                    { "name": "distributedNodes", "type": "array", "items": { "$ref": "BackendNode" }, "optional": true, "description": "Distributed nodes for given insertion point.", "hidden": true }
                ],
                "description": "DOM interaction is implemented in terms of mirror objects that represent the actual DOM nodes. DOMNode is a base node mirror type."
            },
            {
                "id": "RGBA",
                "type": "object",
                "properties": [
                    { "name": "r", "type": "integer", "description": "The red component, in the [0-255] range." },
                    { "name": "g", "type": "integer", "description": "The green component, in the [0-255] range." },
                    { "name": "b", "type": "integer", "description": "The blue component, in the [0-255] range." },
                    { "name": "a", "type": "number", "optional": true, "description": "The alpha component, in the [0-1] range (default: 1)." }
                ],
                "description": "A structure holding an RGBA color."
            },
            {
                "id": "Quad",
                "type": "array",
                "items": { "type": "number" },
                "minItems": 8,
                "maxItems": 8,
                "description": "An array of quad vertices, x immediately followed by y for each point, points clock-wise.",
                "hidden": true
            },
            {
                "id": "BoxModel",
                "type": "object",
                "hidden": true,
                "properties": [
                    { "name": "content", "$ref": "Quad", "description": "Content box" },
                    { "name": "padding", "$ref": "Quad", "description": "Padding box" },
                    { "name": "border", "$ref": "Quad", "description": "Border box" },
                    { "name": "margin", "$ref": "Quad", "description": "Margin box" },
                    { "name": "width", "type": "integer", "description": "Node width" },
                    { "name": "height", "type": "integer", "description": "Node height" },
                    { "name": "shapeOutside", "$ref": "ShapeOutsideInfo", "optional": true, "description": "Shape outside coordinates" }
                ],
                "description": "Box model."
            },
            {
                "id": "ShapeOutsideInfo",
                "type": "object",
                "hidden": true,
                "properties": [
                    { "name": "bounds", "$ref": "Quad", "description": "Shape bounds" },
                    { "name": "shape", "type": "array", "items": { "type": "any"}, "description": "Shape coordinate details" },
                    { "name": "marginShape", "type": "array", "items": { "type": "any"}, "description": "Margin shape bounds" }
                ],
                "description": "CSS Shape Outside details."
            },
            {
                "id": "Rect",
                "type": "object",
                "hidden": true,
                "properties": [
                    { "name": "x", "type": "number", "description": "X coordinate" },
                    { "name": "y", "type": "number", "description": "Y coordinate" },
                    { "name": "width", "type": "number", "description": "Rectangle width" },
                    { "name": "height", "type": "number", "description": "Rectangle height" }
                ],
                "description": "Rectangle."
            },
            {
                "id": "HighlightConfig",
                "type": "object",
                "properties": [
                    { "name": "showInfo", "type": "boolean", "optional": true, "description": "Whether the node info tooltip should be shown (default: false)." },
                    { "name": "showRulers", "type": "boolean", "optional": true, "description": "Whether the rulers should be shown (default: false)." },
                    { "name": "showExtensionLines", "type": "boolean", "optional": true, "description": "Whether the extension lines from node to the rulers should be shown (default: false)." },
                    { "name": "showLayoutEditor", "type": "boolean", "optional": true, "hidden": true},
                    { "name": "contentColor", "$ref": "RGBA", "optional": true, "description": "The content box highlight fill color (default: transparent)." },
                    { "name": "paddingColor", "$ref": "RGBA", "optional": true, "description": "The padding highlight fill color (default: transparent)." },
                    { "name": "borderColor", "$ref": "RGBA", "optional": true, "description": "The border highlight fill color (default: transparent)." },
                    { "name": "marginColor", "$ref": "RGBA", "optional": true, "description": "The margin highlight fill color (default: transparent)." },
                    { "name": "eventTargetColor", "$ref": "RGBA", "optional": true, "hidden": true, "description": "The event target element highlight fill color (default: transparent)." },
                    { "name": "shapeColor", "$ref": "RGBA", "optional": true, "hidden": true, "description": "The shape outside fill color (default: transparent)." },
                    { "name": "shapeMarginColor", "$ref": "RGBA", "optional": true, "hidden": true, "description": "The shape margin fill color (default: transparent)." }
                ],
                "description": "Configuration data for the highlighting of page elements."
            }
        ],
        "commands": [
            {
                "name": "enable",
                "description": "Enables DOM agent for the given page."
            },
            {
                "name": "disable",
                "description": "Disables DOM agent for the given page."
            },
            {
                "name": "getDocument",
                "returns": [
                    { "name": "root", "$ref": "Node", "description": "Resulting node." }
                ],
                "description": "Returns the root DOM node to the caller."
            },
            {
                "name": "requestChildNodes",
                "parameters": [
                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to get children for." },
                    { "name": "depth", "type": "integer", "optional": true, "description": "The maximum depth at which children should be retrieved, defaults to 1. Use -1 for the entire subtree or provide an integer larger than 0.", "hidden": true }
                ],
                "description": "Requests that children of the node with given id are returned to the caller in form of <code>setChildNodes</code> events where not only immediate children are retrieved, but all children down to the specified depth."
            },
            {
                "name": "querySelector",
                "parameters": [
                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to query upon." },
                    { "name": "selector", "type": "string", "description": "Selector string." }
                ],
                "returns": [
                    { "name": "nodeId", "$ref": "NodeId", "description": "Query selector result." }
                ],
                "description": "Executes <code>querySelector</code> on a given node."
            },
            {
                "name": "querySelectorAll",
                "parameters": [
                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to query upon." },
                    { "name": "selector", "type": "string", "description": "Selector string." }
                ],
                "returns": [
                    { "name": "nodeIds", "type": "array", "items": { "$ref": "NodeId" }, "description": "Query selector result." }
                ],
                "description": "Executes <code>querySelectorAll</code> on a given node."
            },
            {
                "name": "setNodeName",
                "parameters": [
                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to set name for." },
                    { "name": "name", "type": "string", "description": "New node's name." }
                ],
                "returns": [
                    { "name": "nodeId", "$ref": "NodeId", "description": "New node's id." }
                ],
                "description": "Sets node name for a node with given id."
            },
            {
                "name": "setNodeValue",
                "parameters": [
                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to set value for." },
                    { "name": "value", "type": "string", "description": "New node's value." }
                ],
                "description": "Sets node value for a node with given id."
            },
            {
                "name": "removeNode",
                "parameters": [
                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to remove." }
                ],
                "description": "Removes node with given id."
            },
            {
                "name": "setAttributeValue",
                "parameters": [
                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the element to set attribute for." },
                    { "name": "name", "type": "string", "description": "Attribute name." },
                    { "name": "value", "type": "string", "description": "Attribute value." }
                ],
                "description": "Sets attribute for an element with given id."
            },
            {
                "name": "setAttributesAsText",
                "parameters": [
                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the element to set attributes for." },
                    { "name": "text", "type": "string", "description": "Text with a number of attributes. Will parse this text using HTML parser." },
                    { "name": "name", "type": "string", "optional": true, "description": "Attribute name to replace with new attributes derived from text in case text parsed successfully." }
                ],
                "description": "Sets attributes on element with given id. This method is useful when user edits some existing attribute value and types in several attribute name/value pairs."
            },
            {
                "name": "removeAttribute",
                "parameters": [
                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the element to remove attribute from." },
                    { "name": "name", "type": "string", "description": "Name of the attribute to remove." }
                ],
                "description": "Removes attribute with given name from an element with given id."
            },
            {
                "name": "getOuterHTML",
                "parameters": [
                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to get markup for." }
                ],
                "returns": [
                    { "name": "outerHTML", "type": "string", "description": "Outer HTML markup." }
                ],
                "description": "Returns node's HTML markup."
            },
            {
                "name": "setOuterHTML",
                "parameters": [
                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to set markup for." },
                    { "name": "outerHTML", "type": "string", "description": "Outer HTML markup to set." }
                ],
                "description": "Sets node HTML markup, returns new node id."
            },
            {
                "name": "performSearch",
                "parameters": [
                    { "name": "query", "type": "string", "description": "Plain text or query selector or XPath search query." },
                    { "name": "includeUserAgentShadowDOM", "type": "boolean", "optional": true, "description": "True to search in user agent shadow DOM.", "hidden": true }
                ],
                "returns": [
                    { "name": "searchId", "type": "string", "description": "Unique search session identifier." },
                    { "name": "resultCount", "type": "integer", "description": "Number of search results." }
                ],
                "description": "Searches for a given string in the DOM tree. Use <code>getSearchResults</code> to access search results or <code>cancelSearch</code> to end this search session.",
                "hidden": true
            },
            {
                "name": "getSearchResults",
                "parameters": [
                    { "name": "searchId", "type": "string", "description": "Unique search session identifier." },
                    { "name": "fromIndex", "type": "integer", "description": "Start index of the search result to be returned." },
                    { "name": "toIndex", "type": "integer", "description": "End index of the search result to be returned." }
                ],
                "returns": [
                    { "name": "nodeIds", "type": "array", "items": { "$ref": "NodeId" }, "description": "Ids of the search result nodes." }
                ],
                "description": "Returns search results from given <code>fromIndex</code> to given <code>toIndex</code> from the sarch with the given identifier.",
                "hidden": true
            },
            {
                "name": "discardSearchResults",
                "parameters": [
                    { "name": "searchId", "type": "string", "description": "Unique search session identifier." }
                ],
                "description": "Discards search results from the session with the given id. <code>getSearchResults</code> should no longer be called for that search.",
                "hidden": true
            },
            {
                "name": "requestNode",
                "parameters": [
                    { "name": "objectId", "$ref": "Runtime.RemoteObjectId", "description": "JavaScript object id to convert into node." }
                ],
                "returns": [
                    { "name": "nodeId", "$ref": "NodeId", "description": "Node id for given object." }
                ],
                "description": "Requests that the node is sent to the caller given the JavaScript node object reference. All nodes that form the path from the node to the root are also sent to the client as a series of <code>setChildNodes</code> notifications."
            },
            {
                "name": "setInspectModeEnabled",
                "hidden": true,
                "parameters": [
                    { "name": "enabled", "type": "boolean", "description": "True to enable inspection mode, false to disable it." },
                    { "name": "inspectUAShadowDOM", "type": "boolean", "optional": true, "description": "True to enable inspection mode for user agent shadow DOM." },
                    { "name": "highlightConfig", "$ref": "HighlightConfig", "optional": true, "description": "A descriptor for the highlight appearance of hovered-over nodes. May be omitted if <code>enabled == false</code>." }
                ],
                "description": "Enters the 'inspect' mode. In this mode, elements that user is hovering over are highlighted. Backend then generates 'inspectNodeRequested' event upon element selection."
            },
            {
                "name": "highlightRect",
                "parameters": [
                    { "name": "x", "type": "integer", "description": "X coordinate" },
                    { "name": "y", "type": "integer", "description": "Y coordinate" },
                    { "name": "width", "type": "integer", "description": "Rectangle width" },
                    { "name": "height", "type": "integer", "description": "Rectangle height" },
                    { "name": "color", "$ref": "RGBA", "optional": true, "description": "The highlight fill color (default: transparent)." },
                    { "name": "outlineColor", "$ref": "RGBA", "optional": true, "description": "The highlight outline color (default: transparent)." }
                ],
                "description": "Highlights given rectangle. Coordinates are absolute with respect to the main frame viewport."
            },
            {
                "name": "highlightQuad",
                "parameters": [
                    { "name": "quad", "$ref": "Quad", "description": "Quad to highlight" },
                    { "name": "color", "$ref": "RGBA", "optional": true, "description": "The highlight fill color (default: transparent)." },
                    { "name": "outlineColor", "$ref": "RGBA", "optional": true, "description": "The highlight outline color (default: transparent)." }
                ],
                "description": "Highlights given quad. Coordinates are absolute with respect to the main frame viewport.",
                "hidden": true
            },
            {
                "name": "highlightNode",
                "parameters": [
                    { "name": "highlightConfig", "$ref": "HighlightConfig",  "description": "A descriptor for the highlight appearance." },
                    { "name": "nodeId", "$ref": "NodeId", "optional": true, "description": "Identifier of the node to highlight." },
                    { "name": "backendNodeId", "$ref": "BackendNodeId", "optional": true, "description": "Identifier of the backend node to highlight." },
                    { "name": "objectId", "$ref": "Runtime.RemoteObjectId", "optional": true, "description": "JavaScript object id of the node to be highlighted.", "hidden": true }
                ],
                "description": "Highlights DOM node with given id or with the given JavaScript object wrapper. Either nodeId or objectId must be specified."
            },
            {
                "name": "hideHighlight",
                "description": "Hides DOM node highlight."
            },
            {
                "name": "highlightFrame",
                "parameters": [
                    { "name": "frameId", "$ref": "Page.FrameId", "description": "Identifier of the frame to highlight." },
                    { "name": "contentColor", "$ref": "RGBA", "optional": true, "description": "The content box highlight fill color (default: transparent)." },
                    { "name": "contentOutlineColor", "$ref": "RGBA", "optional": true, "description": "The content box highlight outline color (default: transparent)." }
                ],
                "description": "Highlights owner element of the frame with given id.",
                "hidden": true
            },
            {
                "name": "pushNodeByPathToFrontend",
                "parameters": [
                    { "name": "path", "type": "string", "description": "Path to node in the proprietary format." }
                ],
                "returns": [
                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node for given path." }
                ],
                "description": "Requests that the node is sent to the caller given its path. // FIXME, use XPath",
                "hidden": true
            },
            {
                "name": "pushNodesByBackendIdsToFrontend",
                "parameters": [
                    { "name": "backendNodeIds", "type": "array", "items": {"$ref": "BackendNodeId"}, "description": "The array of backend node ids." }
                ],
                "returns": [
                    { "name": "nodeIds", "type": "array", "items": {"$ref": "NodeId"}, "description": "The array of ids of pushed nodes that correspond to the backend ids specified in backendNodeIds." }
                ],
                "description": "Requests that a batch of nodes is sent to the caller given their backend node ids.",
                "hidden": true
            },
            {
                "name": "setInspectedNode",
                "parameters": [
                    { "name": "nodeId", "$ref": "NodeId", "description": "DOM node id to be accessible by means of $x command line API." }
                ],
                "description": "Enables console to refer to the node with given id via $x (see Command Line API for more details $x functions).",
                "hidden": true
            },
            {
                "name": "resolveNode",
                "parameters": [
                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to resolve." },
                    { "name": "objectGroup", "type": "string", "optional": true, "description": "Symbolic group name that can be used to release multiple objects." }
                ],
                "returns": [
                    { "name": "object", "$ref": "Runtime.RemoteObject", "description": "JavaScript object wrapper for given node." }
                ],
                "description": "Resolves JavaScript node object for given node id."
            },
            {
                "name": "getAttributes",
                "parameters": [
                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to retrieve attibutes for." }
                ],
                "returns": [
                    { "name": "attributes", "type": "array", "items": { "type": "string" }, "description": "An interleaved array of node attribute names and values." }
                ],
                "description": "Returns attributes for the specified node."
            },
            {
                "name": "copyTo",
                "parameters": [
                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to copy." },
                    { "name": "targetNodeId", "$ref": "NodeId", "description": "Id of the element to drop the copy into." },
                    { "name": "insertBeforeNodeId", "$ref": "NodeId", "optional": true, "description": "Drop the copy before this node (if absent, the copy becomes the last child of <code>targetNodeId</code>)." }
                ],
                "returns": [
                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node clone." }
                ],
                "description": "Creates a deep copy of the specified node and places it into the target container before the given anchor.",
                "hidden": true
            },
            {
                "name": "moveTo",
                "parameters": [
                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to move." },
                    { "name": "targetNodeId", "$ref": "NodeId", "description": "Id of the element to drop the moved node into." },
                    { "name": "insertBeforeNodeId", "$ref": "NodeId", "optional": true, "description": "Drop node before this one (if absent, the moved node becomes the last child of <code>targetNodeId</code>)." }
                ],
                "returns": [
                    { "name": "nodeId", "$ref": "NodeId", "description": "New id of the moved node." }
                ],
                "description": "Moves node into the new container, places it before the given anchor."
            },
            {
                "name": "undo",
                "description": "Undoes the last performed action.",
                "hidden": true
            },
            {
                "name": "redo",
                "description": "Re-does the last undone action.",
                "hidden": true
            },
            {
                "name": "markUndoableState",
                "description": "Marks last undoable state.",
                "hidden": true
            },
            {
                "name": "focus",
                "parameters": [
                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to focus." }
                ],
                "description": "Focuses the given element.",
                "hidden": true
            },
            {
                "name": "setFileInputFiles",
                "parameters": [
                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the file input node to set files for." },
                    { "name": "files", "type": "array", "items": { "type": "string" }, "description": "Array of file paths to set." }
                ],
                "description": "Sets files for the given file input element.",
                "hidden": true,
                "handlers": ["browser", "renderer"]
            },
            {
                "name": "getBoxModel",
                "parameters": [
                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to get box model for." }
                ],
                "returns": [
                    { "name": "model", "$ref": "BoxModel", "description": "Box model for the node." }
                ],
                "description": "Returns boxes for the currently selected nodes.",
                "hidden": true
            },
            {
                "name": "getNodeForLocation",
                "parameters": [
                    { "name": "x", "type": "integer", "description": "X coordinate." },
                    { "name": "y", "type": "integer", "description": "Y coordinate." }
                ],
                "returns": [
                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node at given coordinates." }
                ],
                "description": "Returns node id at given location.",
                "hidden": true
            },
            {
                "name": "getRelayoutBoundary",
                "parameters": [
                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node." }
                ],
                "returns": [
                    { "name": "nodeId", "$ref": "NodeId", "description": "Relayout boundary node id for the given node." }
                ],
                "description": "Returns the id of the nearest ancestor that is a relayout boundary.",
                "hidden": true
            },
            {
                "name": "getHighlightObjectForTest",
                "parameters": [
                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to get highlight object for." }
                ],
                "returns": [
                    { "name": "highlight", "type": "object", "description": "Highlight data for the node." }
                ],
                "description": "For testing.",
                "hidden": true
            }
        ],
        "events": [
            {
                "name": "documentUpdated",
                "description": "Fired when <code>Document</code> has been totally updated. Node ids are no longer valid."
            },
            {
                "name": "inspectNodeRequested",
                "parameters": [
                    { "name": "backendNodeId", "$ref": "BackendNodeId", "description": "Id of the node to inspect." }
                ],
                "description": "Fired when the node should be inspected. This happens after call to <code>setInspectModeEnabled</code>.",
                "hidden" : true
            },
            {
                "name": "setChildNodes",
                "parameters": [
                    { "name": "parentId", "$ref": "NodeId", "description": "Parent node id to populate with children." },
                    { "name": "nodes", "type": "array", "items": { "$ref": "Node" }, "description": "Child nodes array." }
                ],
                "description": "Fired when backend wants to provide client with the missing DOM structure. This happens upon most of the calls requesting node ids."
            },
            {
                "name": "attributeModified",
                "parameters": [
                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node that has changed." },
                    { "name": "name", "type": "string", "description": "Attribute name." },
                    { "name": "value", "type": "string", "description": "Attribute value." }
                ],
                "description": "Fired when <code>Element</code>'s attribute is modified."
            },
            {
                "name": "attributeRemoved",
                "parameters": [
                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node that has changed." },
                    { "name": "name", "type": "string", "description": "A ttribute name." }
                ],
                "description": "Fired when <code>Element</code>'s attribute is removed."
            },
            {
                "name": "inlineStyleInvalidated",
                "parameters": [
                    { "name": "nodeIds", "type": "array", "items": { "$ref": "NodeId" }, "description": "Ids of the nodes for which the inline styles have been invalidated." }
                ],
                "description": "Fired when <code>Element</code>'s inline style is modified via a CSS property modification.",
                "hidden": true
            },
            {
                "name": "characterDataModified",
                "parameters": [
                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node that has changed." },
                    { "name": "characterData", "type": "string", "description": "New text value." }
                ],
                "description": "Mirrors <code>DOMCharacterDataModified</code> event."
            },
            {
                "name": "childNodeCountUpdated",
                "parameters": [
                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node that has changed." },
                    { "name": "childNodeCount", "type": "integer", "description": "New node count." }
                ],
                "description": "Fired when <code>Container</code>'s child node count has changed."
            },
            {
                "name": "childNodeInserted",
                "parameters": [
                    { "name": "parentNodeId", "$ref": "NodeId", "description": "Id of the node that has changed." },
                    { "name": "previousNodeId", "$ref": "NodeId", "description": "If of the previous siblint." },
                    { "name": "node", "$ref": "Node", "description": "Inserted node data." }
                ],
                "description": "Mirrors <code>DOMNodeInserted</code> event."
            },
            {
                "name": "childNodeRemoved",
                "parameters": [
                    { "name": "parentNodeId", "$ref": "NodeId", "description": "Parent id." },
                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node that has been removed." }
                ],
                "description": "Mirrors <code>DOMNodeRemoved</code> event."
            },
            {
                "name": "shadowRootPushed",
                "parameters": [
                    { "name": "hostId", "$ref": "NodeId", "description": "Host element id." },
                    { "name": "root", "$ref": "Node", "description": "Shadow root." }
                ],
                "description": "Called when shadow root is pushed into the element.",
                "hidden": true
            },
            {
                "name": "shadowRootPopped",
                "parameters": [
                    { "name": "hostId", "$ref": "NodeId", "description": "Host element id." },
                    { "name": "rootId", "$ref": "NodeId", "description": "Shadow root id." }
                ],
                "description": "Called when shadow root is popped from the element.",
                "hidden": true
            },
            {
                "name": "pseudoElementAdded",
                "parameters": [
                    { "name": "parentId", "$ref": "NodeId", "description": "Pseudo element's parent element id." },
                    { "name": "pseudoElement", "$ref": "Node", "description": "The added pseudo element." }
                ],
                "description": "Called when a pseudo element is added to an element.",
                "hidden": true
            },
            {
                "name": "pseudoElementRemoved",
                "parameters": [
                    { "name": "parentId", "$ref": "NodeId", "description": "Pseudo element's parent element id." },
                    { "name": "pseudoElementId", "$ref": "NodeId", "description": "The removed pseudo element id." }
                ],
                "description": "Called when a pseudo element is removed from an element.",
                "hidden": true
            },
            {
                "name": "distributedNodesUpdated",
                "parameters": [
                    { "name": "insertionPointId", "$ref": "NodeId", "description": "Insertion point where distrubuted nodes were updated." },
                    { "name": "distributedNodes", "type": "array", "items": { "$ref": "BackendNode" }, "description": "Distributed nodes for given insertion point." }
                ],
                "description": "Called when distrubution is changed.",
                "hidden": true
            }
        ]
    },
    {
        "domain": "CSS",
        "hidden": true,
        "description": "This domain exposes CSS read/write operations. All CSS objects (stylesheets, rules, and styles) have an associated <code>id</code> used in subsequent operations on the related object. Each object type has a specific <code>id</code> structure, and those are not interchangeable between objects of different kinds. CSS objects can be loaded using the <code>get*ForNode()</code> calls (which accept a DOM node id). A client can also discover all the existing stylesheets with the <code>getAllStyleSheets()</code> method (or keeping track of the <code>styleSheetAdded</code>/<code>styleSheetRemoved</code> events) and subsequently load the required stylesheet contents using the <code>getStyleSheet[Text]()</code> methods.",
        "types": [
            {
                "id": "StyleSheetId",
                "type": "string"
            },
            {
                "id": "StyleSheetOrigin",
                "type": "string",
                "enum": ["injected", "user-agent", "inspector", "regular"],
                "description": "Stylesheet type: \"injected\" for stylesheets injected via extension, \"user-agent\" for user-agent stylesheets, \"inspector\" for stylesheets created by the inspector (i.e. those holding the \"via inspector\" rules), \"regular\" for regular stylesheets."
            },
            {
                "id": "PseudoIdMatches",
                "type": "object",
                "properties": [
                    { "name": "pseudoId", "type": "integer", "description": "Pseudo style identifier (see <code>enum PseudoId</code> in <code>ComputedStyleConstants.h</code>)."},
                    { "name": "matches", "type": "array", "items": { "$ref": "RuleMatch" }, "description": "Matches of CSS rules applicable to the pseudo style."}
                ],
                "description": "CSS rule collection for a single pseudo style."
            },
            {
                "id": "InheritedStyleEntry",
                "type": "object",
                "properties": [
                    { "name": "inlineStyle", "$ref": "CSSStyle", "optional": true, "description": "The ancestor node's inline style, if any, in the style inheritance chain." },
                    { "name": "matchedCSSRules", "type": "array", "items": { "$ref": "RuleMatch" }, "description": "Matches of CSS rules matching the ancestor node in the style inheritance chain." }
                ],
                "description": "Inherited CSS rule collection from ancestor node."
            },
            {
                "id": "RuleMatch",
                "type": "object",
                "properties": [
                    { "name": "rule", "$ref": "CSSRule", "description": "CSS rule in the match." },
                    { "name": "matchingSelectors", "type": "array", "items": { "type": "integer" }, "description": "Matching selector indices in the rule's selectorList selectors (0-based)." }
                ],
                "description": "Match data for a CSS rule."
            },
            {
                "id": "Selector",
                "type": "object",
                "properties": [
                    { "name": "value", "type": "string", "description": "Selector text." },
                    { "name": "range", "$ref": "SourceRange", "optional": true, "description": "Selector range in the underlying resource (if available)." }
                ],
                "description": "Data for a simple selector (these are delimited by commas in a selector list)."
            },
            {
                "id": "SelectorList",
                "type": "object",
                "properties": [
                    { "name": "selectors", "type": "array", "items": { "$ref": "Selector" }, "description": "Selectors in the list." },
                    { "name": "text", "type": "string", "description": "Rule selector text." }
                ],
                "description": "Selector list data."
            },
            {
                "id": "CSSStyleSheetHeader",
                "type": "object",
                "properties": [
                    { "name": "styleSheetId", "$ref": "StyleSheetId", "description": "The stylesheet identifier."},
                    { "name": "frameId", "$ref": "Page.FrameId", "description": "Owner frame identifier."},
                    { "name": "sourceURL", "type": "string", "description": "Stylesheet resource URL."},
                    { "name": "sourceMapURL", "type": "string", "optional": true, "description": "URL of source map associated with the stylesheet (if any)." },
                    { "name": "origin", "$ref": "StyleSheetOrigin", "description": "Stylesheet origin."},
                    { "name": "title", "type": "string", "description": "Stylesheet title."},
                    { "name": "ownerNode", "$ref": "DOM.BackendNodeId", "optional": true, "description": "The backend id for the owner node of the stylesheet." },
                    { "name": "disabled", "type": "boolean", "description": "Denotes whether the stylesheet is disabled."},
                    { "name": "hasSourceURL", "type": "boolean", "optional": true, "description": "Whether the sourceURL field value comes from the sourceURL comment." },
                    { "name": "isInline", "type": "boolean", "description": "Whether this stylesheet is created for STYLE tag by parser. This flag is not set for document.written STYLE tags." },
                    { "name": "startLine", "type": "number", "description": "Line offset of the stylesheet within the resource (zero based)." },
                    { "name": "startColumn", "type": "number", "description": "Column offset of the stylesheet within the resource (zero based)." }
                ],
                "description": "CSS stylesheet metainformation."
            },
            {
                "id": "CSSRule",
                "type": "object",
                "properties": [
                    { "name": "styleSheetId", "$ref": "StyleSheetId", "optional": true, "description": "The css style sheet identifier (absent for user agent stylesheet and user-specified stylesheet rules) this rule came from." },
                    { "name": "selectorList", "$ref": "SelectorList", "description": "Rule selector data." },
                    { "name": "origin", "$ref": "StyleSheetOrigin", "description": "Parent stylesheet's origin."},
                    { "name": "style", "$ref": "CSSStyle", "description": "Associated style declaration." },
                    { "name": "media", "type": "array", "items": { "$ref": "CSSMedia" }, "optional": true, "description": "Media list array (for rules involving media queries). The array enumerates media queries starting with the innermost one, going outwards." }
                ],
                "description": "CSS rule representation."
            },
            {
                "id": "SourceRange",
                "type": "object",
                "properties": [
                    { "name": "startLine", "type": "integer", "description": "Start line of range." },
                    { "name": "startColumn", "type": "integer", "description": "Start column of range (inclusive)." },
                    { "name": "endLine", "type": "integer", "description": "End line of range" },
                    { "name": "endColumn", "type": "integer", "description": "End column of range (exclusive)." }
                ],
                "description": "Text range within a resource. All numbers are zero-based."
            },
            {
                "id": "ShorthandEntry",
                "type": "object",
                "properties": [
                    { "name": "name", "type": "string", "description": "Shorthand name." },
                    { "name": "value", "type": "string", "description": "Shorthand value." },
                    { "name": "important", "type": "boolean", "optional": true, "description": "Whether the property has \"!important\" annotation (implies <code>false</code> if absent)." }
                ]
            },
            {
                "id": "CSSComputedStyleProperty",
                "type": "object",
                "properties": [
                    { "name": "name", "type": "string", "description": "Computed style property name." },
                    { "name": "value", "type": "string", "description": "Computed style property value." }
                ]
            },
            {
                "id": "CSSStyle",
                "type": "object",
                "properties": [
                    { "name": "styleSheetId", "$ref": "StyleSheetId", "optional": true, "description": "The css style sheet identifier (absent for user agent stylesheet and user-specified stylesheet rules) this rule came from." },
                    { "name": "cssProperties", "type": "array", "items": { "$ref": "CSSProperty" }, "description": "CSS properties in the style." },
                    { "name": "shorthandEntries", "type": "array", "items": { "$ref": "ShorthandEntry" }, "description": "Computed values for all shorthands found in the style." },
                    { "name": "cssText", "type": "string", "optional": true, "description": "Style declaration text (if available)." },
                    { "name": "range", "$ref": "SourceRange", "optional": true, "description": "Style declaration range in the enclosing stylesheet (if available)." }
                ],
                "description": "CSS style representation."
            },
            {
                "id": "CSSProperty",
                "type": "object",
                "properties": [
                    { "name": "name", "type": "string", "description": "The property name." },
                    { "name": "value", "type": "string", "description": "The property value." },
                    { "name": "important", "type": "boolean", "optional": true, "description": "Whether the property has \"!important\" annotation (implies <code>false</code> if absent)." },
                    { "name": "implicit", "type": "boolean", "optional": true, "description": "Whether the property is implicit (implies <code>false</code> if absent)." },
                    { "name": "text", "type": "string", "optional": true, "description": "The full property text as specified in the style." },
                    { "name": "parsedOk", "type": "boolean", "optional": true, "description": "Whether the property is understood by the browser (implies <code>true</code> if absent)." },
                    { "name": "disabled", "type": "boolean", "optional": true, "description": "Whether the property is disabled by the user (present for source-based properties only)." },
                    { "name": "range", "$ref": "SourceRange", "optional": true, "description": "The entire property range in the enclosing style declaration (if available)." }
                ],
                "description": "CSS property declaration data."
            },
            {
                "id": "CSSMedia",
                "type": "object",
                "properties": [
                    { "name": "text", "type": "string", "description": "Media query text." },
                    { "name": "source", "type": "string", "enum": ["mediaRule", "importRule", "linkedSheet", "inlineSheet"], "description": "Source of the media query: \"mediaRule\" if specified by a @media rule, \"importRule\" if specified by an @import rule, \"linkedSheet\" if specified by a \"media\" attribute in a linked stylesheet's LINK tag, \"inlineSheet\" if specified by a \"media\" attribute in an inline stylesheet's STYLE tag." },
                    { "name": "sourceURL", "type": "string", "optional": true, "description": "URL of the document containing the media query description." },
                    { "name": "range", "$ref": "SourceRange", "optional": true, "description": "The associated rule (@media or @import) header range in the enclosing stylesheet (if available)." },
                    { "name": "parentStyleSheetId", "$ref": "StyleSheetId", "optional": true, "description": "Identifier of the stylesheet containing this object (if exists)." },
                    { "name": "mediaList", "type": "array", "items": { "$ref": "MediaQuery" }, "optional": true, "hidden": true, "description": "Array of media queries." }
                ],
                "description": "CSS media rule descriptor."
            },
            {
                "id": "MediaQuery",
                "type": "object",
                "properties": [
                    { "name": "expressions", "type": "array", "items": { "$ref": "MediaQueryExpression" }, "description": "Array of media query expressions." },
                    { "name": "active", "type": "boolean", "description": "Whether the media query condition is satisfied." }
                ],
                "description": "Media query descriptor.",
                "hidden": true
            },
            {
                "id": "MediaQueryExpression",
                "type": "object",
                "properties": [
                    { "name": "value", "type": "number", "description": "Media query expression value."},
                    { "name": "unit", "type": "string", "description": "Media query expression units."},
                    { "name": "feature", "type": "string", "description": "Media query expression feature."},
                    { "name": "valueRange", "$ref": "SourceRange", "optional": true, "description": "The associated range of the value text in the enclosing stylesheet (if available)." },
                    { "name": "computedLength", "type": "number", "optional": true, "description": "Computed length of media query expression (if applicable)."}
                ],
                "description": "Media query expression descriptor.",
                "hidden": true
            },
            {
                "id": "PlatformFontUsage",
                "type": "object",
                "properties": [
                    { "name": "familyName", "type": "string", "description": "Font's family name reported by platform."},
                    { "name": "glyphCount", "type": "number", "description": "Amount of glyphs that were rendered with this font."}
                ],
                "description": "Information about amount of glyphs that were rendered with given font.",
                "hidden": true
            }
        ],
        "commands": [
            {
                "name": "enable",
                "async": true,
                "description": "Enables the CSS agent for the given page. Clients should not assume that the CSS agent has been enabled until the result of this command is received."
            },
            {
                "name": "disable",
                "description": "Disables the CSS agent for the given page."
            },
            {
                "name": "getMatchedStylesForNode",
                "parameters": [
                    { "name": "nodeId", "$ref": "DOM.NodeId" },
                    { "name": "excludePseudo", "type": "boolean", "optional": true, "description": "Whether to exclude pseudo styles (default: false)." },
                    { "name": "excludeInherited", "type": "boolean", "optional": true, "description": "Whether to exclude inherited styles (default: false)." }
                ],
                "returns": [
                    { "name": "matchedCSSRules", "type": "array", "items": { "$ref": "RuleMatch" }, "optional": true, "description": "CSS rules matching this node, from all applicable stylesheets." },
                    { "name": "pseudoElements", "type": "array", "items": { "$ref": "PseudoIdMatches" }, "optional": true, "description": "Pseudo style matches for this node." },
                    { "name": "inherited", "type": "array", "items": { "$ref": "InheritedStyleEntry" }, "optional": true, "description": "A chain of inherited styles (from the immediate node parent up to the DOM tree root)." }
                ],
                "description": "Returns requested styles for a DOM node identified by <code>nodeId</code>."
            },
            {
                "name": "getInlineStylesForNode",
                "parameters": [
                    { "name": "nodeId", "$ref": "DOM.NodeId" }
                ],
                "returns": [
                    { "name": "inlineStyle", "$ref": "CSSStyle", "optional": true, "description": "Inline style for the specified DOM node." },
                    { "name": "attributesStyle", "$ref": "CSSStyle", "optional": true, "description": "Attribute-defined element style (e.g. resulting from \"width=20 height=100%\")."}
                ],
                "description": "Returns the styles defined inline (explicitly in the \"style\" attribute and implicitly, using DOM attributes) for a DOM node identified by <code>nodeId</code>."
            },
            {
                "name": "getComputedStyleForNode",
                "parameters": [
                    { "name": "nodeId", "$ref": "DOM.NodeId" }
                ],
                "returns": [
                    { "name": "computedStyle", "type": "array", "items": { "$ref": "CSSComputedStyleProperty" }, "description": "Computed style for the specified DOM node." }
                ],
                "description": "Returns the computed style for a DOM node identified by <code>nodeId</code>."
            },
            {
                "name": "getPlatformFontsForNode",
                "parameters": [
                    { "name": "nodeId", "$ref": "DOM.NodeId" }
                ],
                "returns": [
                    { "name": "fonts", "type": "array", "items": { "$ref": "PlatformFontUsage" }, "description": "Usage statistics for every employed platform font." }
                ],
                "description": "Requests information about platform fonts which we used to render child TextNodes in the given node.",
                "hidden": true
            },
            {
                "name": "getStyleSheetText",
                "parameters": [
                    { "name": "styleSheetId", "$ref": "StyleSheetId" }
                ],
                "returns": [
                    { "name": "text", "type": "string", "description": "The stylesheet text." }
                ],
                "description": "Returns the current textual content and the URL for a stylesheet."
            },
            {
                "name": "setStyleSheetText",
                "parameters": [
                    { "name": "styleSheetId", "$ref": "StyleSheetId" },
                    { "name": "text", "type": "string" }
                ],
                "description": "Sets the new stylesheet text."
            },
            {
                "name": "setRuleSelector",
                "parameters": [
                    { "name": "styleSheetId", "$ref": "StyleSheetId" },
                    { "name": "range", "$ref": "SourceRange" },
                    { "name": "selector", "type": "string" }
                ],
                "returns": [
                    { "name": "rule", "$ref": "CSSRule", "description": "The resulting rule after the selector modification." }
                ],
                "description": "Modifies the rule selector."
            },
            {
                "name": "setStyleText",
                "parameters": [
                    { "name": "styleSheetId", "$ref": "StyleSheetId" },
                    { "name": "range", "$ref": "SourceRange" },
                    { "name": "text", "type": "string" }
                ],
                "returns": [
                    { "name": "style", "$ref": "CSSStyle", "description": "The resulting style after the selector modification." }
                ],
                "description": "Modifies the style text."
            },
            {
                "name": "setMediaText",
                "parameters": [
                    { "name": "styleSheetId", "$ref": "StyleSheetId" },
                    { "name": "range", "$ref": "SourceRange" },
                    { "name": "text", "type": "string" }
                ],
                "returns": [
                    { "name": "media", "$ref": "CSSMedia", "description": "The resulting CSS media rule after modification." }
                ],
                "description": "Modifies the rule selector."
            },
            {
                "name": "createStyleSheet",
                "parameters": [
                    { "name": "frameId", "$ref": "Page.FrameId", "description": "Identifier of the frame where \"via-inspector\" stylesheet should be created."}
                ],
                "returns": [
                    { "name": "styleSheetId", "$ref": "StyleSheetId", "description": "Identifier of the created \"via-inspector\" stylesheet." }
                ],
                "description": "Creates a new special \"via-inspector\" stylesheet in the frame with given <code>frameId</code>."
            },
            {
                "name": "addRule",
                "parameters": [
                    { "name": "styleSheetId", "$ref": "StyleSheetId", "description": "The css style sheet identifier where a new rule should be inserted." },
                    { "name": "ruleText", "type": "string", "description": "The text of a new rule." },
                    { "name": "loca
Download .txt
gitextract_88n_xe_i/

├── .gitignore
├── .travis.yml
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── build-tools/
│   ├── protocol.json
│   ├── readme.md
│   └── scraper.js
├── build.gradle
├── gradle/
│   └── wrapper/
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── release.gradle
├── scripts/
│   ├── .gitignore
│   ├── dumpapp
│   ├── hprof_dump.sh
│   └── stetho_open.py
├── settings.gradle
├── stetho/
│   ├── .gitignore
│   ├── build.gradle
│   ├── gradle.properties
│   ├── proguard-consumer.pro
│   └── src/
│       ├── main/
│       │   ├── AndroidManifest.xml
│       │   └── java/
│       │       └── com/
│       │           └── facebook/
│       │               └── stetho/
│       │                   ├── DumperPluginsProvider.java
│       │                   ├── InspectorModulesProvider.java
│       │                   ├── Stetho.java
│       │                   ├── common/
│       │                   │   ├── Accumulator.java
│       │                   │   ├── ArrayListAccumulator.java
│       │                   │   ├── ExceptionUtil.java
│       │                   │   ├── ListUtil.java
│       │                   │   ├── LogRedirector.java
│       │                   │   ├── LogUtil.java
│       │                   │   ├── Predicate.java
│       │                   │   ├── ProcessUtil.java
│       │                   │   ├── ReflectionUtil.java
│       │                   │   ├── StringUtil.java
│       │                   │   ├── ThreadBound.java
│       │                   │   ├── UncheckedCallable.java
│       │                   │   ├── Utf8Charset.java
│       │                   │   ├── Util.java
│       │                   │   └── android/
│       │                   │       ├── AccessibilityUtil.java
│       │                   │       ├── DialogFragmentAccessor.java
│       │                   │       ├── FragmentAccessor.java
│       │                   │       ├── FragmentActivityAccessor.java
│       │                   │       ├── FragmentCompat.java
│       │                   │       ├── FragmentCompatFramework.java
│       │                   │       ├── FragmentCompatSupportLib.java
│       │                   │       ├── FragmentCompatUtil.java
│       │                   │       ├── FragmentManagerAccessor.java
│       │                   │       ├── HandlerUtil.java
│       │                   │       ├── ResourcesUtil.java
│       │                   │       ├── ViewGroupUtil.java
│       │                   │       └── ViewUtil.java
│       │                   ├── dumpapp/
│       │                   │   ├── ArgsHelper.java
│       │                   │   ├── DumpException.java
│       │                   │   ├── DumpUsageException.java
│       │                   │   ├── DumpappFramingException.java
│       │                   │   ├── DumpappHttpSocketLikeHandler.java
│       │                   │   ├── DumpappOutputBrokenException.java
│       │                   │   ├── DumpappSocketLikeHandler.java
│       │                   │   ├── Dumper.java
│       │                   │   ├── DumperContext.java
│       │                   │   ├── DumperPlugin.java
│       │                   │   ├── Framer.java
│       │                   │   ├── GlobalOptions.java
│       │                   │   ├── UnexpectedFrameException.java
│       │                   │   └── plugins/
│       │                   │       ├── CrashDumperPlugin.java
│       │                   │       ├── FilesDumperPlugin.java
│       │                   │       ├── HprofDumperPlugin.java
│       │                   │       └── SharedPreferencesDumperPlugin.java
│       │                   ├── inspector/
│       │                   │   ├── ChromeDevtoolsServer.java
│       │                   │   ├── ChromeDiscoveryHandler.java
│       │                   │   ├── DevtoolsSocketHandler.java
│       │                   │   ├── MessageHandlingException.java
│       │                   │   ├── MethodDispatcher.java
│       │                   │   ├── MismatchedResponseException.java
│       │                   │   ├── console/
│       │                   │   │   ├── CLog.java
│       │                   │   │   ├── ConsolePeerManager.java
│       │                   │   │   ├── RuntimeRepl.java
│       │                   │   │   └── RuntimeReplFactory.java
│       │                   │   ├── database/
│       │                   │   │   ├── ContentProviderDatabaseDriver.java
│       │                   │   │   ├── ContentProviderSchema.java
│       │                   │   │   ├── DatabaseConnectionProvider.java
│       │                   │   │   ├── DatabaseDriver2Adapter.java
│       │                   │   │   ├── DatabaseFilesProvider.java
│       │                   │   │   ├── DefaultDatabaseConnectionProvider.java
│       │                   │   │   ├── DefaultDatabaseFilesProvider.java
│       │                   │   │   ├── SQLiteDatabaseCompat.java
│       │                   │   │   └── SqliteDatabaseDriver.java
│       │                   │   ├── domstorage/
│       │                   │   │   ├── DOMStoragePeerManager.java
│       │                   │   │   └── SharedPreferencesHelper.java
│       │                   │   ├── elements/
│       │                   │   │   ├── AbstractChainedDescriptor.java
│       │                   │   │   ├── AttributeAccumulator.java
│       │                   │   │   ├── ChainedDescriptor.java
│       │                   │   │   ├── ComputedStyleAccumulator.java
│       │                   │   │   ├── Descriptor.java
│       │                   │   │   ├── DescriptorMap.java
│       │                   │   │   ├── DescriptorProvider.java
│       │                   │   │   ├── DescriptorRegistrar.java
│       │                   │   │   ├── Document.java
│       │                   │   │   ├── DocumentProvider.java
│       │                   │   │   ├── DocumentProviderFactory.java
│       │                   │   │   ├── DocumentProviderListener.java
│       │                   │   │   ├── DocumentView.java
│       │                   │   │   ├── ElementInfo.java
│       │                   │   │   ├── NodeDescriptor.java
│       │                   │   │   ├── NodeType.java
│       │                   │   │   ├── ObjectDescriptor.java
│       │                   │   │   ├── Origin.java
│       │                   │   │   ├── ShadowDocument.java
│       │                   │   │   ├── StyleAccumulator.java
│       │                   │   │   ├── StyleRuleNameAccumulator.java
│       │                   │   │   └── android/
│       │                   │   │       ├── AccessibilityNodeInfoWrapper.java
│       │                   │   │       ├── ActivityDescriptor.java
│       │                   │   │       ├── ActivityTracker.java
│       │                   │   │       ├── AndroidDescriptorHost.java
│       │                   │   │       ├── AndroidDocumentConstants.java
│       │                   │   │       ├── AndroidDocumentProvider.java
│       │                   │   │       ├── AndroidDocumentProviderFactory.java
│       │                   │   │       ├── AndroidDocumentRoot.java
│       │                   │   │       ├── ApplicationDescriptor.java
│       │                   │   │       ├── DialogDescriptor.java
│       │                   │   │       ├── DialogFragmentDescriptor.java
│       │                   │   │       ├── DocumentHiddenView.java
│       │                   │   │       ├── FragmentDescriptor.java
│       │                   │   │       ├── HighlightableDescriptor.java
│       │                   │   │       ├── MethodInvoker.java
│       │                   │   │       ├── TextViewDescriptor.java
│       │                   │   │       ├── ViewDescriptor.java
│       │                   │   │       ├── ViewGroupDescriptor.java
│       │                   │   │       ├── ViewHighlightOverlays.java
│       │                   │   │       ├── ViewHighlighter.java
│       │                   │   │       ├── WindowDescriptor.java
│       │                   │   │       └── window/
│       │                   │   │           ├── WindowRootViewCompactV16Impl.java
│       │                   │   │           ├── WindowRootViewCompactV18Impl.java
│       │                   │   │           ├── WindowRootViewCompactV19Impl.java
│       │                   │   │           └── WindowRootViewCompat.java
│       │                   │   ├── helper/
│       │                   │   │   ├── ChromePeerManager.java
│       │                   │   │   ├── IntegerFormatter.java
│       │                   │   │   ├── ObjectIdMapper.java
│       │                   │   │   ├── PeerRegistrationListener.java
│       │                   │   │   ├── PeersRegisteredListener.java
│       │                   │   │   └── ThreadBoundProxy.java
│       │                   │   ├── jsonrpc/
│       │                   │   │   ├── DisconnectReceiver.java
│       │                   │   │   ├── JsonRpcException.java
│       │                   │   │   ├── JsonRpcPeer.java
│       │                   │   │   ├── JsonRpcResult.java
│       │                   │   │   ├── PendingRequest.java
│       │                   │   │   ├── PendingRequestCallback.java
│       │                   │   │   └── protocol/
│       │                   │   │       ├── EmptyResult.java
│       │                   │   │       ├── JsonRpcError.java
│       │                   │   │       ├── JsonRpcEvent.java
│       │                   │   │       ├── JsonRpcRequest.java
│       │                   │   │       └── JsonRpcResponse.java
│       │                   │   ├── network/
│       │                   │   │   ├── AsyncPrettyPrinter.java
│       │                   │   │   ├── AsyncPrettyPrinterExecutorHolder.java
│       │                   │   │   ├── AsyncPrettyPrinterFactory.java
│       │                   │   │   ├── AsyncPrettyPrinterInitializer.java
│       │                   │   │   ├── AsyncPrettyPrinterRegistry.java
│       │                   │   │   ├── CountingOutputStream.java
│       │                   │   │   ├── DecompressionHelper.java
│       │                   │   │   ├── DefaultResponseHandler.java
│       │                   │   │   ├── DownloadingAsyncPrettyPrinterFactory.java
│       │                   │   │   ├── GunzippingOutputStream.java
│       │                   │   │   ├── MimeMatcher.java
│       │                   │   │   ├── NetworkEventReporter.java
│       │                   │   │   ├── NetworkEventReporterImpl.java
│       │                   │   │   ├── NetworkPeerManager.java
│       │                   │   │   ├── PrettyPrinterDisplayType.java
│       │                   │   │   ├── RequestBodyHelper.java
│       │                   │   │   ├── ResourceTypeHelper.java
│       │                   │   │   ├── ResponseBodyData.java
│       │                   │   │   ├── ResponseBodyFileManager.java
│       │                   │   │   ├── ResponseHandler.java
│       │                   │   │   ├── ResponseHandlingInputStream.java
│       │                   │   │   ├── SimpleBinaryInspectorWebSocketFrame.java
│       │                   │   │   └── SimpleTextInspectorWebSocketFrame.java
│       │                   │   ├── protocol/
│       │                   │   │   ├── ChromeDevtoolsDomain.java
│       │                   │   │   ├── ChromeDevtoolsMethod.java
│       │                   │   │   └── module/
│       │                   │   │       ├── BaseDatabaseDriver.java
│       │                   │   │       ├── CSS.java
│       │                   │   │       ├── Console.java
│       │                   │   │       ├── DOM.java
│       │                   │   │       ├── DOMStorage.java
│       │                   │   │       ├── Database.java
│       │                   │   │       ├── DatabaseConstants.java
│       │                   │   │       ├── DatabaseDescriptor.java
│       │                   │   │       ├── DatabaseDriver2.java
│       │                   │   │       ├── Debugger.java
│       │                   │   │       ├── HeapProfiler.java
│       │                   │   │       ├── Inspector.java
│       │                   │   │       ├── Network.java
│       │                   │   │       ├── Page.java
│       │                   │   │       ├── Profiler.java
│       │                   │   │       ├── Runtime.java
│       │                   │   │       ├── SimpleBooleanResult.java
│       │                   │   │       └── Worker.java
│       │                   │   ├── runtime/
│       │                   │   │   └── RhinoDetectingRuntimeReplFactory.java
│       │                   │   └── screencast/
│       │                   │       └── ScreencastDispatcher.java
│       │                   ├── json/
│       │                   │   ├── ObjectMapper.java
│       │                   │   └── annotation/
│       │                   │       ├── JsonProperty.java
│       │                   │       └── JsonValue.java
│       │                   ├── server/
│       │                   │   ├── AddressNameHelper.java
│       │                   │   ├── CompositeInputStream.java
│       │                   │   ├── LazySocketHandler.java
│       │                   │   ├── LeakyBufferedInputStream.java
│       │                   │   ├── LocalSocketServer.java
│       │                   │   ├── PeerAuthorizationException.java
│       │                   │   ├── ProtocolDetectingSocketHandler.java
│       │                   │   ├── SecureSocketHandler.java
│       │                   │   ├── ServerManager.java
│       │                   │   ├── SocketHandler.java
│       │                   │   ├── SocketHandlerFactory.java
│       │                   │   ├── SocketLike.java
│       │                   │   ├── SocketLikeHandler.java
│       │                   │   └── http/
│       │                   │       ├── ExactPathMatcher.java
│       │                   │       ├── HandlerRegistry.java
│       │                   │       ├── HttpHandler.java
│       │                   │       ├── HttpHeaders.java
│       │                   │       ├── HttpStatus.java
│       │                   │       ├── LightHttpBody.java
│       │                   │       ├── LightHttpMessage.java
│       │                   │       ├── LightHttpRequest.java
│       │                   │       ├── LightHttpResponse.java
│       │                   │       ├── LightHttpServer.java
│       │                   │       ├── PathMatcher.java
│       │                   │       └── RegexpPathMatcher.java
│       │                   └── websocket/
│       │                       ├── CloseCodes.java
│       │                       ├── Frame.java
│       │                       ├── FrameHelper.java
│       │                       ├── MaskingHelper.java
│       │                       ├── ReadCallback.java
│       │                       ├── ReadHandler.java
│       │                       ├── SimpleEndpoint.java
│       │                       ├── SimpleSession.java
│       │                       ├── WebSocketHandler.java
│       │                       ├── WebSocketSession.java
│       │                       ├── WriteCallback.java
│       │                       └── WriteHandler.java
│       └── test/
│           └── java/
│               └── com/
│                   └── facebook/
│                       └── stetho/
│                           ├── PluginBuilderTest.java
│                           ├── inspector/
│                           │   ├── database/
│                           │   │   └── DatabasePeerManagerTest.java
│                           │   ├── elements/
│                           │   │   └── android/
│                           │   │       ├── MethodInvokerTest.java
│                           │   │       └── ViewDescriptorTest.java
│                           │   └── network/
│                           │       ├── AsyncPrettyPrintResponseBodyTest.java
│                           │       ├── GunzippingOutputStreamTest.java
│                           │       └── ResponseHandlingInputStreamTest.java
│                           └── json/
│                               └── ObjectMapperTest.java
├── stetho-js-rhino/
│   ├── .gitignore
│   ├── README.md
│   ├── build.gradle
│   ├── gradle.properties
│   ├── proguard-consumer.pro
│   └── src/
│       ├── main/
│       │   ├── AndroidManifest.xml
│       │   └── java/
│       │       └── com/
│       │           └── facebook/
│       │               └── stetho/
│       │                   └── rhino/
│       │                       ├── JsConsole.java
│       │                       ├── JsFormat.java
│       │                       ├── JsRuntimeRepl.java
│       │                       └── JsRuntimeReplFactoryBuilder.java
│       └── test/
│           └── java/
│               └── com/
│                   └── facebook/
│                       └── stetho/
│                           └── rhino/
│                               └── JsFormatTest.java
├── stetho-okhttp/
│   ├── .gitignore
│   ├── build.gradle
│   ├── gradle.properties
│   └── src/
│       ├── main/
│       │   ├── AndroidManifest.xml
│       │   └── java/
│       │       └── com/
│       │           └── facebook/
│       │               └── stetho/
│       │                   └── okhttp/
│       │                       └── StethoInterceptor.java
│       └── test/
│           └── java/
│               └── com/
│                   └── facebook/
│                       └── stetho/
│                           └── okhttp/
│                               └── StethoInterceptorTest.java
├── stetho-okhttp3/
│   ├── .gitignore
│   ├── build.gradle
│   ├── gradle.properties
│   └── src/
│       ├── main/
│       │   ├── AndroidManifest.xml
│       │   └── java/
│       │       └── com/
│       │           └── facebook/
│       │               └── stetho/
│       │                   └── okhttp3/
│       │                       └── StethoInterceptor.java
│       └── test/
│           └── java/
│               └── com/
│                   └── facebook/
│                       └── stetho/
│                           └── okhttp3/
│                               └── StethoInterceptorTest.java
├── stetho-sample/
│   ├── .gitignore
│   ├── build.gradle
│   └── src/
│       ├── debug/
│       │   ├── AndroidManifest.xml
│       │   └── java/
│       │       └── com/
│       │           └── facebook/
│       │               └── stetho/
│       │                   └── sample/
│       │                       ├── APODDumperPlugin.java
│       │                       ├── HelloWorldDumperPlugin.java
│       │                       └── SampleDebugApplication.java
│       └── main/
│           ├── AndroidManifest.xml
│           ├── java/
│           │   └── com/
│           │       └── facebook/
│           │           └── stetho/
│           │               └── sample/
│           │                   ├── APODActivity.java
│           │                   ├── APODContentProvider.java
│           │                   ├── APODContract.java
│           │                   ├── APODRssFetcher.java
│           │                   ├── Constants.java
│           │                   ├── HtmlScraper.java
│           │                   ├── IRCChatActivity.java
│           │                   ├── IRCClientConnection.java
│           │                   ├── IRCConnectActivity.java
│           │                   ├── MainActivity.java
│           │                   ├── Networker.java
│           │                   ├── SampleApplication.java
│           │                   └── SettingsActivity.java
│           └── res/
│               ├── layout/
│               │   ├── apod_list_item.xml
│               │   ├── dialog_layout.xml
│               │   ├── irc_chat_activity.xml
│               │   ├── irc_connect_activity.xml
│               │   ├── irc_console_row.xml
│               │   └── main_activity.xml
│               ├── values/
│               │   ├── arrays.xml
│               │   ├── dimens.xml
│               │   └── strings.xml
│               └── xml/
│                   └── settings.xml
├── stetho-timber/
│   ├── .gitignore
│   ├── build.gradle
│   ├── gradle.properties
│   └── src/
│       └── main/
│           ├── AndroidManifest.xml
│           └── java/
│               └── com/
│                   └── facebook/
│                       └── stetho/
│                           └── timber/
│                               └── StethoTree.java
└── stetho-urlconnection/
    ├── .gitignore
    ├── build.gradle
    ├── gradle.properties
    └── src/
        └── main/
            ├── AndroidManifest.xml
            └── java/
                └── com/
                    └── facebook/
                        └── stetho/
                            └── urlconnection/
                                ├── ByteArrayRequestEntity.java
                                ├── SimpleRequestEntity.java
                                ├── StethoURLConnectionManager.java
                                ├── StethoURLConnectionManagerImpl.java
                                ├── URLConnectionInspectorHeaders.java
                                ├── URLConnectionInspectorRequest.java
                                ├── URLConnectionInspectorResponse.java
                                └── Util.java
Download .txt
Showing preview only (203K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (2352 symbols across 257 files)

FILE: build-tools/scraper.js
  function tab (line 24) | function tab(amount) {
  function ret (line 31) | function ret(amount) {
  function getAnonymousTypeName (line 36) | function getAnonymousTypeName() {
  function isPrimitive (line 40) | function isPrimitive(typeName) {
  function isPrimitiveOrArray (line 44) | function isPrimitiveOrArray(typeName) {
  function resolveName (line 48) | function resolveName(name) {
  function findCommandOrEventDefinition (line 58) | function findCommandOrEventDefinition(resolved) {
  function findTypeDefinition (line 82) | function findTypeDefinition(resolved) {
  function generateJavaTypeEquivalent (line 103) | function generateJavaTypeEquivalent(currentType, prop) {
  function generateJavaClassForType (line 164) | function generateJavaClassForType(typeDefinition) {
  function addDependencyIfNotGenerated (line 188) | function addDependencyIfNotGenerated(dependencyString) {
  function dependencyExists (line 196) | function dependencyExists(resolvedDependency) {
  function generateCommandOrEvent (line 205) | function generateCommandOrEvent(commandDef) {
  function generateDependencies (line 250) | function generateDependencies() {
  function generateType (line 270) | function generateType(typeDef) {
  function generate (line 284) | function generate(name) {

FILE: scripts/stetho_open.py
  function get_adb_server_port_from_server_socket (line 21) | def get_adb_server_port_from_server_socket():
  function get_adb_server_port (line 31) | def get_adb_server_port():
  function stetho_open (line 43) | def stetho_open(device=None, process=None, port=None):
  function read_input (line 64) | def read_input(sock, n, tag):
  function _find_only_stetho_socket (line 75) | def _find_only_stetho_socket(device, port):
  function _connect_to_device (line 107) | def _connect_to_device(device=None, port=None):
  function _parse_process_from_stetho_socket (line 125) | def _parse_process_from_stetho_socket(socket_name):
  function _format_process_as_stetho_socket (line 131) | def _format_process_as_stetho_socket(process):
  class AdbSmartSocketClient (line 134) | class AdbSmartSocketClient(object):
    method __init__ (line 139) | def __init__(self):
    method connect (line 142) | def connect(self, port=5037):
    method select_service (line 151) | def select_service(self, service):
  class SelectServiceError (line 165) | class SelectServiceError(Exception):
    method __init__ (line 166) | def __init__(self, reason):
    method __str__ (line 169) | def __str__(self):
  class HumanReadableError (line 172) | class HumanReadableError(Exception):
    method __init__ (line 173) | def __init__(self, reason):
    method __str__ (line 176) | def __str__(self):

FILE: stetho-js-rhino/src/main/java/com/facebook/stetho/rhino/JsConsole.java
  class JsConsole (line 20) | public class JsConsole extends ScriptableObject {
    method JsConsole (line 33) | public JsConsole() {
    method JsConsole (line 37) | public JsConsole(ScriptableObject scope) {
    method getClassName (line 46) | @Override
    method log (line 51) | @JSFunction
    method log (line 57) | private static void log(Object [] rawArgs) {

FILE: stetho-js-rhino/src/main/java/com/facebook/stetho/rhino/JsFormat.java
  class JsFormat (line 26) | class JsFormat {
    class ArrayCharSequence (line 46) | private static class ArrayCharSequence implements CharSequence {
      method ArrayCharSequence (line 51) | private ArrayCharSequence(@NonNull char[] array, int start, int end) {
      method length (line 57) | @Override
      method charAt (line 62) | @Override
      method subSequence (line 67) | @NonNull
      method substring (line 73) | private @NonNull CharSequence substring(int start) {
      method toString (line 77) | @Override
    method parse (line 90) | static @NonNull String parse(@NonNull Object...args) {

FILE: stetho-js-rhino/src/main/java/com/facebook/stetho/rhino/JsRuntimeRepl.java
  class JsRuntimeRepl (line 19) | class JsRuntimeRepl implements RuntimeRepl {
    method JsRuntimeRepl (line 23) | JsRuntimeRepl(@NonNull ScriptableObject scope) {
    method evaluate (line 27) | @Override
    method enterJsContext (line 49) | static @NonNull Context enterJsContext() {

FILE: stetho-js-rhino/src/main/java/com/facebook/stetho/rhino/JsRuntimeReplFactoryBuilder.java
  class JsRuntimeReplFactoryBuilder (line 46) | public class JsRuntimeReplFactoryBuilder {
    method defaultFactory (line 80) | public static RuntimeReplFactory defaultFactory(@NonNull android.conte...
    method JsRuntimeReplFactoryBuilder (line 84) | public JsRuntimeReplFactoryBuilder(@NonNull android.content.Context co...
    method importClass (line 99) | public @NonNull
    method importPackage (line 111) | public @NonNull
    method addVariable (line 123) | public JsRuntimeReplFactoryBuilder addVariable(@NonNull String name, O...
    method addFunction (line 134) | public @NonNull
    method build (line 143) | public RuntimeReplFactory build() {
    method initJsScope (line 156) | private @NonNull ScriptableObject initJsScope() {
    method initJsScope (line 166) | private @NonNull ScriptableObject initJsScope(@NonNull Context jsConte...
    method importClasses (line 188) | private void importClasses(@NonNull Context jsContext, @NonNull Script...
    method importPackages (line 208) | private void importPackages(@NonNull Context jsContext, @NonNull Scrip...
    method importConsole (line 227) | private void importConsole(@NonNull ScriptableObject scope) throws Ste...
    method importVariables (line 238) | private void importVariables(@NonNull ScriptableObject scope) throws S...
    method importFunctions (line 257) | private void importFunctions(@NonNull ScriptableObject scope) throws S...
    class StethoJsException (line 270) | private static class StethoJsException extends Exception {
      method StethoJsException (line 271) | StethoJsException(Throwable rootCause, String format, Object...args) {

FILE: stetho-js-rhino/src/test/java/com/facebook/stetho/rhino/JsFormatTest.java
  class JsFormatTest (line 16) | @RunWith(JUnit4.class)
    method testParse (line 19) | @Test

FILE: stetho-okhttp/src/main/java/com/facebook/stetho/okhttp/StethoInterceptor.java
  class StethoInterceptor (line 42) | @Deprecated
    method intercept (line 46) | @Override
    class OkHttpInspectorRequest (line 112) | private static class OkHttpInspectorRequest implements NetworkEventRep...
      method OkHttpInspectorRequest (line 117) | public OkHttpInspectorRequest(
      method id (line 126) | @Override
      method friendlyName (line 131) | @Override
      method friendlyNameExtra (line 137) | @Nullable
      method url (line 143) | @Override
      method method (line 148) | @Override
      method body (line 153) | @Nullable
      method headerCount (line 170) | @Override
      method headerName (line 175) | @Override
      method headerValue (line 180) | @Override
      method firstHeaderValue (line 185) | @Nullable
    class OkHttpInspectorResponse (line 192) | private static class OkHttpInspectorResponse implements NetworkEventRe...
      method OkHttpInspectorResponse (line 198) | public OkHttpInspectorResponse(
      method requestId (line 209) | @Override
      method url (line 214) | @Override
      method statusCode (line 219) | @Override
      method reasonPhrase (line 224) | @Override
      method connectionReused (line 229) | @Override
      method connectionId (line 235) | @Override
      method fromDiskCache (line 240) | @Override
      method headerCount (line 245) | @Override
      method headerName (line 250) | @Override
      method headerValue (line 255) | @Override
      method firstHeaderValue (line 260) | @Nullable
    class ForwardingResponseBody (line 267) | private static class ForwardingResponseBody extends ResponseBody {
      method ForwardingResponseBody (line 271) | public ForwardingResponseBody(ResponseBody body, InputStream interce...
      method contentType (line 276) | @Override
      method contentLength (line 281) | @Override
      method source (line 286) | @Override

FILE: stetho-okhttp/src/test/java/com/facebook/stetho/okhttp/StethoInterceptorTest.java
  class StethoInterceptorTest (line 55) | @Config(emulateSdk = Build.VERSION_CODES.JELLY_BEAN)
    method setUp (line 67) | @Before
    method testHappyPath (line 80) | @Test
    method testWithRequestCompression (line 129) | @Test
    method testWithResponseCompression (line 168) | @Test
    method repeat (line 200) | private static String repeat(String s, int reps) {
    method compress (line 208) | private static byte[] compress(byte[] data) throws IOException {
    method hookAlmostRealRequestWillBeSent (line 216) | private static AtomicReference<NetworkEventReporter.InspectorRequest>
    method hookAlmostRealInterpretResponseStream (line 246) | private static ByteArrayOutputStream hookAlmostRealInterpretResponseSt...
    class SimpleTestChain (line 277) | private static class SimpleTestChain implements Interceptor.Chain {
      method SimpleTestChain (line 282) | public SimpleTestChain(Request request, Response response, @Nullable...
      method request (line 288) | @Override
      method proceed (line 293) | @Override
      method connection (line 303) | @Override

FILE: stetho-okhttp3/src/main/java/com/facebook/stetho/okhttp3/StethoInterceptor.java
  class StethoInterceptor (line 35) | public class StethoInterceptor implements Interceptor {
    method intercept (line 38) | @Override
    class OkHttpInspectorRequest (line 104) | private static class OkHttpInspectorRequest implements NetworkEventRep...
      method OkHttpInspectorRequest (line 109) | public OkHttpInspectorRequest(
      method id (line 118) | @Override
      method friendlyName (line 123) | @Override
      method friendlyNameExtra (line 129) | @Nullable
      method url (line 135) | @Override
      method method (line 140) | @Override
      method body (line 145) | @Nullable
      method headerCount (line 162) | @Override
      method headerName (line 167) | @Override
      method headerValue (line 172) | @Override
      method firstHeaderValue (line 177) | @Nullable
    class OkHttpInspectorResponse (line 184) | private static class OkHttpInspectorResponse implements NetworkEventRe...
      method OkHttpInspectorResponse (line 190) | public OkHttpInspectorResponse(
      method requestId (line 201) | @Override
      method url (line 206) | @Override
      method statusCode (line 211) | @Override
      method reasonPhrase (line 216) | @Override
      method connectionReused (line 221) | @Override
      method connectionId (line 227) | @Override
      method fromDiskCache (line 232) | @Override
      method headerCount (line 237) | @Override
      method headerName (line 242) | @Override
      method headerValue (line 247) | @Override
      method firstHeaderValue (line 252) | @Nullable
    class ForwardingResponseBody (line 259) | private static class ForwardingResponseBody extends ResponseBody {
      method ForwardingResponseBody (line 263) | public ForwardingResponseBody(ResponseBody body, InputStream interce...
      method contentType (line 268) | @Override
      method contentLength (line 273) | @Override
      method source (line 278) | @Override

FILE: stetho-okhttp3/src/test/java/com/facebook/stetho/okhttp3/StethoInterceptorTest.java
  class StethoInterceptorTest (line 55) | @Config(emulateSdk = Build.VERSION_CODES.JELLY_BEAN)
    method setUp (line 67) | @Before
    method testHappyPath (line 81) | @Test
    method testWithRequestCompression (line 130) | @Test
    method testWithResponseCompression (line 169) | @Test
    method repeat (line 201) | private static String repeat(String s, int reps) {
    method compress (line 209) | private static byte[] compress(byte[] data) throws IOException {
    method hookAlmostRealRequestWillBeSent (line 217) | private static AtomicReference<NetworkEventReporter.InspectorRequest>
    method hookAlmostRealInterpretResponseStream (line 247) | private static ByteArrayOutputStream hookAlmostRealInterpretResponseSt...
    class SimpleTestChain (line 278) | private static class SimpleTestChain implements Interceptor.Chain {
      method SimpleTestChain (line 283) | public SimpleTestChain(Request request, Response response, @Nullable...
      method request (line 289) | @Override
      method proceed (line 294) | @Override
      method connection (line 304) | @Override

FILE: stetho-sample/src/debug/java/com/facebook/stetho/sample/APODDumperPlugin.java
  class APODDumperPlugin (line 21) | public class APODDumperPlugin implements DumperPlugin {
    method APODDumperPlugin (line 33) | public APODDumperPlugin(ContentResolver contentResolver) {
    method getName (line 38) | @Override
    method dump (line 43) | @Override
    method doList (line 66) | private void doList(PrintStream writer) {
    method doRemove (line 86) | private void doRemove(PrintStream writer, Iterator<String> argsIter) t...
    method doClear (line 92) | private void doClear(PrintStream writer) {
    method doRefresh (line 96) | private void doRefresh(PrintStream writer) {
    method delete (line 101) | private void delete(PrintStream writer, String where, String[] args) {
    method usage (line 107) | private static void usage(PrintStream writer) {

FILE: stetho-sample/src/debug/java/com/facebook/stetho/sample/HelloWorldDumperPlugin.java
  class HelloWorldDumperPlugin (line 25) | public class HelloWorldDumperPlugin implements DumperPlugin {
    method getName (line 28) | @Override
    method dump (line 33) | @Override
    method doHello (line 46) | private void doHello(InputStream in, PrintStream writer, String name) ...
    method doUsage (line 62) | private void doUsage(PrintStream writer) {

FILE: stetho-sample/src/debug/java/com/facebook/stetho/sample/SampleDebugApplication.java
  class SampleDebugApplication (line 26) | public class SampleDebugApplication extends SampleApplication {
    method onCreate (line 29) | @Override
    method initializeStetho (line 39) | private void initializeStetho(final Context context) {
    class ExtInspectorModulesProvider (line 55) | private static class ExtInspectorModulesProvider implements InspectorM...
      method ExtInspectorModulesProvider (line 59) | ExtInspectorModulesProvider(Context context) {
      method get (line 63) | @Override
      method createContentProviderDatabaseDriver (line 70) | @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)

FILE: stetho-sample/src/main/java/com/facebook/stetho/sample/APODActivity.java
  class APODActivity (line 37) | public class APODActivity extends ListActivity {
    method show (line 44) | public static void show(Context context) {
    method onCreate (line 48) | @Override
    method onDestroy (line 60) | @Override
    method onCreateLoader (line 68) | @Override
    method onLoadFinished (line 78) | @Override
    method onLoaderReset (line 83) | @Override
    class APODPostsAdapter (line 89) | private class APODPostsAdapter extends CursorAdapter {
      method APODPostsAdapter (line 92) | public APODPostsAdapter(Context context) {
      method newView (line 97) | @Override
      method bindView (line 104) | @Override
      method fetchImage (line 123) | private void fetchImage(
    class ViewHolder (line 157) | private static class ViewHolder {
      method ViewHolder (line 166) | public ViewHolder(View v) {
    method setTextWithBuffer (line 173) | private static void setTextWithBuffer(TextView textView, CharArrayBuff...
    class APODPostsQuery (line 177) | private static class APODPostsQuery {
      method createCursorLoader (line 190) | public static CursorLoader createCursorLoader(Context context) {

FILE: stetho-sample/src/main/java/com/facebook/stetho/sample/APODContentProvider.java
  class APODContentProvider (line 23) | public class APODContentProvider extends ContentProvider {
    method onCreate (line 26) | @Override
    method query (line 32) | @Override
    method getType (line 53) | @Override
    method insert (line 58) | @Override
    method delete (line 66) | @Override
    method update (line 74) | @Override
    method applyBatch (line 82) | @Override
    method notifyChange (line 97) | private void notifyChange() {
    class APODSQLiteOpenHelper (line 101) | private static class APODSQLiteOpenHelper extends SQLiteOpenHelper {
      method APODSQLiteOpenHelper (line 105) | public APODSQLiteOpenHelper(Context context) {
      method onCreate (line 109) | @Override
      method onUpgrade (line 121) | @Override
      method drop (line 127) | private void drop(SQLiteDatabase db) {

FILE: stetho-sample/src/main/java/com/facebook/stetho/sample/APODContract.java
  type APODContract (line 13) | public interface APODContract {
    type Columns (line 19) | interface Columns extends BaseColumns {

FILE: stetho-sample/src/main/java/com/facebook/stetho/sample/APODRssFetcher.java
  class APODRssFetcher (line 30) | public class APODRssFetcher {
    method APODRssFetcher (line 37) | public APODRssFetcher(ContentResolver contentResolver) {
    method fetchAndStore (line 41) | public void fetchAndStore() {
    method onResponse (line 51) | @Override
    method onFailure (line 72) | @Override
    method parseRss (line 77) | private List<RssItem> parseRss(byte[] body) throws IOException, XmlPul...
    method decorateRssItemsWithLinkImages (line 86) | public List<ApodItem> decorateRssItemsWithLinkImages(List<RssItem> rss...
    method store (line 110) | private void store(List<ApodItem> items) throws RemoteException, Opera...
    method convertItemToValues (line 126) | private ContentValues convertItemToValues(ApodItem item) {
    method fetchLinkPage (line 148) | private void fetchLinkPage(String linkUrl, PageScrapedCallback callbac...
    method getOriginUri (line 158) | private static Uri getOriginUri(Uri uri) {
    class PageScrapeNetworkCallback (line 170) | private static class PageScrapeNetworkCallback implements Networker.Ca...
      method PageScrapeNetworkCallback (line 174) | public PageScrapeNetworkCallback(@Nullable String origin, PageScrape...
      method onResponse (line 179) | @Override
      method onFailure (line 187) | @Override
    class RssParser (line 193) | private static class RssParser {
      method RssParser (line 196) | public RssParser(XmlPullParser parser) {
      method parse (line 200) | public List<RssItem> parse() throws IOException, XmlPullParserExcept...
      method readItem (line 224) | private RssItem readItem() throws XmlPullParserException, IOException {
      method readTextFromTag (line 245) | private String readTextFromTag(String tagName) throws IOException, X...
      method readText (line 252) | private String readText() throws IOException, XmlPullParserException {
      method skip (line 261) | private void skip() throws IOException, XmlPullParserException {
    class RssItem (line 279) | private static class RssItem {
    class ApodItem (line 285) | private static class ApodItem {
    type PageScrapedCallback (line 290) | private interface PageScrapedCallback {
      method onPageScraped (line 295) | public void onPageScraped(@Nullable List<String> imageUrls);

FILE: stetho-sample/src/main/java/com/facebook/stetho/sample/Constants.java
  class Constants (line 10) | public class Constants {

FILE: stetho-sample/src/main/java/com/facebook/stetho/sample/HtmlScraper.java
  class HtmlScraper (line 20) | public class HtmlScraper {
    method parseWithImageTags (line 26) | public static String parseWithImageTags(
    class ExtractImageGetter (line 40) | private static class ExtractImageGetter implements Html.ImageGetter {
      method ExtractImageGetter (line 44) | public ExtractImageGetter(@Nullable String originUrl, List<String> o...
      method getDrawable (line 49) | @Override
      method getSources (line 66) | public List<String> getSources() {

FILE: stetho-sample/src/main/java/com/facebook/stetho/sample/IRCChatActivity.java
  class IRCChatActivity (line 30) | public class IRCChatActivity extends Activity {
    method showForResult (line 45) | public static void showForResult(
    method onCreate (line 56) | @Override
    method onDestroy (line 84) | @Override
    method onConnected (line 92) | private void onConnected() {
    method onIncomingMessage (line 96) | private void onIncomingMessage(String message) {
    method onDisconnectOrConnectFailed (line 103) | private void onDisconnectOrConnectFailed(@Nullable IOException excepti...
    method onEditorAction (line 127) | @Override
    method onClick (line 140) | @Override
    method doSendMessage (line 146) | private void doSendMessage() {
    class SimpleIRCConnectionManager (line 159) | private class SimpleIRCConnectionManager {
      method SimpleIRCConnectionManager (line 167) | public SimpleIRCConnectionManager(String hostAndPort, String nicknam...
      method runConnectLoop (line 179) | public void runConnectLoop() {
      method doConnectLoop (line 200) | private void doConnectLoop(IRCClientConnection conn) throws IOExcept...
      method send (line 228) | public void send(String message) {
      method shutdown (line 239) | public void shutdown() {
      method invokeOnDisconnectOrConnectFailed (line 253) | private void invokeOnDisconnectOrConnectFailed(@Nullable final IOExc...
    class IRCConsoleRowAdapter (line 263) | private static class IRCConsoleRowAdapter extends ArrayAdapter<String> {
      method IRCConsoleRowAdapter (line 264) | public IRCConsoleRowAdapter(Context context) {
    class IRCChatActivityResult (line 269) | public static class IRCChatActivityResult {
      method fromResult (line 274) | public static IRCChatActivityResult fromResult(int resultCode, Inten...
      method IRCChatActivityResult (line 282) | public IRCChatActivityResult(@Nullable String connectError) {
      method wasUserDisconnect (line 286) | public boolean wasUserDisconnect() {
      method setResult (line 290) | private void setResult(Activity activity) {

FILE: stetho-sample/src/main/java/com/facebook/stetho/sample/IRCClientConnection.java
  class IRCClientConnection (line 29) | public class IRCClientConnection implements Closeable {
    method connect (line 36) | public static IRCClientConnection connect(String host, int port) throw...
    method IRCClientConnection (line 55) | private IRCClientConnection(
    method read (line 66) | @Nullable
    method send (line 81) | public void send(String message) throws IOException {
    method maybeHandleIncomingMessage (line 92) | private boolean maybeHandleIncomingMessage(String message) throws IOEx...
    method close (line 100) | public void close() throws IOException {
    class StethoReporter (line 122) | private static class StethoReporter {
      method StethoReporter (line 126) | public StethoReporter() {
      method onPreConnect (line 131) | public void onPreConnect(String host, int port) {
      method onPostConnect (line 135) | public void onPostConnect() {
      method onError (line 139) | public void onError(IOException e) {
      method onClosed (line 143) | public void onClosed() {
      method onSend (line 147) | public void onSend(String message) {
      method onReceive (line 151) | public void onReceive(String message) {

FILE: stetho-sample/src/main/java/com/facebook/stetho/sample/IRCConnectActivity.java
  class IRCConnectActivity (line 23) | public class IRCConnectActivity extends Activity {
    method show (line 32) | public static void show(Context context) {
    method onCreate (line 37) | @Override
    method onActivityResult (line 55) | @Override
    method onClick (line 75) | @Override

FILE: stetho-sample/src/main/java/com/facebook/stetho/sample/MainActivity.java
  class MainActivity (line 19) | public class MainActivity extends Activity {
    method onCreate (line 20) | @Override
    method isStethoPresent (line 40) | private static boolean isStethoPresent() {
    method onResume (line 49) | @Override
    method onPause (line 55) | @Override
    method getPrefs (line 61) | private SharedPreferences getPrefs() {
    method onClick (line 66) | @Override
    method onSharedPreferenceChanged (line 87) | @Override

FILE: stetho-sample/src/main/java/com/facebook/stetho/sample/Networker.java
  class Networker (line 28) | public class Networker {
    method get (line 39) | public static synchronized Networker get() {
    method Networker (line 46) | private Networker() {
    method submit (line 49) | public void submit(HttpRequest request, Callback callback) {
    class HttpRequestTask (line 53) | private class HttpRequestTask implements Runnable {
      method HttpRequestTask (line 58) | public HttpRequestTask(HttpRequest request, Callback callback) {
      method run (line 64) | @Override
      method doFetch (line 74) | private HttpResponse doFetch() throws IOException {
      method configureAndConnectRequest (line 97) | private HttpURLConnection configureAndConnectRequest() throws IOExce...
    method requestDecompression (line 150) | private static void requestDecompression(HttpURLConnection conn) {
    method applyDecompressionIfApplicable (line 154) | @Nullable
    method copy (line 163) | private static void copy(InputStream in, OutputStream out, byte[] buf)...
    class HttpRequest (line 173) | public static class HttpRequest {
      method newBuilder (line 179) | public static Builder newBuilder() {
      method HttpRequest (line 183) | HttpRequest(Builder b) {
      class Builder (line 199) | public static class Builder {
        method Builder (line 205) | Builder() {
        method friendlyName (line 208) | public Builder friendlyName(String friendlyName) {
        method method (line 213) | public Builder method(Networker.HttpMethod method) {
        method url (line 218) | public Builder url(String url) {
        method body (line 223) | public Builder body(byte[] body) {
        method build (line 228) | public HttpRequest build() {
    type HttpMethod (line 234) | public static enum HttpMethod {
    class HttpResponse (line 238) | public static class HttpResponse {
      method HttpResponse (line 242) | HttpResponse(int statusCode, byte[] body) {
    type Callback (line 248) | public interface Callback {
      method onResponse (line 249) | public void onResponse(HttpResponse result);
      method onFailure (line 250) | public void onFailure(IOException e);

FILE: stetho-sample/src/main/java/com/facebook/stetho/sample/SampleApplication.java
  class SampleApplication (line 12) | public class SampleApplication extends Application {
    method onCreate (line 13) | @Override

FILE: stetho-sample/src/main/java/com/facebook/stetho/sample/SettingsActivity.java
  class SettingsActivity (line 15) | public class SettingsActivity extends PreferenceActivity {
    method show (line 16) | public static void show(Context context) {
    method onCreate (line 20) | @Override

FILE: stetho-timber/src/main/java/com/facebook/stetho/timber/StethoTree.java
  class StethoTree (line 25) | public class StethoTree extends Timber.Tree {
    method log (line 26) | @Override

FILE: stetho-urlconnection/src/main/java/com/facebook/stetho/urlconnection/ByteArrayRequestEntity.java
  class ByteArrayRequestEntity (line 13) | public class ByteArrayRequestEntity implements SimpleRequestEntity {
    method ByteArrayRequestEntity (line 16) | public ByteArrayRequestEntity(byte[] data) {
    method writeTo (line 20) | @Override

FILE: stetho-urlconnection/src/main/java/com/facebook/stetho/urlconnection/SimpleRequestEntity.java
  type SimpleRequestEntity (line 18) | public interface SimpleRequestEntity {
    method writeTo (line 19) | void writeTo(OutputStream out) throws IOException;

FILE: stetho-urlconnection/src/main/java/com/facebook/stetho/urlconnection/StethoURLConnectionManager.java
  class StethoURLConnectionManager (line 30) | @NotThreadSafe
    class Holder (line 49) | private static class Holder {
      method Holder (line 52) | public Holder(@Nullable String friendlyName) {
    method StethoURLConnectionManager (line 57) | public StethoURLConnectionManager(@Nullable String friendlyName) {
    method isStethoEnabled (line 65) | public boolean isStethoEnabled() {
    method preConnect (line 78) | public void preConnect(
    method postConnect (line 95) | public void postConnect() throws IOException {
    method httpExchangeFailed (line 107) | public void httpExchangeFailed(IOException ex) {
    method interpretResponseStream (line 128) | public InputStream interpretResponseStream(@Nullable InputStream respo...
    method getStethoHook (line 146) | @Deprecated
    method getStethoRequestId (line 161) | @Nullable

FILE: stetho-urlconnection/src/main/java/com/facebook/stetho/urlconnection/StethoURLConnectionManagerImpl.java
  class StethoURLConnectionManagerImpl (line 27) | class StethoURLConnectionManagerImpl {
    method StethoURLConnectionManagerImpl (line 37) | public StethoURLConnectionManagerImpl(@Nullable String friendlyName) {
    method isStethoActive (line 42) | public boolean isStethoActive() {
    method preConnect (line 49) | public void preConnect(
    method postConnect (line 69) | public void postConnect() throws IOException {
    method httpExchangeFailed (line 85) | public void httpExchangeFailed(IOException ex) {
    method interpretResponseStream (line 95) | public InputStream interpretResponseStream(@Nullable InputStream respo...
    method throwIfNoConnection (line 113) | private void throwIfNoConnection() {
    method throwIfConnection (line 119) | private void throwIfConnection() {
    method getStethoHook (line 128) | public NetworkEventReporter getStethoHook() {
    method getStethoRequestId (line 135) | @Nonnull

FILE: stetho-urlconnection/src/main/java/com/facebook/stetho/urlconnection/URLConnectionInspectorHeaders.java
  class URLConnectionInspectorHeaders (line 15) | class URLConnectionInspectorHeaders implements NetworkEventReporter.Insp...
    method URLConnectionInspectorHeaders (line 18) | public URLConnectionInspectorHeaders(ArrayList<Pair<String, String>> h...
    method headerCount (line 22) | @Override
    method headerName (line 27) | @Override
    method headerValue (line 32) | @Override
    method firstHeaderValue (line 37) | @Override

FILE: stetho-urlconnection/src/main/java/com/facebook/stetho/urlconnection/URLConnectionInspectorRequest.java
  class URLConnectionInspectorRequest (line 19) | class URLConnectionInspectorRequest
    method URLConnectionInspectorRequest (line 29) | public URLConnectionInspectorRequest(
    method id (line 44) | @Override
    method friendlyName (line 49) | @Override
    method friendlyNameExtra (line 54) | @Override
    method url (line 59) | @Override
    method method (line 64) | @Override
    method body (line 69) | @Nullable

FILE: stetho-urlconnection/src/main/java/com/facebook/stetho/urlconnection/URLConnectionInspectorResponse.java
  class URLConnectionInspectorResponse (line 15) | class URLConnectionInspectorResponse
    method URLConnectionInspectorResponse (line 23) | public URLConnectionInspectorResponse(String requestId, HttpURLConnect...
    method requestId (line 31) | @Override
    method url (line 36) | @Override
    method statusCode (line 41) | @Override
    method reasonPhrase (line 46) | @Override
    method connectionReused (line 51) | @Override
    method connectionId (line 57) | @Override
    method fromDiskCache (line 62) | @Override

FILE: stetho-urlconnection/src/main/java/com/facebook/stetho/urlconnection/Util.java
  class Util (line 16) | class Util {
    method convertHeaders (line 17) | public static ArrayList<Pair<String, String>> convertHeaders(Map<Strin...

FILE: stetho/src/main/java/com/facebook/stetho/DumperPluginsProvider.java
  type DumperPluginsProvider (line 17) | public interface DumperPluginsProvider {
    method get (line 18) | Iterable<DumperPlugin> get();

FILE: stetho/src/main/java/com/facebook/stetho/InspectorModulesProvider.java
  type InspectorModulesProvider (line 12) | public interface InspectorModulesProvider {
    method get (line 13) | Iterable<ChromeDevtoolsDomain> get();

FILE: stetho/src/main/java/com/facebook/stetho/Stetho.java
  class Stetho (line 83) | public class Stetho {
    method Stetho (line 84) | private Stetho() {
    method newInitializerBuilder (line 94) | public static InitializerBuilder newInitializerBuilder(Context context) {
    method initializeWithDefaults (line 103) | public static void initializeWithDefaults(final Context context) {
    method initialize (line 123) | public static void initialize(final Initializer initializer) {
    method defaultDumperPluginsProvider (line 136) | public static DumperPluginsProvider defaultDumperPluginsProvider(final...
    method defaultInspectorModulesProvider (line 145) | public static InspectorModulesProvider defaultInspectorModulesProvider...
    class PluginBuilder (line 154) | private static class PluginBuilder<T> {
      method provide (line 162) | public void provide(String name, T plugin) {
      method provideIfDesired (line 168) | public void provideIfDesired(String name, T plugin) {
      method remove (line 177) | public void remove(String pluginName) {
      method throwIfFinished (line 182) | private void throwIfFinished() {
      method finish (line 188) | public Iterable<T> finish() {
    class DefaultDumperPluginsBuilder (line 199) | public static final class DefaultDumperPluginsBuilder {
      method DefaultDumperPluginsBuilder (line 203) | public DefaultDumperPluginsBuilder(Context context) {
      method provide (line 207) | public DefaultDumperPluginsBuilder provide(DumperPlugin plugin) {
      method provideIfDesired (line 212) | private DefaultDumperPluginsBuilder provideIfDesired(DumperPlugin pl...
      method remove (line 217) | public DefaultDumperPluginsBuilder remove(String pluginName) {
      method finish (line 222) | public Iterable<DumperPlugin> finish() {
    class DefaultInspectorModulesBuilder (line 237) | public static final class DefaultInspectorModulesBuilder {
      method DefaultInspectorModulesBuilder (line 247) | public DefaultInspectorModulesBuilder(Context context) {
      method documentProvider (line 258) | public DefaultInspectorModulesBuilder documentProvider(DocumentProvi...
      method runtimeRepl (line 270) | public DefaultInspectorModulesBuilder runtimeRepl(RuntimeReplFactory...
      method databaseFiles (line 292) | @Deprecated
      method provideDatabaseDriver (line 301) | @Deprecated
      method provideDatabaseDriver (line 320) | public DefaultInspectorModulesBuilder provideDatabaseDriver(Database...
      method excludeSqliteDatabaseDriver (line 333) | public DefaultInspectorModulesBuilder excludeSqliteDatabaseDriver(bo...
      method provide (line 345) | @Deprecated
      method provideIfDesired (line 351) | private DefaultInspectorModulesBuilder provideIfDesired(ChromeDevtoo...
      method remove (line 363) | @Deprecated
      method finish (line 369) | public Iterable<ChromeDevtoolsDomain> finish() {
      method resolveDocumentProvider (line 414) | @Nullable
    class Initializer (line 430) | public static abstract class Initializer {
      method Initializer (line 433) | protected Initializer(Context context) {
      method getDumperPlugins (line 437) | @Nullable
      method getInspectorModules (line 440) | @Nullable
      method start (line 443) | final void start() {
      class RealSocketHandlerFactory (line 455) | private class RealSocketHandlerFactory implements SocketHandlerFacto...
        method create (line 456) | @Override
    class InitializerBuilder (line 497) | public static class InitializerBuilder {
      method InitializerBuilder (line 503) | private InitializerBuilder(Context context) {
      method enableDumpapp (line 520) | public InitializerBuilder enableDumpapp(DumperPluginsProvider plugin...
      method enableWebKitInspector (line 525) | public InitializerBuilder enableWebKitInspector(InspectorModulesProv...
      method build (line 530) | public Initializer build() {
    class BuilderBasedInitializer (line 535) | private static class BuilderBasedInitializer extends Initializer {
      method BuilderBasedInitializer (line 539) | private BuilderBasedInitializer(InitializerBuilder b) {
      method getDumperPlugins (line 545) | @Nullable
      method getInspectorModules (line 551) | @Nullable

FILE: stetho/src/main/java/com/facebook/stetho/common/Accumulator.java
  type Accumulator (line 10) | public interface Accumulator<E> {
    method store (line 11) | void store(E object);

FILE: stetho/src/main/java/com/facebook/stetho/common/ArrayListAccumulator.java
  class ArrayListAccumulator (line 12) | public final class ArrayListAccumulator<E> extends ArrayList<E> implemen...
    method store (line 13) | @Override

FILE: stetho/src/main/java/com/facebook/stetho/common/ExceptionUtil.java
  class ExceptionUtil (line 10) | public class ExceptionUtil {
    method propagateIfInstanceOf (line 11) | @SuppressWarnings("unchecked")
    method propagate (line 19) | public static RuntimeException propagate(Throwable t) {
    method sneakyThrow (line 25) | @SuppressWarnings("unchecked")

FILE: stetho/src/main/java/com/facebook/stetho/common/ListUtil.java
  class ListUtil (line 15) | public final class ListUtil {
    method ListUtil (line 16) | private ListUtil() {
    method identityEquals (line 22) | public static <T> boolean identityEquals(List<? extends T> list1, List...
    method copyToImmutableList (line 41) | public static <T> List<T> copyToImmutableList(List<T> list) {
    method newImmutableList (line 66) | public static <T> List<T> newImmutableList(T item) {
    method newImmutableList (line 70) | public static <T> List<T> newImmutableList(T itemOne, T itemTwo) {
    type ImmutableList (line 74) | private static interface ImmutableList<E> extends List<E>, RandomAccess {
    class ImmutableArrayList (line 77) | private static final class ImmutableArrayList<E>
      method ImmutableArrayList (line 81) | public ImmutableArrayList(Object[] array) {
      method get (line 85) | @Override
      method size (line 91) | @Override
    class OneItemImmutableList (line 97) | private static final class OneItemImmutableList<E>
      method OneItemImmutableList (line 101) | public OneItemImmutableList(E item) {
      method get (line 105) | @Override
      method size (line 114) | @Override
    class TwoItemImmutableList (line 120) | private static final class TwoItemImmutableList<E>
      method TwoItemImmutableList (line 125) | public TwoItemImmutableList(E item0, E item1) {
      method get (line 130) | @Override
      method size (line 142) | @Override
    class ThreeItemImmutableList (line 148) | private static final class ThreeItemImmutableList<E>
      method ThreeItemImmutableList (line 154) | public ThreeItemImmutableList(E item0, E item1, E item2) {
      method get (line 160) | @Override
      method size (line 174) | @Override
    class FourItemImmutableList (line 180) | private static final class FourItemImmutableList<E>
      method FourItemImmutableList (line 187) | public FourItemImmutableList(E item0, E item1, E item2, E item3) {
      method get (line 194) | @Override
      method size (line 210) | @Override
    class FiveItemImmutableList (line 216) | private static final class FiveItemImmutableList<E>
      method FiveItemImmutableList (line 224) | public FiveItemImmutableList(E item0, E item1, E item2, E item3, E i...
      method get (line 232) | @Override
      method size (line 250) | @Override

FILE: stetho/src/main/java/com/facebook/stetho/common/LogRedirector.java
  class LogRedirector (line 23) | public class LogRedirector {
    method setLogger (line 30) | public static void setLogger(Logger logger) {
    method e (line 36) | public static void e(String tag, String message, Throwable t) {
    method e (line 40) | public static void e(String tag, String message) {
    method w (line 44) | public static void w(String tag, String message, Throwable t) {
    method w (line 48) | public static void w(String tag, String message) {
    method i (line 52) | public static void i(String tag, String message, Throwable t) {
    method i (line 56) | public static void i(String tag, String message) {
    method d (line 60) | public static void d(String tag, String message, Throwable t) {
    method d (line 64) | public static void d(String tag, String message) {
    method v (line 68) | public static void v(String tag, String message, Throwable t) {
    method v (line 72) | public static void v(String tag, String message) {
    method formatThrowable (line 76) | private static String formatThrowable(Throwable t) {
    method log (line 84) | private static void log(int priority, String tag, String message) {
    method isLoggable (line 93) | public static boolean isLoggable(String tag, int priority) {
    type Logger (line 106) | public interface Logger {
      method isLoggable (line 112) | boolean isLoggable(String tag, int priority);
      method log (line 117) | void log(int priority, String tag, String message);

FILE: stetho/src/main/java/com/facebook/stetho/common/LogUtil.java
  class LogUtil (line 17) | public class LogUtil {
    method e (line 20) | public static void e(String format, Object... args) {
    method e (line 24) | public static void e(Throwable t, String format, Object... args) {
    method e (line 28) | public static void e(String message) {
    method e (line 34) | public static void e(Throwable t, String message) {
    method w (line 40) | public static void w(String format, Object... args) {
    method w (line 44) | public static void w(Throwable t, String format, Object... args) {
    method w (line 48) | public static void w(String message) {
    method w (line 54) | public static void w(Throwable t, String message) {
    method i (line 60) | public static void i(String format, Object... args) {
    method i (line 64) | public static void i(Throwable t, String format, Object... args) {
    method i (line 68) | public static void i(String message) {
    method i (line 74) | public static void i(Throwable t, String message) {
    method d (line 80) | public static void d(String format, Object... args) {
    method d (line 84) | public static void d(Throwable t, String format, Object... args) {
    method d (line 88) | public static void d(String message) {
    method d (line 94) | public static void d(Throwable t, String message) {
    method v (line 100) | public static void v(String format, Object... args) {
    method v (line 104) | public static void v(Throwable t, String format, Object... args) {
    method v (line 108) | public static void v(String message) {
    method v (line 114) | public static void v(Throwable t, String message) {
    method format (line 120) | private static String format(String format, Object... args) {
    method isLoggable (line 131) | public static boolean isLoggable(int priority) {

FILE: stetho/src/main/java/com/facebook/stetho/common/Predicate.java
  type Predicate (line 10) | public interface Predicate<T> {
    method apply (line 11) | boolean apply(T t);

FILE: stetho/src/main/java/com/facebook/stetho/common/ProcessUtil.java
  class ProcessUtil (line 21) | public class ProcessUtil {
    method getProcessName (line 38) | @Nullable
    method readProcessName (line 50) | private static String readProcessName() throws IOException {
    method indexOf (line 66) | private static int indexOf(byte[] haystack, int offset, int length, by...
    method getUserId (line 75) | public static int getUserId() {
    class UserManager21Impl (line 83) | @Keep
      method supportsMultipleUsers (line 86) | public static boolean supportsMultipleUsers() {

FILE: stetho/src/main/java/com/facebook/stetho/common/ReflectionUtil.java
  class ReflectionUtil (line 16) | public final class ReflectionUtil {
    method ReflectionUtil (line 17) | private ReflectionUtil() {
    method tryGetClassForName (line 20) | @Nullable
    method tryGetDeclaredField (line 29) | @Nullable
    method getFieldValue (line 44) | @Nullable

FILE: stetho/src/main/java/com/facebook/stetho/common/StringUtil.java
  class StringUtil (line 10) | public final class StringUtil {
    method StringUtil (line 11) | private StringUtil() {
    method removePrefix (line 14) | @SuppressWarnings("StringEquality")
    method removePrefix (line 23) | public static String removePrefix(String string, String prefix) {
    method removeAll (line 31) | public static String removeAll(String string, char target) {

FILE: stetho/src/main/java/com/facebook/stetho/common/ThreadBound.java
  type ThreadBound (line 18) | public interface ThreadBound {
    method checkThreadAccess (line 23) | boolean checkThreadAccess();
    method verifyThreadAccess (line 29) | void verifyThreadAccess();
    method postAndWait (line 41) | <V> V postAndWait(UncheckedCallable<V> c);
    method postAndWait (line 50) | void postAndWait(Runnable r);
    method postDelayed (line 59) | void postDelayed(Runnable r, long delayMillis);
    method removeCallbacks (line 65) | void removeCallbacks(Runnable r);

FILE: stetho/src/main/java/com/facebook/stetho/common/UncheckedCallable.java
  type UncheckedCallable (line 19) | public interface UncheckedCallable<V> {
    method call (line 20) | V call();

FILE: stetho/src/main/java/com/facebook/stetho/common/Utf8Charset.java
  class Utf8Charset (line 13) | public class Utf8Charset {
    method encodeUTF8 (line 18) | public static byte[] encodeUTF8(String str) {
    method decodeUTF8 (line 26) | public static String decodeUTF8(byte[] bytes) {

FILE: stetho/src/main/java/com/facebook/stetho/common/Util.java
  class Util (line 21) | public class Util {
    method throwIfNull (line 22) | public static <T> T throwIfNull(T item) {
    method throwIfNull (line 29) | public static <T1, T2> void throwIfNull(T1 item1, T2 item2) {
    method throwIfNull (line 34) | public static <T1, T2, T3> void throwIfNull(T1 item1, T2 item2, T3 ite...
    method throwIfNotNull (line 40) | public static void throwIfNotNull(Object item) {
    method throwIf (line 46) | public static void throwIf(boolean condition) {
    method throwIfNot (line 52) | public static void throwIfNot(boolean condition) {
    method throwIfNot (line 58) | public static void throwIfNot(boolean condition, String format, Object...
    method copy (line 65) | public static void copy(InputStream input, OutputStream output, byte[]...
    method close (line 73) | public static void close(Closeable closeable, boolean hideException) t...
    method sleepUninterruptibly (line 87) | public static void sleepUninterruptibly(long millis) {
    method joinUninterruptibly (line 101) | public static void joinUninterruptibly(Thread t) {
    method awaitUninterruptibly (line 112) | public static void awaitUninterruptibly(CountDownLatch latch) {
    method getUninterruptibly (line 123) | public static <T> T getUninterruptibly(
    method getUninterruptibly (line 139) | public static <T> T getUninterruptibly(Future<T> future)
    method readAsUTF8 (line 150) | public static String readAsUTF8(InputStream in) throws IOException {

FILE: stetho/src/main/java/com/facebook/stetho/common/android/AccessibilityUtil.java
  class AccessibilityUtil (line 31) | public final class AccessibilityUtil {
    method AccessibilityUtil (line 32) | private AccessibilityUtil() {
    method hasText (line 41) | public static boolean hasText(@Nullable AccessibilityNodeInfoCompat no...
    method isSpeakingNode (line 58) | public static boolean isSpeakingNode(
    method hasNonActionableSpeakingDescendants (line 91) | public static boolean hasNonActionableSpeakingDescendants(
    method isAccessibilityFocusable (line 134) | public static boolean isAccessibilityFocusable(
    method isTopLevelScrollItem (line 163) | public static boolean isTopLevelScrollItem(
    method isActionableForAccessibility (line 206) | public static boolean isActionableForAccessibility(@Nullable Accessibi...
    method hasFocusableAncestor (line 230) | public static boolean hasFocusableAncestor(

FILE: stetho/src/main/java/com/facebook/stetho/common/android/DialogFragmentAccessor.java
  type DialogFragmentAccessor (line 12) | public interface DialogFragmentAccessor<DIALOG_FRAGMENT, FRAGMENT, FRAGM...
    method getDialog (line 14) | Dialog getDialog(DIALOG_FRAGMENT dialogFragment);

FILE: stetho/src/main/java/com/facebook/stetho/common/android/FragmentAccessor.java
  type FragmentAccessor (line 15) | public interface FragmentAccessor<FRAGMENT, FRAGMENT_MANAGER> {
    method getFragmentManager (line 18) | @Nullable
    method getResources (line 21) | Resources getResources(FRAGMENT fragment);
    method getId (line 23) | int getId(FRAGMENT fragment);
    method getTag (line 25) | @Nullable
    method getView (line 28) | @Nullable
    method getChildFragmentManager (line 31) | @Nullable

FILE: stetho/src/main/java/com/facebook/stetho/common/android/FragmentActivityAccessor.java
  type FragmentActivityAccessor (line 14) | public interface FragmentActivityAccessor<
    method getFragmentManager (line 17) | @Nullable

FILE: stetho/src/main/java/com/facebook/stetho/common/android/FragmentCompat.java
  class FragmentCompat (line 34) | @NotThreadSafe
    method getFrameworkInstance (line 50) | @Nullable
    method getSupportLibInstance (line 58) | @Nullable
    method FragmentCompat (line 67) | FragmentCompat() {
    method getFragmentClass (line 70) | public abstract Class<FRAGMENT> getFragmentClass();
    method getDialogFragmentClass (line 71) | public abstract Class<DIALOG_FRAGMENT> getDialogFragmentClass();
    method getFragmentActivityClass (line 72) | public abstract Class<FRAGMENT_ACTIVITY> getFragmentActivityClass();
    method forFragment (line 74) | public abstract FragmentAccessor<FRAGMENT, FRAGMENT_MANAGER> forFragme...
    method forDialogFragment (line 75) | public abstract DialogFragmentAccessor<DIALOG_FRAGMENT, FRAGMENT, FRAG...
    method forFragmentManager (line 77) | public abstract FragmentManagerAccessor<FRAGMENT_MANAGER, FRAGMENT> fo...
    method forFragmentActivity (line 78) | public abstract FragmentActivityAccessor<FRAGMENT_ACTIVITY, FRAGMENT_M...
    class FragmentManagerAccessorViaReflection (line 80) | static class FragmentManagerAccessorViaReflection<FRAGMENT_MANAGER, FR...
      method getAddedFragments (line 85) | @SuppressWarnings("unchecked")

FILE: stetho/src/main/java/com/facebook/stetho/common/android/FragmentCompatFramework.java
  class FragmentCompatFramework (line 22) | final class FragmentCompatFramework
    method getFragmentClass (line 41) | @Override
    method getDialogFragmentClass (line 46) | @Override
    method getFragmentActivityClass (line 51) | @Override
    method forFragment (line 56) | @Override
    method forDialogFragment (line 61) | @Override
    method forFragmentManager (line 66) | @Override
    method forFragmentActivity (line 71) | @Override
    class FragmentAccessorFrameworkHoneycomb (line 76) | private static class FragmentAccessorFrameworkHoneycomb
      method getFragmentManager (line 78) | @Nullable
      method getResources (line 84) | @Override
      method getId (line 89) | @Override
      method getTag (line 94) | @Nullable
      method getView (line 100) | @Nullable
      method getChildFragmentManager (line 106) | @Nullable
    class FragmentAccessorFrameworkJellyBean (line 113) | @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
      method getChildFragmentManager (line 116) | @Nullable
    class DialogFragmentAccessorFramework (line 123) | private static class DialogFragmentAccessorFramework
      method DialogFragmentAccessorFramework (line 127) | public DialogFragmentAccessorFramework(
      method getDialog (line 132) | @Override
      method getFragmentManager (line 137) | @Nullable
      method getResources (line 143) | @Override
      method getId (line 148) | @Override
      method getTag (line 153) | @Nullable
      method getView (line 159) | @Nullable
      method getChildFragmentManager (line 165) | @Nullable
    class FragmentActivityAccessorFramework (line 172) | private static class FragmentActivityAccessorFramework
      method getFragmentManager (line 174) | @Nullable

FILE: stetho/src/main/java/com/facebook/stetho/common/android/FragmentCompatSupportLib.java
  class FragmentCompatSupportLib (line 21) | final class FragmentCompatSupportLib
    method getFragmentClass (line 32) | @Override
    method getDialogFragmentClass (line 37) | @Override
    method getFragmentActivityClass (line 42) | @Override
    method forFragment (line 47) | @Override
    method forDialogFragment (line 52) | @Override
    method forFragmentManager (line 57) | @Override
    method forFragmentActivity (line 62) | @Override
    class FragmentAccessorSupportLib (line 67) | private static class FragmentAccessorSupportLib
      method getFragmentManager (line 69) | @Nullable
      method getResources (line 75) | @Override
      method getId (line 80) | @Override
      method getTag (line 85) | @Nullable
      method getView (line 91) | @Nullable
      method getChildFragmentManager (line 97) | @Nullable
    class DialogFragmentAccessorSupportLib (line 104) | private static class DialogFragmentAccessorSupportLib
      method getDialog (line 107) | @Override
    class FragmentActivityAccessorSupportLib (line 113) | private static class FragmentActivityAccessorSupportLib
      method getFragmentManager (line 115) | @Nullable

FILE: stetho/src/main/java/com/facebook/stetho/common/android/FragmentCompatUtil.java
  class FragmentCompatUtil (line 17) | public final class FragmentCompatUtil {
    method FragmentCompatUtil (line 18) | private FragmentCompatUtil() {
    method isDialogFragment (line 21) | public static boolean isDialogFragment(Object fragment) {
    method findFragmentForView (line 37) | @Nullable
    method findFragmentForViewInActivity (line 47) | @Nullable
    method findFragmentForViewInActivity (line 75) | private static Object findFragmentForViewInActivity(
    method findFragmentForViewInFragmentManager (line 87) | @Nullable
    method findFragmentForViewInFragment (line 107) | @Nullable

FILE: stetho/src/main/java/com/facebook/stetho/common/android/FragmentManagerAccessor.java
  type FragmentManagerAccessor (line 14) | public interface FragmentManagerAccessor<FRAGMENT_MANAGER, FRAGMENT> {
    method getAddedFragments (line 15) | @Nullable

FILE: stetho/src/main/java/com/facebook/stetho/common/android/HandlerUtil.java
  class HandlerUtil (line 15) | public final class HandlerUtil {
    method HandlerUtil (line 16) | private HandlerUtil() {
    method checkThreadAccess (line 25) | public static boolean checkThreadAccess(Handler handler) {
    method verifyThreadAccess (line 35) | public static void verifyThreadAccess(Handler handler) {
    method postAndWait (line 49) | public static <V> V postAndWait(Handler handler, final UncheckedCallab...
    method postAndWait (line 75) | public static void postAndWait(Handler handler, final Runnable r) {
    class WaitableRunnable (line 96) | private static abstract class WaitableRunnable<V> implements Runnable {
      method WaitableRunnable (line 101) | protected WaitableRunnable() {
      method run (line 104) | @Override
      method onRun (line 120) | protected abstract V onRun();
      method invoke (line 122) | public V invoke(Handler handler) {
      method join (line 136) | private void join() {

FILE: stetho/src/main/java/com/facebook/stetho/common/android/ResourcesUtil.java
  class ResourcesUtil (line 16) | public class ResourcesUtil {
    method ResourcesUtil (line 17) | private ResourcesUtil() {
    method getIdStringQuietly (line 20) | @Nonnull
    method getIdString (line 31) | public static String getIdString(@Nullable Resources r, int resourceId)
    method getFallbackIdString (line 66) | private static String getFallbackIdString(int resourceId) {
    method getResourcePackageId (line 70) | private static int getResourcePackageId(int id) {

FILE: stetho/src/main/java/com/facebook/stetho/common/android/ViewGroupUtil.java
  class ViewGroupUtil (line 13) | public final class ViewGroupUtil {
    method ViewGroupUtil (line 14) | private ViewGroupUtil() {
    method findChildIndex (line 17) | public static int findChildIndex(ViewGroup parent, View child) {

FILE: stetho/src/main/java/com/facebook/stetho/common/android/ViewUtil.java
  class ViewUtil (line 18) | final class ViewUtil {
    method ViewUtil (line 19) | private ViewUtil() {
    method tryGetActivity (line 22) | @Nullable
    method tryGetActivity (line 44) | @Nullable

FILE: stetho/src/main/java/com/facebook/stetho/dumpapp/ArgsHelper.java
  class ArgsHelper (line 14) | public class ArgsHelper {
    method nextOptionalArg (line 15) | public static String nextOptionalArg(Iterator<String> argsIter, String...
    method nextArg (line 19) | public static String nextArg(Iterator<String> argsIter, String errorIf...
    method drainToArray (line 27) | public static String[] drainToArray(Iterator<String> argsIter) {

FILE: stetho/src/main/java/com/facebook/stetho/dumpapp/DumpException.java
  class DumpException (line 19) | public class DumpException extends Exception {
    method DumpException (line 20) | public DumpException(String message) {

FILE: stetho/src/main/java/com/facebook/stetho/dumpapp/DumpUsageException.java
  class DumpUsageException (line 13) | public class DumpUsageException extends DumpException {
    method DumpUsageException (line 14) | public DumpUsageException(String message) {

FILE: stetho/src/main/java/com/facebook/stetho/dumpapp/DumpappFramingException.java
  class DumpappFramingException (line 16) | class DumpappFramingException extends IOException {
    method DumpappFramingException (line 17) | public DumpappFramingException(String message) {

FILE: stetho/src/main/java/com/facebook/stetho/dumpapp/DumpappHttpSocketLikeHandler.java
  class DumpappHttpSocketLikeHandler (line 37) | @Deprecated
    method DumpappHttpSocketLikeHandler (line 41) | public DumpappHttpSocketLikeHandler(Dumper dumper) {
    method onAccepted (line 49) | @Override
    class DumpappLegacyHttpHandler (line 54) | private static class DumpappLegacyHttpHandler implements HttpHandler {
      method DumpappLegacyHttpHandler (line 61) | public DumpappLegacyHttpHandler(Dumper dumper) {
      method handleRequest (line 65) | @Override

FILE: stetho/src/main/java/com/facebook/stetho/dumpapp/DumpappOutputBrokenException.java
  class DumpappOutputBrokenException (line 26) | class DumpappOutputBrokenException extends RuntimeException {
    method DumpappOutputBrokenException (line 28) | public DumpappOutputBrokenException() {
    method DumpappOutputBrokenException (line 31) | public DumpappOutputBrokenException(String detailMessage) {
    method DumpappOutputBrokenException (line 35) | public DumpappOutputBrokenException(String detailMessage, Throwable th...
    method DumpappOutputBrokenException (line 39) | public DumpappOutputBrokenException(Throwable throwable) {

FILE: stetho/src/main/java/com/facebook/stetho/dumpapp/DumpappSocketLikeHandler.java
  class DumpappSocketLikeHandler (line 26) | public class DumpappSocketLikeHandler implements SocketLikeHandler {
    method DumpappSocketLikeHandler (line 32) | public DumpappSocketLikeHandler(Dumper dumper) {
    method onAccepted (line 36) | @Override
    method dump (line 49) | static void dump(Dumper dumper, Framer framer, String[] args) throws I...
    method establishConversation (line 79) | private void establishConversation(DataInputStream in) throws IOExcept...
    method logAndThrowProtocolException (line 94) | private static IOException logAndThrowProtocolException(String message...
    method readArgs (line 99) | private String[] readArgs(Framer framer) throws IOException {

FILE: stetho/src/main/java/com/facebook/stetho/dumpapp/Dumper.java
  class Dumper (line 25) | public class Dumper {
    method Dumper (line 34) | public Dumper(Iterable<DumperPlugin> dumperPlugins) {
    method Dumper (line 38) | public Dumper(
    method generatePluginMap (line 46) | private static Map<String, DumperPlugin> generatePluginMap(Iterable<Du...
    method dump (line 65) | public int dump(InputStream input, PrintStream out, PrintStream err, S...
    method doDump (line 89) | private int doDump(InputStream input, PrintStream out, PrintStream err...
    method dumpAvailablePlugins (line 111) | private void dumpAvailablePlugins(PrintStream output) {
    method dumpPluginOutput (line 122) | private void dumpPluginOutput(InputStream input,
    method dumpUsage (line 141) | private void dumpUsage(PrintStream output) {

FILE: stetho/src/main/java/com/facebook/stetho/dumpapp/DumperContext.java
  class DumperContext (line 20) | @Immutable
    method DumperContext (line 32) | protected DumperContext(
    method DumperContext (line 43) | public DumperContext(
    method getStdin (line 60) | public InputStream getStdin() {
    method getStdout (line 67) | public PrintStream getStdout() {
    method getStderr (line 74) | public PrintStream getStderr() {
    method getParser (line 78) | public CommandLineParser getParser() {
    method getArgsAsList (line 82) | public List<String> getArgsAsList() {

FILE: stetho/src/main/java/com/facebook/stetho/dumpapp/DumperPlugin.java
  type DumperPlugin (line 57) | public interface DumperPlugin {
    method getName (line 65) | String getName();
    method dump (line 77) | void dump(DumperContext dumpContext) throws DumpException;

FILE: stetho/src/main/java/com/facebook/stetho/dumpapp/Framer.java
  class Framer (line 56) | class Framer {
    method Framer (line 72) | public Framer(InputStream input, OutputStream output) throws IOExcepti...
    method getStdin (line 83) | public InputStream getStdin() {
    method getStdout (line 87) | public PrintStream getStdout() {
    method getStderr (line 91) | public PrintStream getStderr() {
    method readFrameType (line 95) | public byte readFrameType() throws IOException {
    method readInt (line 99) | public int readInt() throws IOException {
    method readString (line 103) | public String readString() throws IOException {
    method writeExitCode (line 110) | public void writeExitCode(int exitCode) throws IOException {
    method writeIntFrame (line 116) | public void writeIntFrame(byte type, int intParameter) throws IOExcept...
    method writeBlob (line 121) | public void writeBlob(byte[] data, int offset, int count) throws IOExc...
    method handleSuppression (line 125) | private static <T extends Throwable> T handleSuppression(@Nullable T p...
    class FramingInputStream (line 134) | private class FramingInputStream extends InputStream {
      method read (line 137) | @Override
      method read (line 146) | @Override
      method read (line 151) | @Override
      method skip (line 176) | @Override
      method close (line 193) | @Override
    class FramingOutputStream (line 199) | private class FramingOutputStream extends OutputStream {
      method FramingOutputStream (line 204) | public FramingOutputStream(byte prefix) {
      method write (line 208) | @Override
      method write (line 226) | @Override
      method write (line 232) | @Override
      method close (line 237) | @Override
    class ClosedHelper (line 243) | private static class ClosedHelper {
      method throwIfClosed (line 246) | public void throwIfClosed() throws IOException {
      method close (line 252) | public void close() {

FILE: stetho/src/main/java/com/facebook/stetho/dumpapp/GlobalOptions.java
  class GlobalOptions (line 13) | public class GlobalOptions {
    method GlobalOptions (line 26) | public GlobalOptions() {

FILE: stetho/src/main/java/com/facebook/stetho/dumpapp/UnexpectedFrameException.java
  class UnexpectedFrameException (line 10) | class UnexpectedFrameException extends DumpappFramingException {
    method UnexpectedFrameException (line 11) | public UnexpectedFrameException(byte expected, byte got) {

FILE: stetho/src/main/java/com/facebook/stetho/dumpapp/plugins/CrashDumperPlugin.java
  class CrashDumperPlugin (line 32) | public class CrashDumperPlugin implements DumperPlugin {
    method CrashDumperPlugin (line 39) | public CrashDumperPlugin() {
    method getName (line 42) | @Override
    method dump (line 47) | @Override
    method doUsage (line 66) | private void doUsage(PrintStream out) {
    method doSystemExit (line 87) | private void doSystemExit(Iterator<String> argsIter) {
    method doKill (line 92) | private void doKill(DumperContext dumpContext, Iterator<String> argsIt...
    method doUncaughtException (line 113) | private void doUncaughtException(Iterator<String> argsIter) throws Dum...
    method tryGetDeclaredConstructor (line 147) | @Nullable
    class ThrowRunnable (line 158) | private static class ThrowRunnable implements Runnable {
      method ThrowRunnable (line 161) | public ThrowRunnable(Throwable t) {
      method run (line 165) | @Override

FILE: stetho/src/main/java/com/facebook/stetho/dumpapp/plugins/FilesDumperPlugin.java
  class FilesDumperPlugin (line 32) | public class FilesDumperPlugin implements DumperPlugin {
    method FilesDumperPlugin (line 37) | public FilesDumperPlugin(Context context) {
    method getName (line 41) | @Override
    method dump (line 46) | @Override
    method doLs (line 65) | private void doLs(PrintStream writer) throws DumpUsageException {
    method doTree (line 72) | private void doTree(PrintStream writer) throws DumpUsageException {
    method getBaseDir (line 77) | private static File getBaseDir(Context context) {
    method printDirectoryText (line 82) | private static void printDirectoryText(File dir, String path, PrintStr...
    method printDirectoryVisual (line 94) | private static void printDirectoryVisual(File dir, int depth, PrintStr...
    method printHeaderVisual (line 109) | private static void printHeaderVisual(int depth, PrintStream writer) {
    method doDownload (line 115) | private void doDownload(PrintStream writer, Iterator<String> remaining...
    method addFiles (line 155) | private void addFiles(ZipOutputStream output, byte[] buf, File[] files...
    method copy (line 175) | private static void copy(InputStream in, OutputStream out, byte[] buf)...
    method relativizePath (line 183) | private static String relativizePath(File base, File path) {
    method resolvePossibleAppStoragePath (line 194) | private static File resolvePossibleAppStoragePath(Context context, Str...
    method resolvePossibleSdcardPath (line 202) | private static File resolvePossibleSdcardPath(String path) {
    method doUsage (line 210) | private void doUsage(PrintStream writer) {

FILE: stetho/src/main/java/com/facebook/stetho/dumpapp/plugins/HprofDumperPlugin.java
  class HprofDumperPlugin (line 33) | public class HprofDumperPlugin implements DumperPlugin {
    method HprofDumperPlugin (line 38) | public HprofDumperPlugin(Context context) {
    method getName (line 42) | @Override
    method dump (line 47) | @Override
    method handlePipeOutput (line 69) | private void handlePipeOutput(OutputStream output) throws DumpException {
    method writeHprof (line 90) | private void writeHprof(File outputPath) throws DumpException {
    method truncateAndDeleteFile (line 101) | private static void truncateAndDeleteFile(File file) throws IOException {
    method usage (line 109) | private void usage(PrintStream output) throws DumpUsageException {

FILE: stetho/src/main/java/com/facebook/stetho/dumpapp/plugins/SharedPreferencesDumperPlugin.java
  class SharedPreferencesDumperPlugin (line 30) | public class SharedPreferencesDumperPlugin implements DumperPlugin {
    method SharedPreferencesDumperPlugin (line 36) | public SharedPreferencesDumperPlugin(Context context) {
    method getName (line 40) | @Override
    method dump (line 45) | @Override
    method doWrite (line 65) | @SuppressLint("CommitPrefEdits")
    method nextArg (line 107) | @Nonnull
    method nextArgValue (line 116) | @Nonnull
    method putStringSet (line 121) | private static void putStringSet(
    method doPrint (line 136) | private void doPrint(PrintStream writer, List<String> args) {
    method printRecursive (line 144) | private void printRecursive(
    method printFile (line 172) | private void printFile(PrintStream writer, String prefsName, String ke...
    method doUsage (line 182) | private void doUsage(PrintStream writer) {
    method getSharedPreferences (line 200) | private SharedPreferences getSharedPreferences(String name) {
    type Type (line 204) | private enum Type {
      method Type (line 214) | private Type(String name) {
      method of (line 218) | public static @Nullable Type of(String name) {
      method appendNamesList (line 227) | public static StringBuilder appendNamesList(StringBuilder builder, S...

FILE: stetho/src/main/java/com/facebook/stetho/inspector/ChromeDevtoolsServer.java
  class ChromeDevtoolsServer (line 39) | public class ChromeDevtoolsServer implements SimpleEndpoint {
    method ChromeDevtoolsServer (line 50) | public ChromeDevtoolsServer(Iterable<ChromeDevtoolsDomain> domainModul...
    method onOpen (line 55) | @Override
    method onClose (line 61) | @Override
    method onMessage (line 71) | @Override
    method onMessage (line 76) | @Override
    method closeSafely (line 100) | private void closeSafely(SimpleSession session, int code, String reaso...
    method handleRemoteMessage (line 104) | private void handleRemoteMessage(JsonRpcPeer peer, String message)
    method handleRemoteRequest (line 117) | private void handleRemoteRequest(JsonRpcPeer peer, JSONObject requestN...
    method logDispatchException (line 154) | private static void logDispatchException(JsonRpcException e) {
    method handleRemoteResponse (line 165) | private void handleRemoteResponse(JsonRpcPeer peer, JSONObject respons...
    method onError (line 179) | @Override

FILE: stetho/src/main/java/com/facebook/stetho/inspector/ChromeDiscoveryHandler.java
  class ChromeDiscoveryHandler (line 35) | public class ChromeDiscoveryHandler implements HttpHandler {
    method ChromeDiscoveryHandler (line 62) | public ChromeDiscoveryHandler(Context context, String inspectorPath) {
    method register (line 67) | public void register(HandlerRegistry registry) {
    method handleRequest (line 74) | @Override
    method handleVersion (line 97) | private void handleVersion(LightHttpResponse response)
    method handlePageList (line 111) | private void handlePageList(LightHttpResponse response)
    method makeTitle (line 138) | private String makeTitle() {
    method handleActivate (line 154) | private void handleActivate(LightHttpResponse response) {
    method setSuccessfulResponse (line 161) | private static void setSuccessfulResponse(
    method getAppLabelAndVersion (line 169) | private String getAppLabelAndVersion() {
    method getAppLabel (line 183) | private CharSequence getAppLabel() {

FILE: stetho/src/main/java/com/facebook/stetho/inspector/DevtoolsSocketHandler.java
  class DevtoolsSocketHandler (line 23) | public class DevtoolsSocketHandler implements SocketLikeHandler {
    method DevtoolsSocketHandler (line 28) | public DevtoolsSocketHandler(Context context, Iterable<ChromeDevtoolsD...
    method createServer (line 34) | private LightHttpServer createServer() {
    method onAccepted (line 48) | @Override

FILE: stetho/src/main/java/com/facebook/stetho/inspector/MessageHandlingException.java
  class MessageHandlingException (line 10) | public class MessageHandlingException extends Exception {
    method MessageHandlingException (line 11) | public MessageHandlingException(Throwable cause) {
    method MessageHandlingException (line 15) | public MessageHandlingException(String message) {

FILE: stetho/src/main/java/com/facebook/stetho/inspector/MethodDispatcher.java
  class MethodDispatcher (line 34) | @ThreadSafe
    method MethodDispatcher (line 42) | public MethodDispatcher(
    method findMethodDispatcher (line 49) | private synchronized MethodDispatchHelper findMethodDispatcher(String ...
    method dispatch (line 56) | public JSONObject dispatch(JsonRpcPeer peer, String methodName, @Nulla...
    class MethodDispatchHelper (line 79) | private static class MethodDispatchHelper {
      method MethodDispatchHelper (line 84) | public MethodDispatchHelper(ObjectMapper objectMapper,
      method invoke (line 92) | public JSONObject invoke(JsonRpcPeer peer, @Nullable JSONObject params)
    method buildDispatchTable (line 104) | private static Map<String, MethodDispatchHelper> buildDispatchTable(
    method isDevtoolsMethod (line 133) | private static boolean isDevtoolsMethod(Method method) throws IllegalA...

FILE: stetho/src/main/java/com/facebook/stetho/inspector/MismatchedResponseException.java
  class MismatchedResponseException (line 10) | public class MismatchedResponseException extends MessageHandlingException {
    method MismatchedResponseException (line 13) | public MismatchedResponseException(long requestId) {
    method getRequestId (line 18) | public long getRequestId() {

FILE: stetho/src/main/java/com/facebook/stetho/inspector/console/CLog.java
  class CLog (line 19) | public class CLog {
    method writeToConsole (line 22) | public static void writeToConsole(
    method writeToConsole (line 39) | public static void writeToConsole(

FILE: stetho/src/main/java/com/facebook/stetho/inspector/console/ConsolePeerManager.java
  class ConsolePeerManager (line 14) | public class ConsolePeerManager extends ChromePeerManager {
    method ConsolePeerManager (line 18) | private ConsolePeerManager() {
    method getInstanceOrNull (line 22) | @Nullable
    method getOrCreateInstance (line 27) | public static synchronized ConsolePeerManager getOrCreateInstance() {

FILE: stetho/src/main/java/com/facebook/stetho/inspector/console/RuntimeRepl.java
  type RuntimeRepl (line 10) | public interface RuntimeRepl {
    method evaluate (line 11) | Object evaluate(String expression) throws Throwable;

FILE: stetho/src/main/java/com/facebook/stetho/inspector/console/RuntimeReplFactory.java
  type RuntimeReplFactory (line 19) | public interface RuntimeReplFactory {
    method newInstance (line 20) | RuntimeRepl newInstance();

FILE: stetho/src/main/java/com/facebook/stetho/inspector/database/ContentProviderDatabaseDriver.java
  class ContentProviderDatabaseDriver (line 25) | @ThreadSafe
    method ContentProviderDatabaseDriver (line 34) | public ContentProviderDatabaseDriver(
    method getDatabaseNames (line 41) | @Override
    method getTableNames (line 46) | @Override
    method executeSQL (line 57) | @Override
    method fetchTableName (line 88) | private String fetchTableName(String query) {
    class ContentProviderDatabaseDescriptor (line 97) | static class ContentProviderDatabaseDescriptor implements DatabaseDesc...
      method ContentProviderDatabaseDescriptor (line 98) | public ContentProviderDatabaseDescriptor() {
      method name (line 101) | @Override

FILE: stetho/src/main/java/com/facebook/stetho/inspector/database/ContentProviderSchema.java
  class ContentProviderSchema (line 12) | public class ContentProviderSchema {
    method ContentProviderSchema (line 18) | private ContentProviderSchema(Builder builder) {
    method getTableName (line 24) | public String getTableName() {
    method getUri (line 28) | public Uri getUri() {
    method getProjection (line 32) | public String[] getProjection() {
    class Builder (line 36) | public static class Builder {
      method table (line 40) | public Builder table(Table table) {
      method build (line 45) | public ContentProviderSchema build() {
    class Table (line 51) | public static class Table {
      method Table (line 57) | private Table(Builder builder) {
      class Builder (line 66) | public static class Builder {
        method uri (line 72) | public Builder uri(Uri contentUri) {
        method projection (line 78) | public Builder projection(String[] columns) {
        method name (line 84) | public Builder name(String tableName) {
        method build (line 89) | public Table build() {

FILE: stetho/src/main/java/com/facebook/stetho/inspector/database/DatabaseConnectionProvider.java
  type DatabaseConnectionProvider (line 19) | public interface DatabaseConnectionProvider {
    method openDatabase (line 25) | SQLiteDatabase openDatabase(File databaseFile) throws SQLiteException;

FILE: stetho/src/main/java/com/facebook/stetho/inspector/database/DatabaseDriver2Adapter.java
  class DatabaseDriver2Adapter (line 23) | @Deprecated
    method DatabaseDriver2Adapter (line 28) | public DatabaseDriver2Adapter(Database.DatabaseDriver legacy) {
    method getDatabaseNames (line 33) | @Override
    method getTableNames (line 43) | @SuppressWarnings("unchecked")
    method executeSQL (line 48) | @SuppressWarnings("unchecked")
    class StringDatabaseDescriptor (line 56) | static class StringDatabaseDescriptor implements DatabaseDescriptor {
      method StringDatabaseDescriptor (line 59) | public StringDatabaseDescriptor(String name) {
      method name (line 63) | @Override

FILE: stetho/src/main/java/com/facebook/stetho/inspector/database/DatabaseFilesProvider.java
  type DatabaseFilesProvider (line 16) | public interface DatabaseFilesProvider {
    method getDatabaseFiles (line 21) | List<File> getDatabaseFiles();

FILE: stetho/src/main/java/com/facebook/stetho/inspector/database/DefaultDatabaseConnectionProvider.java
  class DefaultDatabaseConnectionProvider (line 24) | public class DefaultDatabaseConnectionProvider implements DatabaseConnec...
    method DefaultDatabaseConnectionProvider (line 25) | public DefaultDatabaseConnectionProvider() {
    method openDatabase (line 28) | @Override
    method determineOpenOptions (line 38) | protected @SQLiteOpenOptions int determineOpenOptions(File databaseFil...
    method performOpen (line 56) | protected SQLiteDatabase performOpen(File databaseFile, @SQLiteOpenOpt...

FILE: stetho/src/main/java/com/facebook/stetho/inspector/database/DefaultDatabaseFilesProvider.java
  class DefaultDatabaseFilesProvider (line 19) | public final class DefaultDatabaseFilesProvider implements DatabaseFiles...
    method DefaultDatabaseFilesProvider (line 22) | public DefaultDatabaseFilesProvider(Context context) {
    method getDatabaseFiles (line 26) | @Override

FILE: stetho/src/main/java/com/facebook/stetho/inspector/database/SQLiteDatabaseCompat.java
  class SQLiteDatabaseCompat (line 22) | public abstract class SQLiteDatabaseCompat {
    method getInstance (line 40) | public static SQLiteDatabaseCompat getInstance() {
    method provideOpenFlags (line 44) | public abstract int provideOpenFlags(@SQLiteOpenOptions int openOptions);
    method enableFeatures (line 45) | public abstract void enableFeatures(@SQLiteOpenOptions int openOptions...
    class JellyBeanAndBeyondImpl (line 47) | @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
      method provideOpenFlags (line 49) | @Override
      method enableFeatures (line 58) | @Override
    class IceCreamSandwichImpl (line 66) | @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
      method provideOpenFlags (line 68) | @Override
      method enableFeatures (line 73) | @Override

FILE: stetho/src/main/java/com/facebook/stetho/inspector/database/SqliteDatabaseDriver.java
  class SqliteDatabaseDriver (line 32) | @ThreadSafe
    method SqliteDatabaseDriver (line 52) | @Deprecated
    method SqliteDatabaseDriver (line 63) | @Deprecated
    method SqliteDatabaseDriver (line 79) | public SqliteDatabaseDriver(
    method getDatabaseNames (line 88) | @Override
    method tidyDatabaseList (line 109) | static List<File> tidyDatabaseList(List<File> databaseFiles) {
    method removeSuffix (line 122) | private static String removeSuffix(String str, String[] suffixesToRemo...
    method getTableNames (line 131) | public List<String> getTableNames(SqliteDatabaseDescriptor databaseDesc)
    method executeSQL (line 151) | public Database.ExecuteSQLResponse executeSQL(
    method getFirstWord (line 179) | private static String getFirstWord(String s) {
    method executeUpdateDelete (line 185) | @TargetApi(DatabaseConstants.MIN_API_LEVEL)
    method executeInsert (line 195) | private <T> T executeInsert(
    method executeSelect (line 204) | private <T> T executeSelect(
    method executeRawQuery (line 216) | private <T> T executeRawQuery(
    method openDatabase (line 224) | private SQLiteDatabase openDatabase(
    class SqliteDatabaseDescriptor (line 231) | static class SqliteDatabaseDescriptor implements DatabaseDescriptor {
      method SqliteDatabaseDescriptor (line 234) | public SqliteDatabaseDescriptor(File file) {
      method name (line 238) | @Override

FILE: stetho/src/main/java/com/facebook/stetho/inspector/domstorage/DOMStoragePeerManager.java
  class DOMStoragePeerManager (line 27) | public class DOMStoragePeerManager extends ChromePeerManager {
    method DOMStoragePeerManager (line 30) | public DOMStoragePeerManager(Context context) {
    method signalItemRemoved (line 35) | public void signalItemRemoved(DOMStorage.StorageId storageId, String k...
    method signalItemAdded (line 43) | public void signalItemAdded(DOMStorage.StorageId storageId, String key...
    method signalItemUpdated (line 52) | public void signalItemUpdated(
    method onFirstPeerRegistered (line 70) | @Override
    method onLastPeerUnregistered (line 87) | @Override
    class DevToolsSharedPreferencesListener (line 96) | private class DevToolsSharedPreferencesListener
      method DevToolsSharedPreferencesListener (line 109) | public DevToolsSharedPreferencesListener(SharedPreferences prefs, St...
      method unregister (line 117) | public void unregister() {
      method onSharedPreferenceChanged (line 121) | @Override
    method prefsCopy (line 151) | private static Map<String, Object> prefsCopy(Map<String, ?> src) {
    method shallowCopy (line 165) | private static <T> Set<T> shallowCopy(Set<T> src) {

FILE: stetho/src/main/java/com/facebook/stetho/inspector/domstorage/SharedPreferencesHelper.java
  class SharedPreferencesHelper (line 27) | public class SharedPreferencesHelper {
    method SharedPreferencesHelper (line 30) | private SharedPreferencesHelper() {
    method getSharedPreferenceTags (line 33) | public static List<String> getSharedPreferenceTags(Context context) {
    method getSharedPreferenceEntriesSorted (line 52) | public static Set<Entry<String, ?>> getSharedPreferenceEntriesSorted(S...
    method valueToString (line 63) | public static String valueToString(Object value) {
    method valueFromString (line 79) | @Nullable
    method parseBoolean (line 110) | private static Boolean parseBoolean(String s) throws IllegalArgumentEx...

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/AbstractChainedDescriptor.java
  class AbstractChainedDescriptor (line 35) | public abstract class AbstractChainedDescriptor<E>
    method setSuper (line 40) | @Override
    method getSuper (line 52) | final Descriptor<? super E> getSuper() {
    method hook (line 56) | @Override
    method onHook (line 63) | protected void onHook(E element) {
    method unhook (line 66) | @Override
    method onUnhook (line 73) | protected void onUnhook(E element) {
    method getNodeType (line 76) | @Override
    method onGetNodeType (line 81) | protected NodeType onGetNodeType(E element) {
    method getNodeName (line 85) | @Override
    method onGetNodeName (line 90) | protected String onGetNodeName(E element) {
    method getLocalName (line 94) | @Override
    method onGetLocalName (line 99) | protected String onGetLocalName(E element) {
    method getNodeValue (line 103) | @Override
    method onGetNodeValue (line 108) | @Nullable
    method getChildren (line 113) | @Override
    method onGetChildren (line 119) | protected void onGetChildren(E element, Accumulator<Object> children) {
    method getAttributes (line 122) | @Override
    method onGetAttributes (line 128) | protected void onGetAttributes(E element, AttributeAccumulator attribu...
    method setAttributesAsText (line 131) | @Override
    method onSetAttributesAsText (line 136) | protected void onSetAttributesAsText(E element, String text) {
    method getStyleRuleNames (line 140) | @Override
    method onGetStyleRuleNames (line 146) | protected void onGetStyleRuleNames(E element, StyleRuleNameAccumulator...
    method getStyles (line 149) | @Override
    method onGetStyles (line 155) | protected void onGetStyles(E element, String ruleName, StyleAccumulato...
    method setStyle (line 158) | @Override
    method onSetStyle (line 164) | protected void onSetStyle(E element, String ruleName, String name, Str...
    method getComputedStyles (line 167) | @Override
    method onGetComputedStyles (line 173) | protected void onGetComputedStyles(E element, ComputedStyleAccumulator...

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/AttributeAccumulator.java
  type AttributeAccumulator (line 10) | public interface AttributeAccumulator {
    method store (line 11) | void store(String name, String value);

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/ChainedDescriptor.java
  type ChainedDescriptor (line 53) | public interface ChainedDescriptor<E> {
    method setSuper (line 54) | void setSuper(Descriptor<? super E> superDescriptor);

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/ComputedStyleAccumulator.java
  type ComputedStyleAccumulator (line 10) | public interface ComputedStyleAccumulator {
    method store (line 11) | void store(String name, String value);

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/Descriptor.java
  class Descriptor (line 18) | public abstract class Descriptor<E> implements NodeDescriptor<E> {
    method Descriptor (line 21) | protected Descriptor() {
    method initialize (line 24) | final void initialize(Host host) {
    method isInitialized (line 30) | final boolean isInitialized() {
    method getHost (line 34) | protected final Host getHost() {
    method checkThreadAccess (line 38) | @Override
    method verifyThreadAccess (line 43) | @Override
    method postAndWait (line 48) | @Override
    method postAndWait (line 53) | @Override
    method postDelayed (line 58) | @Override
    method removeCallbacks (line 63) | @Override
    method parseSetAttributesAsTextArg (line 74) | protected static Map<String, String> parseSetAttributesAsTextArg(Strin...
    type Host (line 103) | public interface Host extends ThreadBound {
      method getDescriptor (line 104) | @Nullable
      method onAttributeModified (line 107) | public void onAttributeModified(
      method onAttributeRemoved (line 112) | public void onAttributeRemoved(

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/DescriptorMap.java
  class DescriptorMap (line 17) | public final class DescriptorMap implements DescriptorRegistrar {
    method beginInit (line 22) | public DescriptorMap beginInit() {
    method registerDescriptor (line 28) | @Override
    method setHost (line 49) | public DescriptorMap setHost(Descriptor.Host host) {
    method endInit (line 58) | public DescriptorMap endInit() {
    method get (line 80) | @Nullable
    method getImpl (line 87) | @Nullable

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/DescriptorProvider.java
  type DescriptorProvider (line 10) | public interface DescriptorProvider {
    method registerDescriptor (line 11) | void registerDescriptor(DescriptorRegistrar registrar);

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/DescriptorRegistrar.java
  type DescriptorRegistrar (line 10) | public interface DescriptorRegistrar {
    method registerDescriptor (line 11) | DescriptorRegistrar registerDescriptor(Class<?> elementClass, Descript...

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/Document.java
  class Document (line 29) | public final class Document extends ThreadBoundProxy {
    method Document (line 44) | public Document(DocumentProviderFactory factory) {
    method addRef (line 54) | public synchronized void addRef() {
    method release (line 60) | public synchronized void release() {
    method init (line 68) | private void init() {
    method cleanUp (line 82) | private void cleanUp() {
    method addUpdateListener (line 97) | public void addUpdateListener(UpdateListener updateListener) {
    method removeUpdateListener (line 101) | public void removeUpdateListener(UpdateListener updateListener) {
    method getNodeDescriptor (line 105) | public @Nullable NodeDescriptor getNodeDescriptor(Object element) {
    method highlightElement (line 110) | public void highlightElement(Object element, int color) {
    method hideHighlight (line 115) | public void hideHighlight() {
    method setInspectModeEnabled (line 120) | public void setInspectModeEnabled(boolean enabled) {
    method getNodeIdForElement (line 125) | public @Nullable Integer getNodeIdForElement(Object element) {
    method getElementForNodeId (line 131) | public @Nullable Object getElementForNodeId(int id) {
    method setAttributesAsText (line 137) | public void setAttributesAsText(Object element, String text) {
    method getElementStyleRuleNames (line 142) | public void getElementStyleRuleNames(Object element, StyleRuleNameAccu...
    method getElementStyles (line 148) | public void getElementStyles(Object element, String ruleName, StyleAcc...
    method setElementStyle (line 154) | public void setElementStyle(Object element, String ruleName, String na...
    method getElementComputedStyles (line 160) | public void getElementComputedStyles(Object element, ComputedStyleAccu...
    method getDocumentView (line 166) | public DocumentView getDocumentView() {
    method getRootElement (line 171) | public Object getRootElement() {
    method findMatchingElements (line 191) | public void findMatchingElements(String query, Accumulator<Integer> ma...
    method findMatches (line 200) | private void findMatches(Object element, Pattern queryPattern, Accumul...
    method doesElementMatch (line 214) | private boolean doesElementMatch(Object element, Pattern queryPattern) {
    method acquireChildEventingList (line 231) | private ChildEventingList acquireChildEventingList(
    method releaseChildEventingList (line 246) | private void releaseChildEventingList(ChildEventingList childEventingL...
    method acquireCachedAttributeAccumulator (line 253) | private AttributeListAccumulator acquireCachedAttributeAccumulator() {
    method releaseCachedAttributeAccumulator (line 265) | private void releaseCachedAttributeAccumulator(AttributeListAccumulato...
    method acquireChildrenAccumulator (line 273) | private ArrayListAccumulator<Object> acquireChildrenAccumulator() {
    method releaseChildrenAccumulator (line 282) | private void releaseChildrenAccumulator(ArrayListAccumulator<Object> a...
    method createShadowDocumentUpdate (line 289) | private ShadowDocument.Update createShadowDocumentUpdate() {
    method updateTree (line 336) | private void updateTree() {
    method applyDocumentUpdate (line 354) | private void applyDocumentUpdate(final ShadowDocument.Update docUpdate) {
    method updateListenerChildren (line 495) | private static void updateListenerChildren(
    class ChildEventingList (line 552) | private final class ChildEventingList extends ArrayList<Object> {
      method acquire (line 557) | public void acquire(Object parentElement, DocumentView documentView) {
      method release (line 567) | public void release() {
      method addWithEvent (line 575) | public void addWithEvent(int index, Object element, Accumulator<Obje...
      method removeWithEvent (line 592) | public void removeWithEvent(int index) {
    class UpdateListenerCollection (line 599) | private class UpdateListenerCollection implements UpdateListener {
      method UpdateListenerCollection (line 603) | public UpdateListenerCollection() {
      method add (line 607) | public synchronized void add(UpdateListener listener) {
      method remove (line 612) | public synchronized void remove(UpdateListener listener) {
      method clear (line 617) | public synchronized void clear() {
      method getListenersSnapshot (line 622) | private UpdateListener[] getListenersSnapshot() {
      method onAttributeModified (line 637) | @Override
      method onAttributeRemoved (line 644) | @Override
      method onInspectRequested (line 651) | @Override
      method onChildNodeRemoved (line 658) | @Override
      method onChildNodeInserted (line 665) | @Override
    type UpdateListener (line 678) | public interface UpdateListener {
      method onAttributeModified (line 679) | void onAttributeModified(Object element, String name, String value);
      method onAttributeRemoved (line 681) | void onAttributeRemoved(Object element, String name);
      method onInspectRequested (line 683) | void onInspectRequested(Object element);
      method onChildNodeRemoved (line 685) | void onChildNodeRemoved(
      method onChildNodeInserted (line 689) | void onChildNodeInserted(
    class DocumentObjectIdMapper (line 697) | private final class DocumentObjectIdMapper extends ObjectIdMapper {
      method onMapped (line 698) | @Override
      method onUnmapped (line 706) | @Override
    class ProviderListener (line 715) | private final class ProviderListener implements DocumentProviderListen...
      method onPossiblyChanged (line 716) | @Override
      method onAttributeModified (line 721) | @Override
      method onAttributeRemoved (line 727) | @Override
      method onInspectRequested (line 733) | @Override
    class AttributeListAccumulator (line 740) | public static final class AttributeListAccumulator
      method store (line 743) | @Override

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/DocumentProvider.java
  type DocumentProvider (line 20) | public interface DocumentProvider extends ThreadBound {
    method setListener (line 21) | void setListener(DocumentProviderListener listener);
    method dispose (line 23) | void dispose();
    method getRootElement (line 25) | @Nullable
    method getNodeDescriptor (line 28) | @Nullable
    method highlightElement (line 31) | void highlightElement(Object element, int color);
    method hideHighlight (line 33) | void hideHighlight();
    method setInspectModeEnabled (line 35) | void setInspectModeEnabled(boolean enabled);
    method setAttributesAsText (line 37) | void setAttributesAsText(Object element, String text);

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/DocumentProviderFactory.java
  type DocumentProviderFactory (line 16) | public interface DocumentProviderFactory extends ThreadBound {
    method create (line 17) | DocumentProvider create();

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/DocumentProviderListener.java
  type DocumentProviderListener (line 10) | public interface DocumentProviderListener {
    method onPossiblyChanged (line 11) | void onPossiblyChanged();
    method onAttributeModified (line 13) | void onAttributeModified(
    method onAttributeRemoved (line 18) | void onAttributeRemoved(
    method onInspectRequested (line 22) | void onInspectRequested(

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/DocumentView.java
  type DocumentView (line 10) | public interface DocumentView {
    method getRootElement (line 11) | Object getRootElement();
    method getElementInfo (line 13) | ElementInfo getElementInfo(Object element);

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/ElementInfo.java
  class ElementInfo (line 18) | @Immutable
    method ElementInfo (line 24) | ElementInfo(
    method equals (line 33) | @Override

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/NodeDescriptor.java
  type NodeDescriptor (line 15) | public interface NodeDescriptor<E> extends ThreadBound {
    method hook (line 16) | void hook(E element);
    method unhook (line 18) | void unhook(E element);
    method getNodeType (line 20) | NodeType getNodeType(E element);
    method getNodeName (line 22) | String getNodeName(E element);
    method getLocalName (line 24) | String getLocalName(E element);
    method getNodeValue (line 26) | @Nullable
    method getChildren (line 29) | void getChildren(E element, Accumulator<Object> children);
    method getAttributes (line 31) | void getAttributes(E element, AttributeAccumulator attributes);
    method setAttributesAsText (line 33) | void setAttributesAsText(E element, String text);
    method getStyleRuleNames (line 35) | void getStyleRuleNames(E element, StyleRuleNameAccumulator accumulator);
    method getStyles (line 37) | void getStyles(E element, String ruleName, StyleAccumulator accumulator);
    method setStyle (line 39) | void setStyle(E element, String ruleName, String name, String value);
    method getComputedStyles (line 41) | void getComputedStyles(E element, ComputedStyleAccumulator accumulator);

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/NodeType.java
  type NodeType (line 12) | public enum NodeType {
    method NodeType (line 23) | private NodeType(int value) {
    method getProtocolValue (line 27) | @JsonValue

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/ObjectDescriptor.java
  class ObjectDescriptor (line 12) | public final class ObjectDescriptor extends Descriptor<Object> {
    method hook (line 13) | @Override
    method unhook (line 17) | @Override
    method getNodeType (line 21) | @Override
    method getNodeName (line 26) | @Override
    method getLocalName (line 31) | @Override
    method getNodeValue (line 36) | @Override
    method getChildren (line 41) | @Override
    method getAttributes (line 45) | @Override
    method setAttributesAsText (line 49) | @Override
    method getStyleRuleNames (line 53) | @Override
    method getStyles (line 57) | @Override
    method setStyle (line 61) | @Override
    method getComputedStyles (line 65) | @Override

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/Origin.java
  type Origin (line 12) | public enum Origin {
    method Origin (line 20) | Origin(String value) {
    method getProtocolValue (line 24) | @JsonValue

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/ShadowDocument.java
  class ShadowDocument (line 25) | public final class ShadowDocument implements DocumentView {
    method ShadowDocument (line 30) | public ShadowDocument(Object rootElement) {
    method getRootElement (line 34) | @Override
    method getElementInfo (line 39) | @Override
    method beginUpdate (line 44) | public UpdateBuilder beginUpdate() {
    class UpdateBuilder (line 54) | public final class UpdateBuilder {
      method setElementChildren (line 104) | public void setElementChildren(Object element, List<Object> children) {
      method setElementParent (line 196) | private void setElementParent(Object element, Object parentElement) {
      method build (line 239) | public Update build() {
      method acquireNotNewChildrenHashSet (line 243) | private HashSet<Object> acquireNotNewChildrenHashSet() {
      method releaseNotNewChildrenHashSet (line 252) | private void releaseNotNewChildrenHashSet(HashSet<Object> notNewChil...
    class Update (line 260) | public final class Update implements DocumentView {
      method Update (line 264) | public Update(
      method isEmpty (line 271) | public boolean isEmpty() {
      method isElementChanged (line 275) | public boolean isElementChanged(Object element) {
      method getRootElement (line 279) | public Object getRootElement() {
      method getElementInfo (line 283) | public ElementInfo getElementInfo(Object element) {
      method getChangedElements (line 293) | public void getChangedElements(Accumulator<Object> accumulator) {
      method getGarbageElements (line 299) | public void getGarbageElements(Accumulator<Object> accumulator) {
      method abandon (line 339) | public void abandon() {
      method commit (line 347) | public void commit() {
      method removeGarbageSubTree (line 367) | private void removeGarbageSubTree(
      method validateTree (line 391) | private void validateTree(Map<Object, ElementInfo> elementToInfoMap) {

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/StyleAccumulator.java
  type StyleAccumulator (line 10) | public interface StyleAccumulator {
    method store (line 11) | void store(String name, String value, boolean isDefault);

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/StyleRuleNameAccumulator.java
  type StyleRuleNameAccumulator (line 10) | public interface StyleRuleNameAccumulator {
    method store (line 11) | void store(String ruleName, boolean editable);

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/android/AccessibilityNodeInfoWrapper.java
  class AccessibilityNodeInfoWrapper (line 23) | public final class AccessibilityNodeInfoWrapper {
    method AccessibilityNodeInfoWrapper (line 25) | public AccessibilityNodeInfoWrapper() {
    method createNodeInfoFromView (line 28) | public static AccessibilityNodeInfoCompat createNodeInfoFromView(View ...
    method getIsAccessibilityFocused (line 34) | public static boolean getIsAccessibilityFocused(View view) {
    method getIgnored (line 42) | public static boolean getIgnored(View view) {
    method getIgnoredReasons (line 91) | public static String getIgnoredReasons(View view) {
    method getFocusableReasons (line 131) | @Nullable
    method getActions (line 174) | @Nullable
    method getDescription (line 257) | @Nullable

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/android/ActivityDescriptor.java
  class ActivityDescriptor (line 27) | final class ActivityDescriptor
    method onGetNodeName (line 29) | @Override
    method onGetChildren (line 35) | @Override
    method getViewAndBoundsForHighlighting (line 46) | @Nullable
    method getElementToHighlightAtPosition (line 63) | @Nullable
    method getDialogFragments (line 80) | private static void getDialogFragments(

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/android/ActivityTracker.java
  class ActivityTracker (line 41) | @NotThreadSafe
    method get (line 59) | public static ActivityTracker get() {
    method registerListener (line 63) | public void registerListener(Listener listener) {
    method unregisterListener (line 67) | public void unregisterListener(Listener listener) {
    method beginTrackingIfPossible (line 77) | public boolean beginTrackingIfPossible(Application application) {
    method endTracking (line 88) | public boolean endTracking() {
    method add (line 97) | public void add(Activity activity) {
    method remove (line 106) | public void remove(Activity activity) {
    method removeFromWeakList (line 116) | private static <T> boolean removeFromWeakList(ArrayList<WeakReference<...
    method getActivitiesView (line 127) | public List<WeakReference<Activity>> getActivitiesView() {
    method tryGetTopActivity (line 131) | @Nullable
    type Listener (line 145) | public interface Listener {
      method onActivityAdded (line 146) | public void onActivityAdded(Activity activity);
      method onActivityRemoved (line 147) | public void onActivityRemoved(Activity activity);
    class AutomaticTracker (line 150) | private static abstract class AutomaticTracker {
      method newInstance (line 151) | @NonNull
      method register (line 158) | public abstract void register();
      method unregister (line 159) | public abstract void unregister();
      class AutomaticTrackerICSAndBeyond (line 161) | @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
        method AutomaticTrackerICSAndBeyond (line 166) | public AutomaticTrackerICSAndBeyond(Application application, Activ...
        method register (line 171) | public void register() {
        method unregister (line 175) | public void unregister() {
        method onActivityCreated (line 181) | @Override
        method onActivityStarted (line 186) | @Override
        method onActivityResumed (line 191) | @Override
        method onActivityPaused (line 196) | @Override
        method onActivityStopped (line 201) | @Override
        method onActivitySaveInstanceState (line 206) | @Override
        method onActivityDestroyed (line 211) | @Override

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/android/AndroidDescriptorHost.java
  type AndroidDescriptorHost (line 14) | interface AndroidDescriptorHost extends Descriptor.Host {
    method getHighlightableDescriptor (line 15) | @Nullable

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/android/AndroidDocumentConstants.java
  type AndroidDocumentConstants (line 12) | public interface AndroidDocumentConstants {

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/android/AndroidDocumentProvider.java
  class AndroidDocumentProvider (line 41) | final class AndroidDocumentProvider extends ThreadBoundProxy
    method run (line 64) | @Override
    method AndroidDocumentProvider (line 76) | public AndroidDocumentProvider(
    method dispose (line 111) | @Override
    method setListener (line 122) | @Override
    method getRootElement (line 136) | @Override
    method getNodeDescriptor (line 142) | @Override
    method highlightElement (line 148) | @Override
    method hideHighlight (line 172) | @Override
    method setInspectModeEnabled (line 179) | @Override
    method setAttributesAsText (line 190) | @Override
    method getDescriptor (line 201) | @Override
    method onAttributeModified (line 206) | @Override
    method onAttributeRemoved (line 213) | @Override
    method getHighlightableDescriptor (line 221) | @Override
    method getWindows (line 248) | private void getWindows(final Accumulator<Window> accumulator) {
    class InspectModeHandler (line 271) | private final class InspectModeHandler {
      method apply (line 273) | @Override
      method enable (line 281) | public void enable() {
      method disable (line 311) | public void disable() {
      class OverlayView (line 327) | private final class OverlayView extends DocumentHiddenView {
        method OverlayView (line 328) | public OverlayView(Context context) {
        method onDraw (line 332) | @Override
        method onTouchEvent (line 338) | @Override

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/android/AndroidDocumentProviderFactory.java
  class AndroidDocumentProviderFactory (line 24) | public final class AndroidDocumentProviderFactory
    method AndroidDocumentProviderFactory (line 30) | public AndroidDocumentProviderFactory(
    method create (line 38) | @Override
    method checkThreadAccess (line 44) | @Override
    method verifyThreadAccess (line 49) | @Override
    method postAndWait (line 54) | @Override
    method postAndWait (line 59) | @Override
    method postDelayed (line 64) | @Override
    method removeCallbacks (line 71) | @Override

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/android/AndroidDocumentRoot.java
  class AndroidDocumentRoot (line 19) | final class AndroidDocumentRoot extends AbstractChainedDescriptor<Androi...
    method AndroidDocumentRoot (line 22) | public AndroidDocumentRoot(Application application) {
    method onGetNodeType (line 26) | @Override
    method onGetNodeName (line 31) | @Override
    method onGetChildren (line 36) | @Override

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/android/ApplicationDescriptor.java
  class ApplicationDescriptor (line 26) | final class ApplicationDescriptor extends AbstractChainedDescriptor<Appl...
    method getContext (line 32) | private ElementContext getContext(Application element) {
    method onHook (line 36) | @Override
    method onUnhook (line 43) | @Override
    method onGetNodeType (line 49) | @Override
    method onGetChildren (line 54) | @Override
    method storeWindowIfNeeded (line 68) | private void storeWindowIfNeeded(Application application, Accumulator<...
    method isDecorViewOfActivity (line 77) | private static boolean isDecorViewOfActivity(View view, List<WeakRefer...
    class ElementContext (line 91) | private class ElementContext {
      method ElementContext (line 94) | public ElementContext() {
      method hook (line 97) | public void hook(Application element) {
      method unhook (line 102) | public void unhook() {
      method getActivitiesList (line 107) | public List<WeakReference<Activity>> getActivitiesList() {
      method onActivityAdded (line 112) | @Override
      method onActivityRemoved (line 117) | @Override

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/android/DialogDescriptor.java
  class DialogDescriptor (line 20) | final class DialogDescriptor
    method onGetChildren (line 22) | @Override
    method getViewAndBoundsForHighlighting (line 30) | @Nullable
    method getElementToHighlightAtPosition (line 47) | @Nullable

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/android/DialogFragmentDescriptor.java
  class DialogFragmentDescriptor (line 31) | final class DialogFragmentDescriptor
    method register (line 37) | public static DescriptorMap register(DescriptorMap map) {
    method maybeRegister (line 43) | private static void maybeRegister(DescriptorMap map, @Nullable Fragmen...
    method DialogFragmentDescriptor (line 51) | private DialogFragmentDescriptor(FragmentCompat compat) {
    method setSuper (line 55) | @Override
    method hook (line 67) | @Override
    method unhook (line 72) | @Override
    method getNodeType (line 77) | @Override
    method getNodeName (line 82) | @Override
    method getLocalName (line 87) | @Override
    method getNodeValue (line 92) | @Nullable
    method getChildren (line 98) | @Override
    method getAttributes (line 110) | @Override
    method setAttributesAsText (line 115) | @Override
    method getViewAndBoundsForHighlighting (line 120) | @Nullable
    method getElementToHighlightAtPosition (line 137) | @Nullable
    method getStyleRuleNames (line 154) | @Override
    method getStyles (line 158) | @Override
    method setStyle (line 162) | @Override
    method getComputedStyles (line 166) | @Override

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/android/DocumentHiddenView.java
  class DocumentHiddenView (line 13) | class DocumentHiddenView extends View {
    method DocumentHiddenView (line 14) | public DocumentHiddenView(Context context) {

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/android/FragmentDescriptor.java
  class FragmentDescriptor (line 25) | final class FragmentDescriptor
    method register (line 32) | public static DescriptorMap register(DescriptorMap map) {
    method maybeRegister (line 38) | private static void maybeRegister(DescriptorMap map, @Nullable Fragmen...
    method FragmentDescriptor (line 46) | private FragmentDescriptor(FragmentCompat compat) {
    method onGetAttributes (line 50) | @Override
    method onGetChildren (line 67) | @Override
    method getViewAndBoundsForHighlighting (line 75) | @Override
    method getElementToHighlightAtPosition (line 81) | @Nullable

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/android/HighlightableDescriptor.java
  type HighlightableDescriptor (line 15) | public interface HighlightableDescriptor<E> {
    method getViewAndBoundsForHighlighting (line 23) | @Nullable
    method getElementToHighlightAtPosition (line 35) | @Nullable

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/android/MethodInvoker.java
  class MethodInvoker (line 22) | public class MethodInvoker {
    method invoke (line 35) | public void invoke(Object receiver, String methodName, String argument) {
    class TypedMethodInvoker (line 48) | private static abstract class TypedMethodInvoker<T> {
      method TypedMethodInvoker (line 51) | TypedMethodInvoker(Class<T> argType) {
      method invoke (line 55) | boolean invoke(Object receiver, String methodName, String argument) {
      method convertArgument (line 72) | abstract T convertArgument(String argument);
    class StringMethodInvoker (line 75) | private static class StringMethodInvoker extends TypedMethodInvoker<St...
      method StringMethodInvoker (line 76) | StringMethodInvoker() {
      method convertArgument (line 80) | @Override
    class CharSequenceMethodInvoker (line 86) | private static class CharSequenceMethodInvoker extends TypedMethodInvo...
      method CharSequenceMethodInvoker (line 87) | CharSequenceMethodInvoker() {
      method convertArgument (line 91) | @Override
    class IntegerMethodInvoker (line 97) | private static class IntegerMethodInvoker extends TypedMethodInvoker<I...
      method IntegerMethodInvoker (line 98) | IntegerMethodInvoker() {
      method convertArgument (line 102) | @Override
    class FloatMethodInvoker (line 108) | private static class FloatMethodInvoker extends TypedMethodInvoker<Flo...
      method FloatMethodInvoker (line 109) | FloatMethodInvoker() {
      method convertArgument (line 113) | @Override
    class BooleanMethodInvoker (line 119) | private static class BooleanMethodInvoker extends TypedMethodInvoker<B...
      method BooleanMethodInvoker (line 120) | BooleanMethodInvoker() {
      method convertArgument (line 124) | @Override

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/android/TextViewDescriptor.java
  class TextViewDescriptor (line 22) | final class TextViewDescriptor extends AbstractChainedDescriptor<TextVie...
    method onHook (line 28) | @Override
    method onUnhook (line 35) | protected void onUnhook(TextView element) {
    method onGetAttributes (line 40) | @Override
    class ElementContext (line 48) | private final class ElementContext implements TextWatcher {
      method hook (line 51) | public void hook(TextView element) {
      method unhook (line 56) | public void unhook() {
      method beforeTextChanged (line 63) | @Override
      method onTextChanged (line 67) | @Override
      method afterTextChanged (line 71) | @Override

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/android/ViewDescriptor.java
  class ViewDescriptor (line 40) | final class ViewDescriptor extends AbstractChainedDescriptor<View>
    method getWordBoundaryPattern (line 70) | private Pattern getWordBoundaryPattern() {
    method getViewProperties (line 78) | private List<ViewCSSProperty> getViewProperties() {
    method ViewDescriptor (line 124) | public ViewDescriptor() {
    method ViewDescriptor (line 128) | public ViewDescriptor(MethodInvoker methodInvoker) {
    method onGetNodeName (line 132) | @Override
    method onGetAttributes (line 141) | @Override
    method onSetAttributesAsText (line 149) | @Override
    method getIdAttribute (line 159) | @Nullable
    method getViewAndBoundsForHighlighting (line 168) | @Override
    method getElementToHighlightAtPosition (line 174) | @Nullable
    method onGetStyleRuleNames (line 181) | @Override
    method onGetStyles (line 189) | @Override
    method onGetComputedStyles (line 270) | @Override
    method canIntBeMappedToString (line 278) | private static boolean canIntBeMappedToString(@Nullable ViewDebug.Expo...
    method mapIntToStringUsingAnnotation (line 284) | private static String mapIntToStringUsingAnnotation(
    method canFlagsBeMappedToString (line 301) | private static boolean canFlagsBeMappedToString(@Nullable ViewDebug.Ex...
    method mapFlagsToStringUsingAnnotation (line 307) | private static String mapFlagsToStringUsingAnnotation(
    method convertViewPropertyNameToCSSName (line 339) | private String convertViewPropertyNameToCSSName(String getterName) {
    method getStyleFromValue (line 363) | private void getStyleFromValue(
    method getIdStyle (line 395) | private void getIdStyle(
    method getStyleFromInteger (line 408) | private void getStyleFromInteger(
    method getStylesFromObject (line 440) | private void getStylesFromObject(
    method capitalize (line 503) | private static String capitalize(String str) {
    class FieldBackedCSSProperty (line 512) | private final class FieldBackedCSSProperty extends ViewCSSProperty {
      method FieldBackedCSSProperty (line 515) | public FieldBackedCSSProperty(
      method getValue (line 524) | @Override
    class MethodBackedCSSProperty (line 530) | private final class MethodBackedCSSProperty extends ViewCSSProperty {
      method MethodBackedCSSProperty (line 533) | public MethodBackedCSSProperty(
      method getValue (line 542) | @Override
    class ViewCSSProperty (line 548) | private abstract class ViewCSSProperty {
      method ViewCSSProperty (line 552) | public ViewCSSProperty(String cssName, @Nullable ViewDebug.ExportedP...
      method getCSSName (line 557) | public final String getCSSName() {
      method getValue (line 561) | public abstract Object getValue(View view)
      method getAnnotation (line 564) | public final @Nullable ViewDebug.ExportedProperty getAnnotation() {

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/android/ViewGroupDescriptor.java
  class ViewGroupDescriptor (line 25) | final class ViewGroupDescriptor extends AbstractChainedDescriptor<ViewGr...
    method ViewGroupDescriptor (line 37) | public ViewGroupDescriptor() {
    method onGetChildren (line 40) | @Override
    method isChildVisible (line 51) | private boolean isChildVisible(View child) {
    method getElementForView (line 55) | private Object getElementForView(ViewGroup parentView, View childView) {
    method getElement (line 87) | @SuppressWarnings("unchecked")
    method getViewAndBoundsForHighlighting (line 96) | @Override
    method getElementToHighlightAtPosition (line 102) | @Nullable

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/android/ViewHighlightOverlays.java
  class ViewHighlightOverlays (line 20) | abstract class ViewHighlightOverlays {
    method highlightView (line 22) | abstract void highlightView(View view, Rect bounds, int mainColor);
    method removeHighlight (line 24) | abstract void removeHighlight(View view);
    method newInstance (line 26) | static ViewHighlightOverlays newInstance() {
    class NoOpViewHighlightOverlays (line 35) | private static class NoOpViewHighlightOverlays extends ViewHighlightOv...
      method highlightView (line 37) | @Override
      method removeHighlight (line 41) | @Override
    class ViewHighlightOverlaysJellybeanMR2 (line 46) | @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
      method ViewHighlightOverlaysJellybeanMR2 (line 63) | ViewHighlightOverlaysJellybeanMR2() {
      method highlightView (line 66) | @Override
      method removeHighlight (line 84) | @Override
      class HighlightDrawable (line 91) | static abstract class HighlightDrawable extends ColorDrawable {
        method HighlightDrawable (line 96) | HighlightDrawable(int color) {
        method HighlightDrawable (line 100) | public HighlightDrawable() {
        method highlightView (line 103) | void highlightView(View view) {
      class MainHighlightDrawable (line 124) | static class MainHighlightDrawable extends HighlightDrawable {
        method highlightView (line 126) | @Override
        method draw (line 131) | @Override
      class PaddingTopHighlightDrawable (line 149) | static class PaddingTopHighlightDrawable extends HighlightDrawable {
        method PaddingTopHighlightDrawable (line 150) | PaddingTopHighlightDrawable() {
        method highlightView (line 154) | @Override
      class PaddingBottomHighlightDrawable (line 161) | static class PaddingBottomHighlightDrawable extends HighlightDrawable {
        method PaddingBottomHighlightDrawable (line 162) | PaddingBottomHighlightDrawable() {
        method highlightView (line 166) | @Override
      class PaddingRightHighlightDrawable (line 174) | static class PaddingRightHighlightDrawable extends HighlightDrawable {
        method PaddingRightHighlightDrawable (line 175) | PaddingRightHighlightDrawable() {
        method highlightView (line 179) | @Override
      class PaddingLeftHighlightDrawable (line 186) | static class PaddingLeftHighlightDrawable extends HighlightDrawable {
        method PaddingLeftHighlightDrawable (line 187) | PaddingLeftHighlightDrawable() {
        method highlightView (line 191) | @Override
      class MarginTopHighlightDrawable (line 198) | static class MarginTopHighlightDrawable extends HighlightDrawable {
        method MarginTopHighlightDrawable (line 200) | MarginTopHighlightDrawable() {
        method highlightView (line 204) | @Override
        method draw (line 210) | @Override
      class MarginBottomHighlightDrawable (line 217) | static class MarginBottomHighlightDrawable extends HighlightDrawable {
        method MarginBottomHighlightDrawable (line 219) | MarginBottomHighlightDrawable() {
        method highlightView (line 223) | @Override
        method draw (line 229) | @Override
      class MarginRightHighlightDrawable (line 236) | static class MarginRightHighlightDrawable extends HighlightDrawable {
        method MarginRightHighlightDrawable (line 238) | MarginRightHighlightDrawable() {
        method highlightView (line 242) | @Override
        method draw (line 250) | @Override
      class MarginLeftHighlightDrawable (line 257) | static class MarginLeftHighlightDrawable extends HighlightDrawable {
        method MarginLeftHighlightDrawable (line 259) | MarginLeftHighlightDrawable() {
        method highlightView (line 263) | @Override
        method draw (line 269) | @Override

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/android/ViewHighlighter.java
  class ViewHighlighter (line 23) | abstract class ViewHighlighter {
    method newInstance (line 25) | public static ViewHighlighter newInstance() {
    method ViewHighlighter (line 35) | protected ViewHighlighter() {
    method clearHighlight (line 38) | public abstract void clearHighlight();
    method setHighlightedView (line 40) | public abstract void setHighlightedView(View view, @Nullable Rect boun...
    class NoopHighlighter (line 42) | private static final class NoopHighlighter extends ViewHighlighter {
      method clearHighlight (line 43) | @Override
      method setHighlightedView (line 47) | @Override
    class OverlayHighlighter (line 52) | @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
      method run (line 70) | @Override
      method OverlayHighlighter (line 76) | public OverlayHighlighter() {
      method clearHighlight (line 80) | @Override
      method setHighlightedView (line 85) | @Override
      method setHighlightedViewImpl (line 90) | private void setHighlightedViewImpl(@Nullable View view, @Nullable R...
      method highlightViewOnUiThread (line 98) | private void highlightViewOnUiThread() {

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/android/WindowDescriptor.java
  class WindowDescriptor (line 20) | final class WindowDescriptor extends AbstractChainedDescriptor<Window>
    method onGetChildren (line 22) | @Override
    method getViewAndBoundsForHighlighting (line 30) | @Override
    method getElementToHighlightAtPosition (line 36) | @Nullable

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/android/window/WindowRootViewCompactV16Impl.java
  class WindowRootViewCompactV16Impl (line 21) | class WindowRootViewCompactV16Impl extends WindowRootViewCompat {
    method WindowRootViewCompactV16Impl (line 24) | WindowRootViewCompactV16Impl(Context context) {
    method getRootViews (line 28) | @NonNull
    method getOuter (line 36) | private static Object getOuter(Object innerWM) {
    method getWindowViews (line 50) | private static List<View> getWindowViews(final Object windowManager) {

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/android/window/WindowRootViewCompactV18Impl.java
  class WindowRootViewCompactV18Impl (line 21) | class WindowRootViewCompactV18Impl extends WindowRootViewCompat {
    method WindowRootViewCompactV18Impl (line 26) | WindowRootViewCompactV18Impl() {
    method getRootViews (line 47) | @NonNull

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/android/window/WindowRootViewCompactV19Impl.java
  class WindowRootViewCompactV19Impl (line 20) | class WindowRootViewCompactV19Impl extends WindowRootViewCompat {
    method WindowRootViewCompactV19Impl (line 24) | WindowRootViewCompactV19Impl() {
    method getRootViews (line 46) | @NonNull

FILE: stetho/src/main/java/com/facebook/stetho/inspector/elements/android/window/WindowRootViewCompat.java
  class WindowRootViewCompat (line 54) | public abstract class WindowRootViewCompat {
    method get (line 58) | public static WindowRootViewCompat get(Context context) {
    method getRootViews (line 76) | @NonNull

FILE: stetho/src/main/java/com/facebook/stetho/inspector/helper/ChromePeerManager.java
  class ChromePeerManager (line 31) | public class ChromePeerManager {
    method ChromePeerManager (line 51) | public ChromePeerManager() {
    method setListener (line 60) | public synchronized void setListener(PeerRegistrationListener listener) {
    method addPeer (line 70) | public synchronized boolean addPeer(JsonRpcPeer peer) {
    method removePeer (line 90) | public synchronized void removePeer(JsonRpcPeer peer) {
    method hasRegisteredPeers (line 99) | public synchronized boolean hasRegisteredPeers() {
    method getReceivingPeersSnapshot (line 103) | private synchronized JsonRpcPeer[] getReceivingPeersSnapshot() {
    method sendNotificationToPeers (line 111) | public void sendNotificationToPeers(String method,
    method invokeMethodOnPeers (line 116) | public void invokeMethodOnPeers(String method,
    method sendMessageToPeers (line 123) | private void sendMessageToPeers(String method,
    class UnregisterOnDisconnect (line 136) | private class UnregisterOnDisconnect implements DisconnectReceiver {
      method UnregisterOnDisconnect (line 139) | public UnregisterOnDisconnect(JsonRpcPeer peer) {
      method onDisconnect (line 143) | @Override

FILE: stetho/src/main/java/com/facebook/stetho/inspector/helper/IntegerFormatter.java
  class IntegerFormatter (line 16) | public class IntegerFormatter {
    method getInstance (line 19) | public static IntegerFormatter getInstance() {
    method IntegerFormatter (line 35) | private IntegerFormatter() {
    method format (line 38) | public String format(Integer integer, @Nullable ViewDebug.ExportedProp...
    class IntegerFormatterWithHex (line 42) | private static class IntegerFormatterWithHex extends IntegerFormatter {
      method format (line 43) | @Override

FILE: stetho/src/main/java/com/facebook/stetho/inspector/helper/ObjectIdMapper.java
  class ObjectIdMapper (line 18) | public class ObjectIdMapper {
    method clear (line 30) | public void clear() {
    method containsId (line 46) | public boolean containsId(int id) {
    method containsObject (line 52) | public boolean containsObject(Object object) {
    method getObjectForId (line 58) | @Nullable
    method getIdForObject (line 65) | @Nullable
    method putObject (line 72) | public int putObject(Object object) {
    method removeObjectById (line 90) | @Nullable
    method removeObject (line 108) | @Nullable
    method size (line 125) | public int size() {
    method onMapped (line 131) | protected void onMapped(Object object, int id) {
    method onUnmapped (line 134) | protected void onUnmapped(Object object, int id) {

FILE: stetho/src/main/java/com/facebook/stetho/inspector/helper/PeerRegistrationListener.java
  type PeerRegistrationListener (line 12) | public interface PeerRegistrationListener {
    method onPeerRegistered (line 13) | void onPeerRegistered(JsonRpcPeer peer);
    method onPeerUnregistered (line 14) | void onPeerUnregistered(JsonRpcPeer peer);

FILE: stetho/src/main/java/com/facebook/stetho/inspector/helper/PeersRegisteredListener.java
  class PeersRegisteredListener (line 14) | public abstract class PeersRegisteredListener implements PeerRegistratio...
    method onPeerRegistered (line 17) | @Override
    method onPeerUnregistered (line 25) | @Override
    method onPeerAdded (line 33) | protected void onPeerAdded(JsonRpcPeer peer) {}
    method onPeerRemoved (line 34) | protected void onPeerRemoved(JsonRpcPeer peer) {}
    method onFirstPeerRegistered (line 36) | protected abstract void onFirstPeerRegistered();
    method onLastPeerUnregistered (line 37) | protected abstract void onLastPeerUnregistered();

FILE: stetho/src/main/java/com/facebook/stetho/inspector/helper/ThreadBoundProxy.java
  class ThreadBoundProxy (line 20) | public abstract class ThreadBoundProxy implements ThreadBound {
    method ThreadBoundProxy (line 23) | public ThreadBoundProxy(ThreadBound enforcer) {
    method checkThreadAccess (line 27) | @Override
    method verifyThreadAccess (line 32) | @Override
    method postAndWait (line 37) | @Override
    method postAndWait (line 42) | @Override
    method postDelayed (line 47) | @Override
    method removeCallbacks (line 52) | @Override

FILE: stetho/src/main/java/com/facebook/stetho/inspector/jsonrpc/DisconnectReceiver.java
  type DisconnectReceiver (line 13) | public interface DisconnectReceiver {
    method onDisconnect (line 17) | void onDisconnect();

FILE: stetho/src/main/java/com/facebook/stetho/inspector/jsonrpc/JsonRpcException.java
  class JsonRpcException (line 13) | public class JsonRpcException extends Exception {
    method JsonRpcException (line 16) | public JsonRpcException(JsonRpcError errorMessage) {
    method getErrorMessage (line 21) | public JsonRpcError getErrorMessage() {

FILE: stetho/src/main/java/com/facebook/stetho/inspector/jsonrpc/JsonRpcPeer.java
  class JsonRpcPeer (line 27) | @ThreadSafe
    method JsonRpcPeer (line 40) | public JsonRpcPeer(ObjectMapper objectMapper, SimpleSession peer) {
    method getWebSocket (line 45) | public SimpleSession getWebSocket() {
    method invokeMethod (line 49) | public void invokeMethod(String method, Object paramsObject,
    method registerDisconnectReceiver (line 66) | public void registerDisconnectReceiver(DisconnectReceiver callback) {
    method unregisterDisconnectReceiver (line 70) | public void unregisterDisconnectReceiver(DisconnectReceiver callback) {
    method invokeDisconnectReceivers (line 74) | public void invokeDisconnectReceivers() {
    method preparePendingRequest (line 78) | private synchronized long preparePendingRequest(PendingRequestCallback...
    method getAndRemovePendingRequest (line 84) | public synchronized PendingRequest getAndRemovePendingRequest(long req...
    class DisconnectObservable (line 88) | private static class DisconnectObservable extends Observable<Disconnec...
      method onDisconnect (line 89) | public void onDisconnect() {

FILE: stetho/src/main/java/com/facebook/stetho/inspector/jsonrpc/JsonRpcResult.java
  type JsonRpcResult (line 16) | public interface JsonRpcResult {

FILE: stetho/src/main/java/com/facebook/stetho/inspector/jsonrpc/PendingRequest.java
  class PendingRequest (line 18) | public class PendingRequest {
    method PendingRequest (line 22) | public PendingRequest(long requestId, @Nullable PendingRequestCallback...

FILE: stetho/src/main/java/com/facebook/stetho/inspector/jsonrpc/PendingRequestCallback.java
  type PendingRequestCallback (line 12) | public interface PendingRequestCallback {
    method onResponse (line 13) | void onResponse(JsonRpcPeer peer, JsonRpcResponse response);

FILE: stetho/src/main/java/com/facebook/stetho/inspector/jsonrpc/protocol/EmptyResult.java
  class EmptyResult (line 12) | public class EmptyResult implements JsonRpcResult {

FILE: stetho/src/main/java/com/facebook/stetho/inspector/jsonrpc/protocol/JsonRpcError.java
  class JsonRpcError (line 18) | @SuppressLint({ "UsingDefaultJsonDeserializer", "EmptyJsonPropertyUse" })
    method JsonRpcError (line 29) | public JsonRpcError() {
    method JsonRpcError (line 32) | public JsonRpcError(ErrorCode code, String message, @Nullable JSONObje...
    type ErrorCode (line 38) | public enum ErrorCode {
      method ErrorCode (line 47) | private ErrorCode(int protocolValue) {
      method getProtocolValue (line 51) | @JsonValue

FILE: stetho/src/main/java/com/facebook/stetho/inspector/jsonrpc/protocol/JsonRpcEvent.java
  class JsonRpcEvent (line 17) | @SuppressLint({ "UsingDefaultJsonDeserializer", "EmptyJsonPropertyUse" })
    method JsonRpcEvent (line 25) | public JsonRpcEvent() {
    method JsonRpcEvent (line 28) | public JsonRpcEvent(String method, @Nullable JSONObject params) {

FILE: stetho/src/main/java/com/facebook/stetho/inspector/jsonrpc/protocol/JsonRpcRequest.java
  class JsonRpcRequest (line 15) | @SuppressLint({ "UsingDefaultJsonDeserializer", "EmptyJsonPropertyUse" })
    method JsonRpcRequest (line 29) | public JsonRpcRequest() {
    method JsonRpcRequest (line 32) | public JsonRpcRequest(Long id, String method, JSONObject params) {

FILE: stetho/src/main/java/com/facebook/stetho/inspector/jsonrpc/protocol/JsonRpcResponse.java
  class JsonRpcResponse (line 15) | @SuppressLint({ "UsingDefaultJsonDeserializer", "EmptyJsonPropertyUse" })

FILE: stetho/src/main/java/com/facebook/stetho/inspector/network/AsyncPrettyPrinter.java
  type AsyncPrettyPrinter (line 17) | public interface AsyncPrettyPrinter {
    method printTo (line 27) | public void printTo(PrintWriter output, InputStream payload) throws IO...
    method getPrettifiedType (line 36) | public PrettyPrinterDisplayType getPrettifiedType();

FILE: stetho/src/main/java/com/facebook/stetho/inspector/network/AsyncPrettyPrinterExecutorHolder.java
  class AsyncPrettyPrinterExecutorHolder (line 18) | final class AsyncPrettyPrinterExecutorHolder {
    method AsyncPrettyPrinterExecutorHolder (line 22) | private AsyncPrettyPrinterExecutorHolder() {
    method ensureInitialized (line 25) | public static void ensureInitialized() {
    method getExecutorService (line 31) | @Nullable
    method shutdown (line 36) | public static void shutdown() {

FILE: stetho/src/main/java/com/facebook/stetho/inspector/network/AsyncPrettyPrinterFactory.java
  type AsyncPrettyPrinterFactory (line 15) | public interface AsyncPrettyPrinterFactory {
    method getInstance (line 26) | public AsyncPrettyPrinter getInstance(String headerName, String header...

FILE: stetho/src/main/java/com/facebook/stetho/inspector/network/AsyncPrettyPrinterInitializer.java
  type AsyncPrettyPrinterInitializer (line 15) | public interface AsyncPrettyPrinterInitializer {
    method populatePrettyPrinters (line 23) | void populatePrettyPrinters(AsyncPrettyPrinterRegistry registry);

FILE: stetho/src/main/java/com/facebook/stetho/inspector/network/AsyncPrettyPrinterRegistry.java
  class AsyncPrettyPrinterRegistry (line 17) | @ThreadSafe
    method register (line 22) | public synchronized void register(String headerName, AsyncPrettyPrinte...
    method lookup (line 26) | @Nullable
    method unregister (line 31) | public synchronized boolean unregister(String headerName) {

FILE: stetho/src/main/java/com/facebook/stetho/inspector/network/CountingOutputStream.java
  class CountingOutputStream (line 14) | class CountingOutputStream extends FilterOutputStream {
    method CountingOutputStream (line 17) | public CountingOutputStream(OutputStream out) {
    method getCount (line 21) | public long getCount() {
    method write (line 25) | @Override
    method write (line 31) | @Override
    method write (line 36) | @Override

FILE: stetho/src/main/java/com/facebook/stetho/inspector/network/DecompressionHelper.java
  class DecompressionHelper (line 20) | public class DecompressionHelper {
    method teeInputWithDecompression (line 24) | public static InputStream teeInputWithDecompression(

FILE: stetho/src/main/java/com/facebook/stetho/inspector/network/DefaultResponseHandler.java
  class DefaultResponseHandler (line 15) | public class DefaultResponseHandler implements ResponseHandler {
    method DefaultResponseHandler (line 22) | public DefaultResponseHandler(NetworkEventReporter eventReporter, Stri...
    method onRead (line 27) | @Override
    method onReadDecoded (line 32) | @Override
    method onEOF (line 40) | public void onEOF() {
    method onError (line 45) | public void onError(IOException e) {
    method reportDataReceived (line 50) | private void reportDataReceived() {

FILE: stetho/src/main/java/com/facebook/stetho/inspector/network/DownloadingAsyncPrettyPrinterFactory.java
  class DownloadingAsyncPrettyPrinterFactory (line 30) | public abstract class DownloadingAsyncPrettyPrinterFactory implements As...
    method getInstance (line 32) | @Override
    method matchAndParseHeader (line 98) | @Nullable
    method doPrint (line 105) | protected abstract void doPrint(PrintWriter output, InputStream payloa...
    method parseURL (line 108) | @Nullable
    method doErrorPrint (line 117) | private static void doErrorPrint(PrintWriter output, InputStream paylo...
    method getErrorAsyncPrettyPrinter (line 122) | private static AsyncPrettyPrinter getErrorAsyncPrettyPrinter(
    class MatchResult (line 141) | protected class MatchResult {
      method MatchResult (line 145) | public MatchResult(String schemaUri, PrettyPrinterDisplayType displa...
      method getSchemaUri (line 150) | public String getSchemaUri() {
      method getDisplayType (line 154) | public PrettyPrinterDisplayType getDisplayType() {
    class Request (line 159) | private static class Request implements Callable<String> {
      method Request (line 162) | public Request(URL url) {
      method call (line 166) | @Override

FILE: stetho/src/main/java/com/facebook/stetho/inspector/network/GunzippingOutputStream.java
  class GunzippingOutputStream (line 32) | class GunzippingOutputStream extends FilterOutputStream {
    method create (line 37) | public static GunzippingOutputStream create(OutputStream finalOut) thr...
    method GunzippingOutputStream (line 47) | private GunzippingOutputStream(OutputStream out, Future<Void> copyFutu...
    method close (line 52) | @Override
    method getAndRethrow (line 69) | private static <T> T getAndRethrow(Future<T> future) throws IOException {
    class GunzippingCallable (line 83) | private static class GunzippingCallable implements Callable<Void> {
      method GunzippingCallable (line 87) | public GunzippingCallable(InputStream in, OutputStream out) {
      method call (line 92) | @Override

FILE: stetho/src/main/java/com/facebook/stetho/inspector/network/MimeMatcher.java
  class MimeMatcher (line 16) | public class MimeMatcher<T> {
    method addRule (line 26) | public void addRule(String ruleExpression, T resultIfMatched) {
    method clear (line 30) | public void clear() {
    method match (line 34) | @Nullable
    class MimeMatcherRule (line 46) | @SuppressLint("BadMethodUse-java.lang.String.length")
      method MimeMatcherRule (line 52) | public MimeMatcherRule(String ruleExpression, T resultIfMatched) {
      method match (line 67) | public boolean match(String mimeType) {
      method getResultIfMatched (line 78) | public T getResultIfMatched() {

FILE: stetho/src/main/java/com/facebook/stetho/inspector/network/NetworkEventReporter.java
  type NetworkEventReporter (line 52) | public interface NetworkEventReporter {
    method isEnabled (line 59) | boolean isEnabled();
    method requestWillBeSent (line 66) | void requestWillBeSent(InspectorRequest request);
    method responseHeadersReceived (line 74) | void responseHeadersReceived(InspectorResponse response);
    method httpExchangeFailed (line 86) | void httpExchangeFailed(String requestId, String errorText);
    method interpretResponseStream (line 118) | @Nullable
    method responseReadFailed (line 135) | void responseReadFailed(String requestId, String errorText);
    method responseReadFinished (line 144) | void responseReadFinished(String requestId);
    method dataSent (line 157) | void dataSent(String requestId, int dataLength, int encodedDataLength);
    method dataReceived (line 164) | void dataReceived(String requestId, int dataLength, int encodedDataLen...
    method nextRequestId (line 169) | String nextRequestId();
    method webSocketCreated (line 176) | void webSocketCreated(String requestId, String url);
    method webSocketClosed (line 182) | void webSocketClosed(String requestId);
    method webSocketWillSendHandshakeRequest (line 188) | void webSocketWillSendHandshakeRequest(InspectorWebSocketRequest reque...
    method webSocketHandshakeResponseReceived (line 193) | void webSocketHandshakeResponseReceived(InspectorWebSocketResponse res...
    method webSocketFrameSent (line 204) | void webSocketFrameSent(InspectorWebSocketFrame frame);
    method webSocketFrameReceived (line 209) | void webSocketFrameReceived(InspectorWebSocketFrame frame);
    method webSocketFrameError (line 216) | void webSocketFrameError(String requestId, String errorMessage);
    type InspectorRequest (line 225) | interface InspectorRequest extends InspectorRequestCommon {
      method friendlyNameExtra (line 230) | @Nullable
      method url (line 233) | String url();
      method method (line 238) | String method();
      method body (line 244) | @Nullable
    type InspectorResponse (line 248) | interface InspectorResponse extends InspectorResponseCommon {
      method url (line 249) | String url();
      method connectionReused (line 254) | boolean connectionReused();
      method connectionId (line 259) | int connectionId();
      method fromDiskCache (line 264) | boolean fromDiskCache();
    type InspectorWebSocketRequest (line 267) | interface InspectorWebSocketRequest extends InspectorRequestCommon {
    type InspectorWebSocketResponse (line 270) | interface InspectorWebSocketResponse extends InspectorResponseCommon {
      method requestHeaders (line 275) | @Nullable
    type InspectorWebSocketFrame (line 279) | interface InspectorWebSocketFrame {
      method requestId (line 280) | String requestId();
      method opcode (line 289) | int opcode();
      method mask (line 290) | boolean mask();
      method payloadData (line 291) | String payloadData();
    type InspectorRequestCommon (line 294) | interface InspectorRequestCommon extends InspectorHeaders {
      method id (line 300) | String id();
      method friendlyName (line 305) | String friendlyName();
    type InspectorResponseCommon (line 308) | interface InspectorResponseCommon extends InspectorHeaders {
      method requestId (line 310) | String requestId();
      method statusCode (line 312) | int statusCode();
      method reasonPhrase (line 314) | String reasonPhrase();
    type InspectorHeaders (line 317) | interface InspectorHeaders {
      method headerCount (line 318) | int headerCount();
      method headerName (line 319) | String headerName(int index);
      method headerValue (line 320) | String headerValue(int index);
      method firstHeaderValue (line 322) | @Nullable

FILE: stetho/src/main/java/com/facebook/stetho/inspector/network/NetworkEventReporterImpl.java
  class NetworkEventReporterImpl (line 33) | public class NetworkEventReporterImpl implements NetworkEventReporter {
    method NetworkEventReporterImpl (line 40) | private NetworkEventReporterImpl() {
    method get (line 47) | public static synchronized NetworkEventReporter get() {
    method isEnabled (line 54) | @Override
    method getPeerManagerIfEnabled (line 60) | @Nullable
    method requestWillBeSent (line 69) | @Override
    method readBodyAsString (line 110) | @Nullable
    method responseHeadersReceived (line 129) | @Override
    method initAsyncPrettyPrinterForResponse (line 159) | @Nullable
    method determineResourceType (line 173) | private static Page.ResourceType determineResourceType(
    method createPrettyPrinterForResponse (line 187) | @Nullable
    method interpretResponseStream (line 205) | @Override
    method httpExchangeFailed (line 253) | @Override
    method responseReadFinished (line 258) | @Override
    method loadingFinished (line 263) | private void loadingFinished(String requestId) {
    method responseReadFailed (line 273) | @Override
    method loadingFailed (line 278) | private void loadingFailed(String requestId, String errorText) {
    method dataSent (line 290) | @Override
    method dataReceived (line 301) | @Override
    method nextRequestId (line 317) | @Override
    method getContentType (line 322) | @Nullable
    method webSocketCreated (line 329) | @Override
    method webSocketClosed (line 340) | @Override
    method webSocketWillSendHandshakeRequest (line 351) | @Override
    method webSocketHandshakeResponseReceived (line 367) | @Override
    method webSocketFrameSent (line 389) | @Override
    method webSocketFrameReceived (line 401) | @Override
    method convertFrame (line 413) | private static Network.WebSocketFrame convertFrame(InspectorWebSocketF...
    method webSocketFrameError (line 421) | @Override
    method formatHeadersAsJSON (line 433) | private static JSONObject formatHeadersAsJSON(InspectorHeaders headers) {
    method getResourceTypeHelper (line 452) | @Nonnull
    method stethoNow (line 460) | private static long stethoNow() {

FILE: stetho/src/main/java/com/facebook/stetho/inspector/network/NetworkPeerManager.java
  class NetworkPeerManager (line 17) | public class NetworkPeerManager extends ChromePeerManager {
    method getInstanceOrNull (line 24) | @Nullable
    method getOrCreateInstance (line 29) | public static synchronized NetworkPeerManager getOrCreateInstance(Cont...
    method NetworkPeerManager (line 38) | public NetworkPeerManager(
    method getResponseBodyFileManager (line 44) | public ResponseBodyFileManager getResponseBodyFileManager() {
    method getAsyncPrettyPrinterRegistry (line 48) | @Nullable
    method setPrettyPrinterInitializer (line 53) | public void setPrettyPrinterInitializer(AsyncPrettyPrinterInitializer ...
    method onFirstPeerRegistered (line 59) | @Override
    method onLastPeerUnregistered (line 69) | @Override

FILE: stetho/src/main/java/com/facebook/stetho/inspector/network/PrettyPrinterDisplayType.java
  type PrettyPrinterDisplayType (line 12) | public enum PrettyPrinterDisplayType {
    method PrettyPrinterDisplayType (line 19) | private PrettyPrinterDisplayType(Page.ResourceType resourceType) {
    method getResourceType (line 27) | public Page.ResourceType getResourceType() {

FILE: stetho/src/main/java/com/facebook/stetho/inspector/network/RequestBodyHelper.java
  class RequestBodyHelper (line 27) | public class RequestBodyHelper {
    method RequestBodyHelper (line 34) | public RequestBodyHelper(NetworkEventReporter eventReporter, String re...
    method createBodySink (line 39) | public OutputStream createBodySink(@Nullable String contentEncoding) t...
    method getDisplayBody (line 56) | public byte[] getDisplayBody() {
    method hasBody (line 61) | public boolean hasBody() {
    method reportDataSent (line 65) | public void reportDataSent() {
    method throwIfNoBody (line 73) | private void throwIfNoBody() {

FILE: stetho/src/main/java/com/facebook/stetho/inspector/network/ResourceTypeHelper.java
  class ResourceTypeHelper (line 12) | public class ResourceTypeHelper {
    method ResourceTypeHelper (line 15) | public ResourceTypeHelper() {
    method determineResourceType (line 34) | public Page.ResourceType determineResourceType(String contentType) {
    method stripContentExtras (line 44) | public String stripContentExtras(String contentType) {

FILE: stetho/src/main/java/com/facebook/stetho/inspector/network/ResponseBodyData.java
  class ResponseBodyData (line 14) | public class ResponseBodyData {

FILE: stetho/src/main/java/com/facebook/stetho/inspector/network/ResponseBodyFileManager.java
  class ResponseBodyFileManager (line 38) | public class ResponseBodyFileManager {
    method ResponseBodyFileManager (line 47) | public ResponseBodyFileManager(Context context) {
    method cleanupFiles (line 51) | public void cleanupFiles() {
    method readFile (line 62) | public ResponseBodyData readFile(String requestId) throws IOException {
    method prettyPrintContentWithTimeOut (line 87) | private String prettyPrintContentWithTimeOut(
    method openResponseBodyFile (line 112) | public OutputStream openResponseBodyFile(String requestId, boolean bas...
    method getFilename (line 123) | private static String getFilename(String requestId) {
    method associateAsyncPrettyPrinterWithId (line 136) | public void associateAsyncPrettyPrinterWithId(
    class AsyncPrettyPrintingCallable (line 145) | private class AsyncPrettyPrintingCallable implements Callable<String> {
      method AsyncPrettyPrintingCallable (line 149) | public AsyncPrettyPrintingCallable(
      method call (line 156) | @Override
      method prettyPrintContent (line 161) | private String prettyPrintContent(InputStream in, AsyncPrettyPrinter...

FILE: stetho/src/main/java/com/facebook/stetho/inspector/network/ResponseHandler.java
  type ResponseHandler (line 16) | public interface ResponseHandler {
    method onRead (line 23) | void onRead(int numBytes);
    method onReadDecoded (line 34) | void onReadDecoded(int numBytes);
    method onEOF (line 40) | void onEOF();
    method onError (line 45) | void onError(IOException e);

FILE: stetho/src/main/java/com/facebook/stetho/inspector/network/ResponseHandlingInputStream.java
  class ResponseHandlingInputStream (line 30) | public final class ResponseHandlingInputStream extends FilterInputStream {
    method ResponseHandlingInputStream (line 69) | public ResponseHandlingInputStream(
    method checkEOF (line 85) | private synchronized int checkEOF(int n) {
    method read (line 94) | @Override
    method read (line 108) | @Override
    method read (line 113) | @Override
    method skip (line 127) | @Override
    method getSkipBufferLocked (line 143) | @Nonnull
    method markSupported (line 152) | @Override
    method mark (line 158) | @Override
    method reset (line 163) | @Override
    method close (line 168) | @Override
    method closeOutputStreamQuietly (line 196) | private synchronized void closeOutputStreamQuietly() {
    method handleIOException (line 219) | private IOException handleIOException(IOException ex) {
    method reportDecodedSizeIfApplicable (line 224) | private void reportDecodedSizeIfApplicable() {
    method writeToOutputStream (line 238) | private synchronized void writeToOutputStream(int oneByte) {
    method writeToOutputStream (line 254) | private synchronized void writeToOutputStream(byte[] b, int offset, in...
    method handleIOExceptionWritingToStream (line 267) | private void handleIOExceptionWritingToStream(IOException e) {

FILE: stetho/src/main/java/com/facebook/stetho/inspector/network/SimpleBinaryInspectorWebSocketFrame.java
  class SimpleBinaryInspectorWebSocketFrame (line 12) | public class SimpleBinaryInspectorWebSocketFrame
    method SimpleBinaryInspectorWebSocketFrame (line 17) | public SimpleBinaryInspectorWebSocketFrame(String requestId, byte[] pa...
    method requestId (line 22) | @Override
    method opcode (line 27) | @Override
    method mask (line 32) | @Override
    method payloadData (line 37) | @Override

FILE: stetho/src/main/java/com/facebook/stetho/inspector/network/SimpleTextInspectorWebSocketFrame.java
  class SimpleTextInspectorWebSocketFrame (line 10) | public class SimpleTextInspectorWebSocketFrame
    method SimpleTextInspectorWebSocketFrame (line 15) | public SimpleTextInspectorWebSocketFrame(String requestId, String payl...
    method requestId (line 20) | @Override
    method opcode (line 25) | @Override
    method mask (line 30) | @Override
    method payloadData (line 35) | @Override

FILE: stetho/src/main/java/com/facebook/stetho/inspector/protocol/ChromeDevtoolsDomain.java
  type ChromeDevtoolsDomain (line 13) | public interface ChromeDevtoolsDomain {

FILE: stetho/src/main/java/com/facebook/stetho/inspector/protocol/module/BaseDatabaseDriver.java
  class BaseDatabaseDriver (line 20) | public abstract class BaseDatabaseDriver<DESC> {
    method BaseDatabaseDriver (line 24) | public BaseDatabaseDriver(Context context) {
    method getContext (line 28) | public Context getContext() {
    method getDatabaseNames (line 37) | public abstract List<DESC> getDatabaseNames();
    method getTableNames (line 43) | public abstract List<String> getTableNames(DESC database);
    method executeSQL (line 45) | public abstract Database.ExecuteSQLResponse executeSQL(
    type ExecuteResultHandler (line 51) | public interface ExecuteResultHandler<RESULT> {
      method handleRawQuery (line 52) | RESULT handleRawQuery() throws SQLiteException;
      method handleSelect (line 54) | RESULT handleSelect(Cursor result) throws SQLiteException;
      method handleInsert (line 56) | RESULT handleInsert(long insertedId) throws SQLiteException;
      method handleUpdateDelete (line 58) | RESULT handleUpdateDelete(int count) throws SQLiteException;

FILE: stetho/src/main/java/com/facebook/stetho/inspector/protocol/module/CSS.java
  class CSS (line 35) | public class CSS implements ChromeDevtoolsDomain {
    method CSS (line 40) | public CSS(Document document) {
    method enable (line 47) | @ChromeDevtoolsMethod
    method disable (line 51) | @ChromeDevtoolsMethod
    method getComputedStyleForNode (line 55) | @ChromeDevtoolsMethod
    method getMatchedStylesForNode (line 93) | @SuppressLint("DefaultLocale")
    method setPropertyText (line 162) | @ChromeDevtoolsMethod
    class PeerManagerListener (line 219) | private final class PeerManagerListener extends PeersRegisteredListener {
      method onFirstPeerRegistered (line 220) | @Override
      method onLastPeerUnregistered (line 225) | @Override
    class CSSComputedStyleProperty (line 231) | private static class CSSComputedStyleProperty {
    class RuleMatch (line 239) | private static class RuleMatch {
    class SelectorList (line 247) | private static class SelectorList {
    class SourceRange (line 255) | private static class SourceRange {
    class Selector (line 269) | private static class Selector {
    class CSSRule (line 277) | private static class CSSRule {
    class CSSStyle (line 291) | private static class CSSStyle {
    class ShorthandEntry (line 308) | private static class ShorthandEntry {
    class CSSProperty (line 319) | private static class CSSProperty {
    class PseudoIdMatches (line 345) | private static class PseudoIdMatches {
      method PseudoIdMatches (line 352) | public PseudoIdMatches() {
    class GetComputedStyleForNodeRequest (line 357) | private static class GetComputedStyleForNodeRequest {
    class InheritedStyleEntry (line 362) | private static class InheritedStyleEntry {
    class GetComputedStyleForNodeResult (line 370) | private static class GetComputedStyleForNodeResult implements JsonRpcR...
    class GetMatchedStylesForNodeRequest (line 375) | private static class GetMatchedStylesForNodeRequest implements JsonRpc...
    class GetMatchedStylesForNodeResult (line 386) | private static class GetMatchedStylesForNodeResult implements JsonRpcR...
    class SetPropertyTextRequest (line 397) | private static class SetPropertyTextRequest implements JsonRpcResult {
    class SetPropertyTextResult (line 405) | private static class SetPropertyTextResult implements JsonRpcResult {

FILE: stetho/src/main/java/com/facebook/stetho/inspector/protocol/module/Console.java
  class Console (line 21) | public class Console implements ChromeDevtoolsDomain {
    method Console (line 22) | public Console() {
    method enable (line 25) | @ChromeDevtoolsMethod
    method disable (line 30) | @ChromeDevtoolsMethod
    class MessageAddedRequest (line 35) | @SuppressLint({ "UsingDefaultJsonDeserializer", "EmptyJsonPropertyUse" })
    class ConsoleMessage (line 41) | @SuppressLint({ "UsingDefaultJsonDeserializer", "EmptyJsonPropertyUse" })
    type MessageSource (line 53) | public enum MessageSource {
      method MessageSource (line 67) | private MessageSource(String protocolValue) {
      method getProtocolValue (line 71) | @JsonValue
    type MessageLevel (line 77) | public enum MessageLevel {
      method MessageLevel (line 85) | private MessageLevel(String protocolValue) {
      method getProtocolValue (line 89) | @JsonValue
    class CallFrame (line 95) | @SuppressLint({ "UsingDefaultJsonDeserializer", "EmptyJsonPropertyUse" })
      method CallFrame (line 109) | public CallFrame() {
      method CallFrame (line 112) | public CallFrame(String functionName, String url, int lineNumber, in...

FILE: stetho/src/main/java/com/facebook/stetho/inspector/protocol/module/DOM.java
  class DOM (line 42) | public class DOM implements ChromeDevtoolsDomain {
    method DOM (line 53) | public DOM(Document document) {
    method enable (line 64) | @ChromeDevtoolsMethod
    method disable (line 69) | @ChromeDevtoolsMethod
    method getDocument (line 74) | @ChromeDevtoolsMethod
    method highlightNode (line 89) | @ChromeDevtoolsMethod
    method hideHighlight (line 115) | @ChromeDevtoolsMethod
    method resolveNode (line 125) | @ChromeDevtoolsMethod
    method setAttributesAsText (line 160) | @ChromeDevtoolsMethod
    method setInspectModeEnabled (line 177) | @ChromeDevtoolsMethod
    method performSearch (line 191) | @ChromeDevtoolsMethod
    method getSearchResults (line 219) | @ChromeDevtoolsMethod
    method discardSearchResults (line 245) | @ChromeDevtoolsMethod
    method createNodeForElement (line 256) | private Node createNodeForElement(
    method acquireChildNodeInsertedEvent (line 297) | private ChildNodeInsertedEvent acquireChildNodeInsertedEvent() {
    method releaseChildNodeInsertedEvent (line 306) | private void releaseChildNodeInsertedEvent(ChildNodeInsertedEvent chil...
    method acquireChildNodeRemovedEvent (line 315) | private ChildNodeRemovedEvent acquireChildNodeRemovedEvent() {
    method releaseChildNodeRemovedEvent (line 324) | private void releaseChildNodeRemovedEvent(ChildNodeRemovedEvent childN...
    class DocumentUpdateListener (line 332) | private final class DocumentUpdateListener implements Document.UpdateL...
      method onAttributeModified (line 333) | public void onAttributeModified(Object element, String name, String ...
      method onAttributeRemoved (line 341) | public void onAttributeRemoved(Object element, String name) {
      method onInspectRequested (line 348) | public void onInspectRequested(Object element) {
      method onChildNodeRemoved (line 362) | public void onChildNodeRemoved(
      method onChildNodeInserted (line 374) | public void onChildNodeInserted(
    class PeerManagerListener (line 392) | private final class PeerManagerListener extends PeersRegisteredListener {
      method onFirstPeerRegistered (line 393) | @Override
      method onLastPeerUnregistered (line 399) | @Override
    class GetDocumentResponse (line 407) | private static class GetDocumentResponse implements JsonRpcResult {
    class Node (line 412) | private static class Node implements JsonRpcResult {
    class AttributeModifiedEvent (line 438) | private static class AttributeModifiedEvent {
    class AttributeRemovedEvent (line 449) | private static class AttributeRemovedEvent {
    class ChildNodeInsertedEvent (line 457) | private static class ChildNodeInsertedEvent {
    class ChildNodeRemovedEvent (line 468) | private static class ChildNodeRemovedEvent {
    class HighlightNodeRequest (line 476) | private static class HighlightNodeRequest {
    class HighlightConfig (line 487) | private static class HighlightConfig {
    class InspectNodeRequestedEvent (line 492) | private static class InspectNodeRequestedEvent {
    class SetInspectModeEnabledRequest (line 497) | private static class SetInspectModeEnabledRequest {
    class RGBAColor (line 508) | private static class RGBAColor {
      method getColor (line 521) | public int getColor() {
    class ResolveNodeRequest (line 534) | private static class ResolveNodeRequest {
    class SetAttributesAsTextRequest (line 542) | private static class SetAttributesAsTextRequest {
    class ResolveNodeResponse (line 550) | private static class ResolveNodeResponse implements JsonRpcResult {
    class PerformSearchRequest (line 555) | private static class PerformSearchRequest {
    class PerformSearchResponse (line 563) | private static class PerformSearchResponse implements JsonRpcResult {
    class GetSearchResultsRequest (line 571) | private static class GetSearchResultsRequest {
    class GetSearchResultsResponse (line 582) | private static class GetSearchResultsResponse implements JsonRpcResult {
    class DiscardSearchResultsRequest (line 587) | private static class DiscardSearchResultsRequest {

FILE: stetho/src/main/java/com/facebook/stetho/inspector/protocol/module/DOMStorage.java
  class DOMStorage (line 33) | public class DOMStorage implements ChromeDevtoolsDomain {
    method DOMStorage (line 38) | public DOMStorage(Context context) {
    method enable (line 43) | @ChromeDevtoolsMethod
    method disable (line 48) | @ChromeDevtoolsMethod
    method getDOMStorageItems (line 53) | @ChromeDevtoolsMethod
    method setDOMStorageItem (line 77) | @ChromeDevtoolsMethod
    method removeDOMStorageItem (line 132) | @ChromeDevtoolsMethod
    method assignByType (line 147) | private static void assignByType(
    class StorageId (line 169) | public static class StorageId {
    class GetDOMStorageItemsResult (line 177) | private static class GetDOMStorageItemsResult implements JsonRpcResult {
    class DomStorageItemsClearedParams (line 182) | public static class DomStorageItemsClearedParams {
    class DomStorageItemRemovedParams (line 187) | public static class DomStorageItemRemovedParams {
    class DomStorageItemAddedParams (line 195) | public static class DomStorageItemAddedParams {
    class DomStorageItemUpdatedParams (line 206) | public static class DomStorageItemUpdatedParams {
    class DOMStorageAssignmentException (line 223) | private static class DOMStorageAssignmentException extends Exception {
      method DOMStorageAssignmentException (line 224) | public DOMStorageAssignmentException(String message) {

FILE: stetho/src/main/java/com/facebook/stetho/inspector/protocol/module/Database.java
  class Database (line 40) | public class Database implements ChromeDevtoolsDomain {
    method Database (line 70) | public Database() {
    method add (line 78) | public void add(DatabaseDriver2 databaseDriver) {
    method enable (line 82) | @ChromeDevtoolsMethod
    method disable (line 87) | @ChromeDevtoolsMethod
    method getDatabaseTableNames (line 92) | @ChromeDevtoolsMethod
    method executeSQL (line 115) | @ChromeDevtoolsMethod
    method flattenRows (line 183) | private static ArrayList<String> flattenRows(Cursor cursor, int limit) {
    method blobToString (line 217) | private static String blobToString(byte[] blob) {
    method fastIsAscii (line 230) | private static boolean fastIsAscii(byte[] blob) {
    class DatabasePeerRegistrationListener (line 239) | @ThreadSafe
      method DatabasePeerRegistrationListener (line 249) | private DatabasePeerRegistrationListener(List<DatabaseDriver2> datab...
      method getDatabaseDescriptorHolder (line 253) | public DatabaseDescriptorHolder getDatabaseDescriptorHolder(String d...
      method onFirstPeerRegistered (line 257) | @Override
      method onLastPeerUnregistered (line 272) | @Override
      method onPeerAdded (line 278) | @Override
      method onPeerRemoved (line 295) | @Override
    class DatabaseDescriptorHolder (line 301) | private static class DatabaseDescriptorHolder {
      method DatabaseDescriptorHolder (line 305) | public DatabaseDescriptorHolder(DatabaseDriver2 driver, DatabaseDesc...
    class GetDatabaseTableNamesRequest (line 311) | private static class GetDatabaseTableNamesRequest {
    class GetDatabaseTableNamesResponse (line 316) | private static class GetDatabaseTableNamesResponse implements JsonRpcR...
    class ExecuteSQLRequest (line 321) | public static class ExecuteSQLRequest {
    class ExecuteSQLResponse (line 329) | public static class ExecuteSQLResponse implements JsonRpcResult {
    class AddDatabaseEvent (line 340) | public static class AddDatabaseEvent {
    class DatabaseObject (line 345) | public static class DatabaseObject {
    class Error (line 359) | public static class Error {
    class DatabaseDriver (line 372) | @Deprecated
      method DatabaseDriver (line 374) | public DatabaseDriver(Context context) {

FILE: stetho/src/main/java/com/facebook/stetho/inspector/protocol/module/DatabaseConstants.java
  type DatabaseConstants (line 12) | public interface DatabaseConstants {

FILE: stetho/src/main/java/com/facebook/stetho/inspector/protocol/module/DatabaseDescriptor.java
  type DatabaseDescriptor (line 10) | public interface DatabaseDescriptor {
    method name (line 14) | String name();

FILE: stetho/src/main/java/com/facebook/stetho/inspector/protocol/module/DatabaseDriver2.java
  class DatabaseDriver2 (line 16) | public abstract class DatabaseDriver2<DESC extends DatabaseDescriptor>
    method DatabaseDriver2 (line 18) | public DatabaseDriver2(Context context) {

FILE: stetho/src/main/java/com/facebook/stetho/inspector/protocol/module/Debugger.java
  class Debugger (line 17) | public class Debugger implements ChromeDevtoolsDomain {
    method Debugger (line 18) | public Debugger() {
    method enable (line 21) | @ChromeDevtoolsMethod
    method disable (line 25) | @ChromeDevtoolsMethod
    method canSetScriptSource (line 29) | @ChromeDevtoolsMethod
    method setPauseOnExceptions (line 34) | @ChromeDevtoolsMethod

FILE: stetho/src/main/java/com/facebook/stetho/inspector/protocol/module/HeapProfiler.java
  class HeapProfiler (line 21) | public class HeapProfiler implements ChromeDevtoolsDomain {
    method HeapProfiler (line 22) | public HeapProfiler() {
    method getProfileHeaders (line 25) | @ChromeDevtoolsMethod
    class ProfileHeaderResponse (line 32) | private static class ProfileHeaderResponse implements JsonRpcResult {
    class ProfileHeader (line 37) | private static class ProfileHeader {

FILE: stetho/src/main/java/com/facebook/stetho/inspector/protocol/module/Inspector.java
  class Inspector (line 16) | public class Inspector implements ChromeDevtoolsDomain {
    method Inspector (line 17) | public Inspector() {
    method enable (line 20) | @ChromeDevtoolsMethod
    method disable (line 24) | @ChromeDevtoolsMethod

FILE: stetho/src/main/java/com/facebook/stetho/inspector/protocol/module/Network.java
  class Network (line 32) | public class Network implements ChromeDevtoolsDomain {
    method Network (line 36) | public Network(Context context) {
    method enable (line 41) | @ChromeDevtoolsMethod
    method disable (line 46) | @ChromeDevtoolsMethod
    method setUserAgentOverride (line 51) | @ChromeDevtoolsMethod
    method getResponseBody (line 56) | @ChromeDevtoolsMethod
    method readResponseBody (line 73) | private GetResponseBodyResponse readResponseBody(String requestId)
    method setPrettyPrinterInitializer (line 96) | public void setPrettyPrinterInitializer(AsyncPrettyPrinterInitializer ...
    class GetResponseBodyResponse (line 101) | private static class GetResponseBodyResponse implements JsonRpcResult {
    class RequestWillBeSentParams (line 109) | public static class RequestWillBeSentParams {
    class ResponseReceivedParams (line 138) | public static class ResponseReceivedParams {
    class LoadingFinishedParams (line 158) | public static class LoadingFinishedParams {
    class LoadingFailedParams (line 166) | public static class LoadingFailedParams {
    class DataReceivedParams (line 184) | public static class DataReceivedParams {
    class Request (line 198) | public static class Request {
    class Initiator (line 212) | public static class Initiator {
    type InitiatorType (line 220) | public enum InitiatorType {
      method InitiatorType (line 227) | private InitiatorType(String protocolValue) {
      method getProtocolValue (line 231) | @JsonValue
    class Response (line 237) | public static class Response {
    class ResourceTiming (line 275) | public static class ResourceTiming {
    class WebSocketCreatedParams (line 313) | public static class WebSocketCreatedParams {
    class WebSocketClosedParams (line 321) | public static class WebSocketClosedParams {
    class WebSocketWillSendHandshakeRequestParams (line 329) | public static class WebSocketWillSendHandshakeRequestParams {
    class WebSocketRequest (line 343) | public static class WebSocketRequest {
    class WebSocketHandshakeResponseReceivedParams (line 348) | public static class WebSocketHandshakeResponseReceivedParams {
    class WebSocketResponse (line 359) | public static class WebSocketResponse {
    class WebSocketFrameReceivedParams (line 379) | public static class WebSocketFrameReceivedParams {
    class WebSocketFrameSentParams (line 390) | public static class WebSocketFrameSentParams {
    class WebSocketFrame (line 401) | public static class WebSocketFrame {
    class WebSocketFrameErrorParams (line 412) | public static class WebSocketFrameErrorParams {

FILE: stetho/src/main/java/com/facebook/stetho/inspector/protocol/module/Page.java
  class Page (line 32) | public class Page implements ChromeDevtoolsDomain {
    method Page (line 52) | public Page(Context context) {
    method Page (line 56) | public Page(Context context, String message) {
    method enable (line 61) | @ChromeDevtoolsMethod
    method disable (line 67) | @ChromeDevtoolsMethod
    method notifyExecutionContexts (line 71) | private void notifyExecutionContexts(JsonRpcPeer peer) {
    method sendWelcomeMessage (line 80) | private void sendWelcomeMessage(JsonRpcPeer peer) {
    method getResourceTree (line 91) | @ChromeDevtoolsMethod
    method createSimpleFrameResourceTree (line 124) | private static FrameResourceTree createSimpleFrameResourceTree(
    method canScreencast (line 144) | @ChromeDevtoolsMethod
    method hasTouchInputs (line 149) | @ChromeDevtoolsMethod
    method setDeviceMetricsOverride (line 154) | @ChromeDevtoolsMethod
    method clearDeviceOrientationOverride (line 158) | @ChromeDevtoolsMethod
    method startScreencast (line 162) | @ChromeDevtoolsMethod
    method stopScreencast (line 172) | @ChromeDevtoolsMethod
    method screencastFrameAck (line 180) | @ChromeDevtoolsMethod
    method clearGeolocationOverride (line 186) | @ChromeDevtoolsMethod
    method setTouchEmulationEnabled (line 190) | @ChromeDevtoolsMethod
    method setEmulatedMedia (line 194) | @ChromeDevtoolsMethod
    method setShowViewportSizeOnResize (line 198) | @ChromeDevtoolsMethod
    class GetResourceTreeParams (line 202) | private static class GetResourceTreeParams implements JsonRpcResult {
    class FrameResourceTree (line 207) | private static class FrameResourceTree {
    class Frame (line 218) | private static class Frame {
    class Resource (line 241) | private static class Resource {
    type ResourceType (line 245) | public enum ResourceType {
      method ResourceType (line 257) | private ResourceType(String protocolValue) {
      method getProtocolValue (line 261) | @JsonValue
    class ExecutionContextCreatedParams (line 267) | private static class ExecutionContextCreatedParams {
    class ExecutionContextDescription (line 272) | private static class ExecutionContextDescription {
    class ScreencastFrameEvent (line 280) | public static class ScreencastFrameEvent {
    class ScreencastFrameEventMetadata (line 288) | public static class ScreencastFrameEventMetadata {
    class StartScreencastRequest (line 303) | public static class StartScreencastRequest {

FILE: stetho/src/main/java/com/facebook/stetho/inspector/protocol/module/Profiler.java
  class Profiler (line 21) | public class Profiler implements ChromeDevtoolsDomain {
    method Profiler (line 22) | public Profiler() {
    method enable (line 25) | @ChromeDevtoolsMethod
    method disable (line 29) | @ChromeDevtoolsMethod
    method setSamplingInterval (line 33) | @ChromeDevtoolsMethod
    method getProfileHeaders (line 37) | @ChromeDevtoolsMethod
    class ProfileHeaderResponse (line 44) | private static class ProfileHeaderResponse implements JsonRpcResult {
    class ProfileHeader (line 49) | private static class ProfileHeader {

FILE: stetho/src/main/java/com/facebook/stetho/inspector/protocol/module/Runtime.java
  class Runtime (line 45) | public class Runtime implements ChromeDevtoolsDomain {
    method Runtime (line 59) | @Deprecated
    method Runtime (line 78) | public Runtime(Context context) {
    method Runtime (line 82) | public Runtime(RuntimeReplFactory replFactory) {
    method mapObject (line 86) | public static int mapObject(JsonRpcPeer peer, Object object) {
    method getSession (line 90) | @Nonnull
    method releaseObject (line 109) | public static void releaseObject(JsonRpcPeer peer, Integer id) throws ...
    method releaseObject (line 113) | @ChromeDevtoolsMethod
    method releaseObjectGroup (line 119) | @ChromeDevtoolsMethod
    method callFunctionOn (line 124) | @ChromeDevtoolsMethod
    method evaluate (line 161) | @ChromeDevtoolsMethod
    method getProperties (line 166) | @ChromeDevtoolsMethod
    method getPropertyClassName (line 171) | private static String getPropertyClassName(Object o) {
    class ObjectProtoContainer (line 180) | private static class ObjectProtoContainer {
      method ObjectProtoContainer (line 183) | public ObjectProtoContainer(Object object) {
    class Session (line 195) | private static class Session {
      method getObjects (line 202) | public ObjectIdMapper getObjects() {
      method getObjectOrThrow (line 206) | public Object getObjectOrThrow(String objectId) throws JsonRpcExcept...
      method objectForRemote (line 217) | public RemoteObject objectForRemote(Object value) {
      method evaluate (line 257) | public EvaluateResponse evaluate(RuntimeReplFactory replFactory, JSO...
      method getRepl (line 273) | @Nonnull
      method buildNormalResponse (line 281) | private EvaluateResponse buildNormalResponse(Object retval) {
      method buildExceptionResponse (line 288) | private EvaluateResponse buildExceptionResponse(Object retval) {
      method getProperties (line 297) | public GetPropertiesResponse getProperties(JSONObject params) throws...
      method arrayToList (line 325) | private List<?> arrayToList(Object object) {
      method getPropertiesForProtoContainer (line 348) | private GetPropertiesResponse getPropertiesForProtoContainer(ObjectP...
      method getPropertiesForIterable (line 365) | private GetPropertiesResponse getPropertiesForIterable(Iterable<?> o...
      method getPropertiesForMap (line 381) | private GetPropertiesResponse getPropertiesForMap(Object object) {
      method getPropertiesForObject (line 396) | private GetPropertiesResponse getPropertiesForObject(Object object) {
    class CallFunctionOnRequest (line 435) | private static class CallFunctionOnRequest {
    class CallFunctionOnResponse (line 455) | private static class CallFunctionOnResponse implements JsonRpcResult {
    class CallArgument (line 463) | private static class CallArgument {
    class GetPropertiesRequest (line 474) | private static class GetPropertiesRequest implements JsonRpcResult {
    class GetPropertiesResponse (line 482) | private static class GetPropertiesResponse implements JsonRpcResult {
    class EvaluateRequest (line 487) | private static class EvaluateRequest implements JsonRpcResult {
    class EvaluateResponse (line 495) | private static class EvaluateResponse implements JsonRpcResult {
    class ExceptionDetails (line 506) | private static class ExceptionDetails {
    class RemoteObject (line 511) | public static class RemoteObject {
    class PropertyDescriptor (line 531) | private static class PropertyDescriptor {
    type ObjectType (line 551) | public static enum ObjectType {
      method ObjectType (line 562) | private ObjectType(String protocolValue) {
      method getProtocolValue (line 566) | @JsonValue
    type ObjectSubType (line 572) | public static enum ObjectSubType {
      method ObjectSubType (line 586) | private ObjectSubType(String protocolValue) {
      method getProtocolValue (line 590) | @JsonValue

FILE: stetho/src/main/java/com/facebook/stetho/inspector/protocol/module/SimpleBooleanResult.java
  class SimpleBooleanResult (line 13) | public class SimpleBooleanResult implements JsonRpcResult {
    method SimpleBooleanResult (line 17) | public SimpleBooleanResult() {
    method SimpleBooleanResult (line 20) | public SimpleBooleanResult(boolean result) {

FILE: stetho/src/main/java/com/facebook/stetho/inspector/protocol/module/Worker.java
  class Worker (line 17) | public class Worker implements ChromeDevtoolsDomain {
    method Worker (line 18) | public Worker() {
    method canInspectWorkers (line 21) | @ChromeDevtoolsMethod

FILE: stetho/src/main/java/com/facebook/stetho/inspector/runtime/RhinoDetectingRuntimeReplFactory.java
  class RhinoDetectingRuntimeReplFactory (line 29) | public class RhinoDetectingRuntimeReplFactory implements RuntimeReplFact...
    method RhinoDetectingRuntimeReplFactory (line 36) | public RhinoDetectingRuntimeReplFactory(Context context) {
    method newInstance (line 40) | @Override
    method findRhinoReplFactory (line 66) | @Nullable

FILE: stetho/src/main/java/com/facebook/stetho/inspector/screencast/ScreencastDispatcher.java
  class ScreencastDispatcher (line 28) | public final class ScreencastDispatcher {
    method ScreencastDispatcher (line 49) | public ScreencastDispatcher() {
    method startScreencast (line 52) | public void startScreencast(JsonRpcPeer peer, Page.StartScreencastRequ...
    method stopScreencast (line 64) | public void stopScreencast() {
    class BitmapFetchRunnable (line 69) | private class BitmapFetchRunnable implements Runnable {
      method run (line 70) | @Override
      method updateScreenBitmap (line 76) | private void updateScreenBitmap() {
    class EventDispatchRunnable (line 109) | private class EventDispatchRunnable implements Runnable {
      method withEndAction (line 112) | private EventDispatchRunnable withEndAction(Runnable endAction) {
      method run (line 117) | @Override
    class CancellationRunnable (line 139) | private class CancellationRunnable implements Runnable {
      method run (line 140) | @Override

FILE: stetho/src/main/java/com/facebook/stetho/json/ObjectMapper.java
  class ObjectMapper (line 46) | public class ObjectMapper {
    method convertValue (line 64) | public <T> T convertValue(Object fromValue, Class<T> toValueType)
    method _convertFromJSONObject (line 97) | private <T> T _convertFromJSONObject(JSONObject jsonObject, Class<T> t...
    method getValueForField (line 125) | private Object getValueForField(Field field, Object value)
    method getEnumValue (line 171) | private Enum getEnumValue(String value, Class<? extends Enum> clazz) {
    method getEnumByMethod (line 189) | private Enum getEnumByMethod(String value, Class<? extends Enum> clazz...
    method convertArrayToList (line 208) | private List<Object> convertArrayToList(Field field, JSONArray array)
    method _convertToJSONObject (line 240) | private JSONObject _convertToJSONObject(Object fromValue)
    method getJsonValue (line 271) | private Object getJsonValue(Object value, Class<?> clazz, Field field)
    method convertListToJsonArray (line 305) | private JSONArray convertListToJsonArray(Object value)
    method getJsonValueMethod (line 321) | @Nullable
    method getJsonValueMethodImpl (line 333) | @Nullable
    method canDirectlySerializeClass (line 345) | private static boolean canDirectlySerializeClass(Class clazz)  {
    method isWrapperOrPrimitiveType (line 350) | private static boolean isWrapperOrPrimitiveType(Class<?> clazz) {

FILE: stetho/src/main/java/com/facebook/stetho/server/AddressNameHelper.java
  class AddressNameHelper (line 12) | public class AddressNameHelper {
    method createCustomAddress (line 15) | public static String createCustomAddress(String suffix) {

FILE: stetho/src/main/java/com/facebook/stetho/server/CompositeInputStream.java
  class CompositeInputStream (line 17) | @NotThreadSafe
    method CompositeInputStream (line 22) | public CompositeInputStream(InputStream[] streams) {
    method available (line 30) | @Override
    method close (line 35) | @Override
    method closeAll (line 40) | private void closeAll(int mostImportantIndex) throws IOException {
    method mark (line 57) | @Override
    method markSupported (line 62) | @Override
    method reset (line 67) | @Override
    method read (line 72) | @Override
    method read (line 77) | @Override
    method read (line 88) | @Override
    method tryMoveToNextStream (line 99) | private boolean tryMoveToNextStream() {
    method skip (line 107) | @Override

FILE: stetho/src/main/java/com/facebook/stetho/server/LazySocketHandler.java
  class LazySocketHandler (line 22) | public class LazySocketHandler implements SocketHandler {
    method LazySocketHandler (line 28) | public LazySocketHandler(SocketHandlerFactory socketHandlerFactory) {
    method onAccepted (line 32) | @Override
    method getSocketHandler (line 37) | @Nonnull

FILE: stetho/src/main/java/com/facebook/stetho/server/LeakyBufferedInputStream.java
  class LeakyBufferedInputStream (line 17) | @ThreadSafe
    method LeakyBufferedInputStream (line 22) | public LeakyBufferedInputStream(InputStream in, int bufSize) {
    method mark (line 26) | @Override
    method reset (line 33) | @Override
    method markSupported (line 40) | @Override
    method leakBufferAndStream (line 45) | public synchronized InputStream leakBufferAndStream() {
    method clearBufferLocked (line 56) | private byte[] clearBufferLocked() {
    method throwIfLeaked (line 64) | private void throwIfLeaked() {
    method throwIfMarked (line 70) | private void throwIfMarked() {

FILE: stetho/src/main/java/com/facebook/stetho/server/LocalSocketServer.java
  class LocalSocketServer (line 24) | public class LocalSocketServer {
    method LocalSocketServer (line 43) | public LocalSocketServer(
    method getName (line 52) | public String getName() {
    method run (line 64) | public void run() throws IOException {
    method listenOnAddress (line 75) | private void listenOnAddress(String address) throws IOException {
    method stop (line 113) | public void stop() {
    method bindToSocket (line 131) | @Nonnull
    class WorkerThread (line 153) | private static class WorkerThread extends Thread {
      method WorkerThread (line 157) | public WorkerThread(LocalSocket socket, SocketHandler socketHandler) {
      method run (line 162) | @Override

FILE: stetho/src/main/java/com/facebook/stetho/server/PeerAuthorizationException.java
  class PeerAuthorizationException (line 10) | public class PeerAuthorizationException extends Exception {
    method PeerAuthorizationException (line 11) | public PeerAuthorizationException(String message) {

FILE: stetho/src/main/java/com/facebook/stetho/server/ProtocolDetectingSocketHandler.java
  class ProtocolDetectingSocketHandler (line 31) | public class ProtocolDetectingSocketHandler extends SecureSocketHandler {
    method ProtocolDetectingSocketHandler (line 36) | public ProtocolDetectingSocketHandler(Context context) {
    method addHandler (line 40) | public void addHandler(MagicMatcher magicMatcher, SocketLikeHandler ha...
    method onSecured (line 44) | @Override
    type MagicMatcher (line 69) | public interface MagicMatcher {
      method matches (line 70) | boolean matches(InputStream in) throws IOException;
    class ExactMagicMatcher (line 73) | public static class ExactMagicMatcher implements MagicMatcher {
      method ExactMagicMatcher (line 76) | public ExactMagicMatcher(byte[] magic) {
      method matches (line 80) | @Override
    class AlwaysMatchMatcher (line 88) | public static class AlwaysMatchMatcher implements MagicMatcher {
      method matches (line 89) | @Override
    class HandlerInfo (line 95) | private static class HandlerInfo {
      method HandlerInfo (line 99) | private HandlerInfo(MagicMatcher magicMatcher, SocketLikeHandler han...

FILE: stetho/src/main/java/com/facebook/stetho/server/SecureSocketHandler.java
  class SecureSocketHandler (line 20) | public abstract class SecureSocketHandler implements SocketHandler {
    method SecureSocketHandler (line 23) | public SecureSocketHandler(Context context) {
    method onAccepted (line 27) | @Override
    method onSecured (line 37) | protected abstract void onSecured(LocalSocket socket) throws IOException;
    method enforcePermission (line 39) | private static void enforcePermission(Context context, LocalSocket peer)

FILE: stetho/src/main/java/com/facebook/stetho/server/ServerManager.java
  class ServerManager (line 15) | public class ServerManager {
    method ServerManager (line 21) | public ServerManager(LocalSocketServer server) {
    method start (line 25) | public void start() {
    method startServer (line 33) | private void startServer(final LocalSocketServer server) {

FILE: stetho/src/main/java/com/facebook/stetho/server/SocketHandler.java
  type SocketHandler (line 17) | public interface SocketHandler {
    method onAccepted (line 23) | void onAccepted(LocalSocket socket) throws IOException;

FILE: stetho/src/main/java/com/facebook/stetho/server/SocketHandlerFactory.java
  type SocketHandlerFactory (line 11) | public interface SocketHandlerFactory {
    method create (line 12) | SocketHandler create();

FILE: stetho/src/main/java/com/facebook/stetho/server/SocketLike.java
  class SocketLike (line 25) | public class SocketLike {
    method SocketLike (line 29) | public SocketLike(SocketLike socketLike, LeakyBufferedInputStream leak...
    method SocketLike (line 33) | public SocketLike(LocalSocket socket, LeakyBufferedInputStream leakyIn...
    method getInput (line 38) | public InputStream getInput() throws IOException {
    method getOutput (line 42) | public OutputStream getOutput() throws IOException {

FILE: stetho/src/main/java/com/facebook/stetho/server/SocketLikeHandler.java
  type SocketLikeHandler (line 21) | public interface SocketLikeHandler {
    method onAccepted (line 23) | void onAccepted(SocketLike socket) throws IOException;

FILE: stetho/src/main/java/com/facebook/stetho/server/http/ExactPathMatcher.java
  class ExactPathMatcher (line 10) | public class ExactPathMatcher implements PathMatcher {
    method ExactPathMatcher (line 13) | public ExactPathMatcher(String path) {
    method match (line 17) | @Override

FILE: stetho/src/main/java/com/facebook/stetho/server/http/HandlerRegistry.java
  class HandlerRegistry (line 14) | public class HandlerRegistry {
    method register (line 18) | public synchronized void register(PathMatcher path, HttpHandler handle...
    method unregister (line 23) | public synchronized boolean unregister(PathMatcher path, HttpHandler h...
    method lookup (line 35) | @Nullable

FILE: stetho/src/main/java/com/facebook/stetho/server/http/HttpHandler.java
  type HttpHandler (line 14) | public interface HttpHandler {
    method handleRequest (line 15) | boolean handleRequest(

FILE: stetho/src/main/java/com/facebook/stetho/server/http/HttpHeaders.java
  type HttpHeaders (line 10) | public interface HttpHeaders {

FILE: stetho/src/main/java/com/facebook/stetho/server/http/HttpStatus.java
  type HttpStatus (line 10) | public interface HttpStatus {

FILE: stetho/src/main/java/com/facebook/stetho/server/http/LightHttpBody.java
  class LightHttpBody (line 14) | public abstract class LightHttpBody {
    method create (line 15) | public static LightHttpBody create(String body, String contentType) {
    method create (line 23) | public static LightHttpBody create(final byte[] body, final String con...
    method contentType (line 42) | public abstract String contentType();
    method contentLength (line 43) | public abstract int contentLength();
    method writeTo (line 44) | public abstract void writeTo(OutputStream output) throws IOException;

FILE: stetho/src/main/java/com/facebook/stetho/server/http/LightHttpMessage.java
  class LightHttpMessage (line 14) | public class LightHttpMessage {
    method addHeader (line 18) | public void addHeader(String name, String value) {
    method getFirstHeaderValue (line 23) | @Nullable
    method reset (line 33) | public void reset() {

FILE: stetho/src/main/java/com/facebook/stetho/server/http/LightHttpRequest.java
  class LightHttpRequest (line 12) | public class LightHttpRequest extends LightHttpMessage {
    method reset (line 17) | @Override

FILE: stetho/src/main/java/com/facebook/stetho/server/http/LightHttpResponse.java
  class LightHttpResponse (line 10) | public class LightHttpResponse extends LightHttpMessage {
    method prepare (line 15) | public void prepare() {
    method reset (line 22) | @Override

FILE: stetho/src/main/java/com/facebook/stetho/server/http/LightHttpServer.java
  class LightHttpServer (line 32) | public class LightHttpServer {
    method LightHttpServer (line 37) | public LightHttpServer(HandlerRegistry handlerRegistry) {
    method serve (line 41) | public void serve(SocketLike socket) throws IOException {
    method dispatchToHandler (line 70) | private boolean dispatchToHandler(
    method readRequestMessage (line 100) | @Nullable
    method readHeaders (line 127) | private static void readHeaders(
    method writeFullResponse (line 151) | private static void writeFullResponse(
    method writeResponseMessage (line 163) | public static void writeResponseMessage(LightHttpResponse response, Ht...
    class HttpMessageReader (line 181) | private static class HttpMessageReader {
      method HttpMessageReader (line 186) | public HttpMessageReader(BufferedInputStream in) {
      method readLine (line 190) | @Nullable
      class NewLineDetector (line 215) | private static class NewLineDetector {
        method accept (line 222) | public void accept(char c) {
        method state (line 248) | public int state() {
    class HttpMessageWriter (line 260) | public static class HttpMessageWriter {
      method HttpMessageWriter (line 264) | public HttpMessageWriter(BufferedOutputStream out) {
      method writeLine (line 268) | public void writeLine(String line) throws IOException {
      method writeLine (line 276) | public void writeLine() throws IOException {
      method flush (line 280) | public void flush() throws IOException {

FILE: stetho/src/main/java/com/facebook/stetho/server/http/PathMatcher.java
  type PathMatcher (line 10) | public interface PathMatcher {
    method match (line 11) | boolean match(String path);

FILE: stetho/src/main/java/com/facebook/stetho/server/http/RegexpPathMatcher.java
  class RegexpPathMatcher (line 12) | public class RegexpPathMatcher implements PathMatcher {
    method RegexpPathMatcher (line 15) | public RegexpPathMatcher(Pattern pattern) {
    method match (line 19) | @Override

FILE: stetho/src/main/java/com/facebook/stetho/websocket/CloseCodes.java
  type CloseCodes (line 13) | public interface CloseCodes {

FILE: stetho/src/main/java/com/facebook/stetho/websocket/Frame.java
  class Frame (line 19) | class Frame {
    method readFrom (line 36) | public void readFrom(BufferedInputStream input) throws IOException {
    method writeTo (line 47) | public void writeTo(BufferedOutputStream output) throws IOException {
    method decodeFirstByte (line 61) | private void decodeFirstByte(byte b) {
    method encodeFirstByte (line 69) | private byte encodeFirstByte() {
    method decodeLength (line 87) | private long decodeLength(byte firstLenByte, InputStream in) throws IO...
    method encodeLength (line 104) | private static byte[] encodeLength(long len) {
    method decodeMaskingKey (line 128) | private static byte[] decodeMaskingKey(InputStream in) throws IOExcept...
    method readBytesOrThrow (line 134) | private static void readBytesOrThrow(InputStream in, byte[] buf, int o...
    method readByteOrThrow (line 146) | private static byte readByteOrThrow(InputStream in) throws IOException {

FILE: stetho/src/main/java/com/facebook/stetho/websocket/FrameHelper.java
  class FrameHelper (line 12) | class FrameHelper {
    method createTextFrame (line 13) | public static Frame createTextFrame(String payload) {
    method createBinaryFrame (line 17) | public static Frame createBinaryFrame(byte[] payload) {
    method createCloseFrame (line 21) | public static Frame createCloseFrame(int closeCode, String reasonPhras...
    method createPingFrame (line 37) | public static Frame createPingFrame(byte[] payload, int payloadLen) {
    method createPongFrame (line 41) | public static Frame createPongFrame(byte[] payload, int payloadLen) {
    method createSimpleFrame (line 45) | private static Frame createSimpleFrame(byte opcode, byte[] payload) {
    method createSimpleFrame (line 49) | private static Frame createSimpleFrame(byte opCode, byte[] payload, in...

FILE: stetho/src/main/java/com/facebook/stetho/websocket/MaskingHelper.java
  class MaskingHelper (line 10) | class MaskingHelper {
    method unmask (line 11) | public static void unmask(byte[] key, byte[] data, int offset, int cou...

FILE: stetho/src/main/java/com/facebook/stetho/websocket/ReadCallback.java
  type ReadCallback (line 10) | interface ReadCallback {
    method onCompleteFrame (line 11) | void onCompleteFrame(byte opcode, byte[] payload, int payloadLen);

FILE: stetho/src/main/java/com/facebook/stetho/websocket/ReadHandler.java
  class ReadHandler (line 15) | class ReadHandler {
    method ReadHandler (line 24) | public ReadHandler(InputStream bufferedInput, SimpleEndpoint endpoint) {
    method readLoop (line 35) | public void readLoop(ReadCallback readCallback) throws IOException {

FILE: stetho/src/main/java/com/facebook/stetho/websocket/SimpleEndpoint.java
  type SimpleEndpoint (line 13) | public interface SimpleEndpoint {
    method onOpen (line 20) | void onOpen(SimpleSession session);
    method onMessage (line 29) | void onMessage(SimpleSession session, String message);
    method onMessage (line 39) | void onMessage(SimpleSession session, byte[] message, int messageLen);
    method onClose (line 49) | void onClose(SimpleSession session, int closeReasonCode, String closeR...
    method onError (line 59) | void onError(SimpleSession session, Throwable t);

FILE: stetho/src/main/java/com/facebook/stetho/websocket/SimpleSession.java
  type SimpleSession (line 13) | public interface SimpleSession {
    method sendText (line 14) | void sendText(String payload);
    method sendBinary (line 15) | void sendBinary(byte[] payload);
    method close (line 23) | void close(int closeReason, String reasonPhrase);
    method isOpen (line 25) | boolean isOpen();

FILE: stetho/src/main/java/com/facebook/stetho/websocket/WebSocketHandler.java
  class WebSocketHandler (line 40) | public class WebSocketHandler implements HttpHandler {
    method WebSocketHandler (line 61) | public WebSocketHandler(SimpleEndpoint endpoint) {
    method handleRequest (line 65) | @Override
    method isSupportableUpgradeRequest (line 85) | private static boolean isSupportableUpgradeRequest(LightHttpRequest re...
    method doUpgrade (line 92) | private void doUpgrade(
    method generateServerKey (line 118) | private static String generateServerKey(String clientKey) {
    method getFirstHeaderValue (line 129) | @Nullable

FILE: stetho/src/main/java/com/facebook/stetho/websocket/WebSocketSession.java
  class WebSocketSession (line 21) | class WebSocketSession implements SimpleSession {
    method WebSocketSession (line 29) | public WebSocketSession(
    method handle (line 38) | public void handle() throws IOException {
    method sendText (line 54) | @Override
    method sendBinary (line 59) | @Override
    method close (line 64) | @Override
    method sendClose (line 70) | private void sendClose(int closeReason, String reasonPhrase) {
    method markSentClose (line 75) | void markSentClose() {
    method markAndSignalOpen (line 79) | void markAndSignalOpen() {
    method markAndSignalClosed (line 85) | void markAndSignalClosed(int closeReason, String reasonPhrase) {
    method isOpen (line 91) | @Override
    method doWrite (line 96) | private void doWrite(Frame frame) {
    method signalErrorIfNotOpen (line 108) | private boolean signalErrorIfNotOpen() {
    method signalError (line 116) | private void signalError(IOException e) {
    method onCompleteFrame (line 121) | @Override
    method handleClose (line 145) | private void handleClose(byte[] payload, int payloadLen) {
    method handlePing (line 165) | private void handlePing(byte[] payload, int payloadLen) {
    method handlePong (line 169) | private void handlePong(byte[] payload, int payloadLen) {
    method handleTextFrame (line 173) | private void handleTextFrame(byte[] payload, int payloadLen) {
    method handleBinaryFrame (line 177) | private void handleBinaryFrame(byte[] payload, int payloadLen) {
    method onFailure (line 183) | @Override
    method onSuccess (line 188) | @Override

FILE: stetho/src/main/java/com/facebook/stetho/websocket/WriteCallback.java
  type WriteCallback (line 12) | interface WriteCallback {
    method onFailure (line 13) | void onFailure(IOException e);
    method onSuccess (line 14) | void onSuccess();

FILE: stetho/src/main/java/com/facebook/stetho/websocket/WriteHandler.java
  class WriteHandler (line 16) | @ThreadSafe
    method WriteHandler (line 20) | public WriteHandler(OutputStream rawSocketOutput) {
    method write (line 24) | public synchronized void write(Frame frame, WriteCallback callback) {

FILE: stetho/src/test/java/com/facebook/stetho/PluginBuilderTest.java
  class PluginBuilderTest (line 26) | @Config(emulateSdk = Build.VERSION_CODES.JELLY_BEAN)
    method test_Remove_DefaultInspectorModulesBuilder (line 31) | @Test
    method test_Remove_DefaultDumperPluginsBuilder (line 50) | @Test

FILE: stetho/src/test/java/com/facebook/stetho/inspector/database/DatabasePeerManagerTest.java
  class DatabasePeerManagerTest (line 18) | public class DatabasePeerManagerTest {
    method testTidyDatabaseList (line 19) | @Test

FILE: stetho/src/test/java/com/facebook/stetho/inspector/elements/android/MethodInvokerTest.java
  class MethodInvokerTest (line 23) | @Config(emulateSdk = Build.VERSION_CODES.JELLY_BEAN)
    method setup (line 32) | @Before
    method testSetCharSequence (line 36) | @Test
    method testSetInteger (line 42) | @Test
    method testSetFloat (line 48) | @Test
    method testSetBoolean (line 54) | @Test
    method testSetAttributeAsTextIgnoreUnknownAttribute (line 60) | @Test

FILE: stetho/src/test/java/com/facebook/stetho/inspector/elements/android/ViewDescriptorTest.java
  class ViewDescriptorTest (line 27) | @Config(emulateSdk = Build.VERSION_CODES.JELLY_BEAN)
    method testSetAttributeAsTextWithSetText (line 37) | @Test
    method testSetAttributeAsTextWithSetId (line 43) | @Test
    method testSetAttributeAsTextWithSetChecked (line 49) | @Test
    method testSetMultipleAttributesAsText (line 55) | @Test
    method testSetAttributeAsTextIgnoreInvalidFormat (line 62) | @Test

FILE: stetho/src/test/java/com/facebook/stetho/inspector/network/AsyncPrettyPrintResponseBodyTest.java
  class AsyncPrettyPrintResponseBodyTest (line 43) | public class AsyncPrettyPrintResponseBodyTest {
    method setup (line 70) | @Before
    method testAsyncPrettyPrinterResult (line 79) | @Test
    method testInitAsyncPrettyPrinterForResponseWithRegisteredHeader (line 90) | @Test
    method testInitAsyncPrettyPrinterForResponseWithUnregisteredHeader (line 113) | @Test
    method testGetInstanceWithUnmatchedHeader (line 136) | @Test
    class PrettyPrinterTestFactory (line 159) | private class PrettyPrinterTestFactory extends DownloadingAsyncPrettyP...
      method doPrint (line 160) | @Override
      method matchAndParseHeader (line 170) | @Override
    class TestInspectorResponse (line 181) | private class TestInspectorResponse implements NetworkEventReporter.In...
      method TestInspectorResponse (line 186) | public TestInspectorResponse(
      method headerCount (line
Condensed preview — 321 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,296K chars).
[
  {
    "path": ".gitignore",
    "chars": 56,
    "preview": ".gradle\n/local.properties\n/.idea\n*.iml\n.DS_Store\n/build\n"
  },
  {
    "path": ".travis.yml",
    "chars": 340,
    "preview": "language: android\n\njdk:\n  - oraclejdk8\n\nbefore_install:\n  - yes | sdkmanager \"platforms;android-27\"\n\nandroid:\n  componen"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 9324,
    "preview": "Change Log\n==========\n\n## Version 1.6.0\n_2021-03-17_\n\n * Fix #662/665: AndroidX upgrade.\n\n## Version 1.5.1\n_2019-03-17_\n"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "chars": 244,
    "preview": "# Code of Conduct\n\nFacebook has adopted a Code of Conduct that we expect project participants to adhere to.\nPlease read "
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 1809,
    "preview": "# Contributing to Stetho\nWe want to make contributing to this project as easy and transparent as\npossible.\n\n## Our Devel"
  },
  {
    "path": "LICENSE",
    "chars": 1086,
    "preview": "MIT License\n\nCopyright (c) Facebook, Inc. and its affiliates.\n\nPermission is hereby granted, free of charge, to any pers"
  },
  {
    "path": "README.md",
    "chars": 4506,
    "preview": "# Stetho [![Build Status](https://travis-ci.org/facebook/stetho.svg?branch=master)](https://travis-ci.org/facebook/steth"
  },
  {
    "path": "build-tools/protocol.json",
    "chars": 298004,
    "preview": "{\n    \"version\": { \"major\": \"1\", \"minor\": \"1\" },\n    \"domains\": [{\n        \"domain\": \"Inspector\",\n        \"hidden\": true"
  },
  {
    "path": "build-tools/readme.md",
    "chars": 773,
    "preview": "#scraper\nExample:\n\n```\n➜ node scraper.js protocol.json Debugger.FunctionDetails\n```\n\n... generates the `FunctionDetails`"
  },
  {
    "path": "build-tools/scraper.js",
    "chars": 9190,
    "preview": "var fs = require('fs');\n\nvar dependencies = [];\nvar alreadyGenerated = [];\nvar anonymousTypesToGenerate = [];\nvar anonym"
  },
  {
    "path": "build.gradle",
    "chars": 296,
    "preview": "buildscript {\n    repositories {\n        google()\n        jcenter()\n    }\n    dependencies {\n        classpath 'com.andr"
  },
  {
    "path": "gradle/wrapper/gradle-wrapper.properties",
    "chars": 230,
    "preview": "#Mon Mar 08 22:57:34 PST 2021\ndistributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\nzipStoreBase=GRADLE_USER_"
  },
  {
    "path": "gradle.properties",
    "chars": 811,
    "preview": "# Project-wide Gradle settings.\n\n# IDE (e.g. Android Studio) users:\n# Gradle settings configured through the IDE *will o"
  },
  {
    "path": "gradlew",
    "chars": 5296,
    "preview": "#!/usr/bin/env sh\n\n##############################################################################\n##\n##  Gradle start up"
  },
  {
    "path": "gradlew.bat",
    "chars": 2260,
    "preview": "@if \"%DEBUG%\" == \"\" @echo off\r\n@rem ##########################################################################\r\n@rem\r\n@r"
  },
  {
    "path": "release.gradle",
    "chars": 3886,
    "preview": "apply plugin: 'maven'\napply plugin: 'signing'\n\ndef isReleaseBuild() {\n    return VERSION_NAME.contains(\"SNAPSHOT\") == fa"
  },
  {
    "path": "scripts/.gitignore",
    "chars": 12,
    "preview": "__pycache__\n"
  },
  {
    "path": "scripts/dumpapp",
    "chars": 2287,
    "preview": "#!/usr/bin/env python3\n\nimport sys\nimport os\nimport io\n\nfrom stetho_open import *\n\ndef main():\n  # Manually parse out -p"
  },
  {
    "path": "scripts/hprof_dump.sh",
    "chars": 695,
    "preview": "#!/bin/bash\n\nDIR=\"$(cd \"$(dirname \"${BASH_SOURCE[0]}\")\" && pwd)\"\nDUMPAPP=\"$DIR/dumpapp\"\n\nset -e\n\n# This will generate an"
  },
  {
    "path": "scripts/stetho_open.py",
    "chars": 5385,
    "preview": "#!/usr/bin/env python3\n###############################################################################\n##\n## Simple util"
  },
  {
    "path": "settings.gradle",
    "chars": 178,
    "preview": "include ':stetho'\ninclude ':stetho-urlconnection'\ninclude ':stetho-okhttp'\ninclude ':stetho-okhttp3'\ninclude ':stetho-js"
  },
  {
    "path": "stetho/.gitignore",
    "chars": 7,
    "preview": "/build\n"
  },
  {
    "path": "stetho/build.gradle",
    "chars": 2214,
    "preview": "apply plugin: 'com.android.library'\n\nandroid {\n    compileSdkVersion rootProject.ext.compileSdkVersion\n\n    defaultConfi"
  },
  {
    "path": "stetho/gradle.properties",
    "chars": 57,
    "preview": "POM_NAME=Stetho\nPOM_ARTIFACT_ID=stetho\nPOM_PACKAGING=aar\n"
  },
  {
    "path": "stetho/proguard-consumer.pro",
    "chars": 75,
    "preview": "-keep class com.facebook.stetho.** { *; }\n-dontwarn com.facebook.stetho.**\n"
  },
  {
    "path": "stetho/src/main/AndroidManifest.xml",
    "chars": 177,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    package="
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/DumperPluginsProvider.java",
    "chars": 582,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/InspectorModulesProvider.java",
    "chars": 374,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/Stetho.java",
    "chars": 21249,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/common/Accumulator.java",
    "chars": 286,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/common/ArrayListAccumulator.java",
    "chars": 414,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/common/ExceptionUtil.java",
    "chars": 786,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/common/ListUtil.java",
    "chars": 5893,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/common/LogRedirector.java",
    "chars": 3358,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/common/LogUtil.java",
    "chars": 3459,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/common/Predicate.java",
    "chars": 282,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/common/ProcessUtil.java",
    "chars": 2870,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/common/ReflectionUtil.java",
    "chars": 1201,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/common/StringUtil.java",
    "chars": 1089,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/common/ThreadBound.java",
    "chars": 2640,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/common/UncheckedCallable.java",
    "chars": 571,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/common/Utf8Charset.java",
    "chars": 725,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/common/Util.java",
    "chars": 3928,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/common/android/AccessibilityUtil.java",
    "chars": 8317,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/common/android/DialogFragmentAccessor.java",
    "chars": 460,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/common/android/FragmentAccessor.java",
    "chars": 740,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/common/android/FragmentActivityAccessor.java",
    "chars": 487,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/common/android/FragmentCompat.java",
    "chars": 3333,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/common/android/FragmentCompatFramework.java",
    "chars": 5028,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/common/android/FragmentCompatSupportLib.java",
    "chars": 3458,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/common/android/FragmentCompatUtil.java",
    "chars": 3690,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/common/android/FragmentManagerAccessor.java",
    "chars": 448,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/common/android/HandlerUtil.java",
    "chars": 4012,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/common/android/ResourcesUtil.java",
    "chars": 1980,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/common/android/ViewGroupUtil.java",
    "chars": 601,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/common/android/ViewUtil.java",
    "chars": 1322,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/dumpapp/ArgsHelper.java",
    "chars": 965,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/dumpapp/DumpException.java",
    "chars": 735,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/dumpapp/DumpUsageException.java",
    "chars": 405,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/dumpapp/DumpappFramingException.java",
    "chars": 493,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/dumpapp/DumpappHttpSocketLikeHandler.java",
    "chars": 3941,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/dumpapp/DumpappOutputBrokenException.java",
    "chars": 1369,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/dumpapp/DumpappSocketLikeHandler.java",
    "chars": 4024,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/dumpapp/Dumper.java",
    "chars": 5068,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/dumpapp/DumperContext.java",
    "chars": 2052,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/dumpapp/DumperPlugin.java",
    "chars": 3805,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/dumpapp/Framer.java",
    "chars": 7601,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/dumpapp/GlobalOptions.java",
    "chars": 1048,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/dumpapp/UnexpectedFrameException.java",
    "chars": 421,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/dumpapp/plugins/CrashDumperPlugin.java",
    "chars": 6156,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/dumpapp/plugins/FilesDumperPlugin.java",
    "chars": 7136,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/dumpapp/plugins/HprofDumperPlugin.java",
    "chars": 3752,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/dumpapp/plugins/SharedPreferencesDumperPlugin.java",
    "chars": 7412,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/ChromeDevtoolsServer.java",
    "chars": 6882,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/ChromeDiscoveryHandler.java",
    "chars": 6753,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/DevtoolsSocketHandler.java",
    "chars": 1728,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/MessageHandlingException.java",
    "chars": 441,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/MethodDispatcher.java",
    "chars": 5972,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/MismatchedResponseException.java",
    "chars": 568,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/console/CLog.java",
    "chars": 1622,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/console/ConsolePeerManager.java",
    "chars": 784,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/console/RuntimeRepl.java",
    "chars": 325,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/console/RuntimeReplFactory.java",
    "chars": 743,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/database/ContentProviderDatabaseDriver.java",
    "chars": 3188,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/database/ContentProviderSchema.java",
    "chars": 1988,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/database/DatabaseConnectionProvider.java",
    "chars": 816,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/database/DatabaseDriver2Adapter.java",
    "chars": 2020,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/database/DatabaseFilesProvider.java",
    "chars": 474,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/database/DefaultDatabaseConnectionProvider.java",
    "chars": 2412,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/database/DefaultDatabaseFilesProvider.java",
    "chars": 945,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/database/SQLiteDatabaseCompat.java",
    "chars": 2633,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/database/SqliteDatabaseDriver.java",
    "chars": 7801,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/domstorage/DOMStoragePeerManager.java",
    "chars": 6374,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/domstorage/SharedPreferencesHelper.java",
    "chars": 3563,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/AbstractChainedDescriptor.java",
    "chars": 5094,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/AttributeAccumulator.java",
    "chars": 321,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/ChainedDescriptor.java",
    "chars": 3187,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/ComputedStyleAccumulator.java",
    "chars": 325,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/Descriptor.java",
    "chars": 2937,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/DescriptorMap.java",
    "chars": 2648,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/DescriptorProvider.java",
    "chars": 336,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/DescriptorRegistrar.java",
    "chars": 367,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/Document.java",
    "chars": 25473,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/DocumentProvider.java",
    "chars": 940,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/DocumentProviderFactory.java",
    "chars": 552,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/DocumentProviderListener.java",
    "chars": 524,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/DocumentView.java",
    "chars": 346,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/ElementInfo.java",
    "chars": 1218,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/NodeDescriptor.java",
    "chars": 1114,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/NodeType.java",
    "chars": 639,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/ObjectDescriptor.java",
    "chars": 1530,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/Origin.java",
    "chars": 572,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/ShadowDocument.java",
    "chars": 17937,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/StyleAccumulator.java",
    "chars": 336,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/StyleRuleNameAccumulator.java",
    "chars": 333,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/android/AccessibilityNodeInfoWrapper.java",
    "chars": 11283,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/android/ActivityDescriptor.java",
    "chars": 3508,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/android/ActivityTracker.java",
    "chars": 6418,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/android/AndroidDescriptorHost.java",
    "chars": 492,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/android/AndroidDocumentConstants.java",
    "chars": 595,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/android/AndroidDocumentProvider.java",
    "chars": 12318,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/android/AndroidDocumentProviderFactory.java",
    "chars": 2189,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/android/AndroidDocumentRoot.java",
    "chars": 1168,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/android/ApplicationDescriptor.java",
    "chars": 3870,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/android/DialogDescriptor.java",
    "chars": 1947,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/android/DialogFragmentDescriptor.java",
    "chars": 5346,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/android/DocumentHiddenView.java",
    "chars": 418,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/android/FragmentDescriptor.java",
    "chars": 3171,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/android/HighlightableDescriptor.java",
    "chars": 1334,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/android/MethodInvoker.java",
    "chars": 3848,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/android/TextViewDescriptor.java",
    "chars": 2361,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/android/ViewDescriptor.java",
    "chars": 17644,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/android/ViewGroupDescriptor.java",
    "chars": 4155,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/android/ViewHighlightOverlays.java",
    "chars": 8455,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/android/ViewHighlighter.java",
    "chars": 4030,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/android/WindowDescriptor.java",
    "chars": 1551,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/android/window/WindowRootViewCompactV16Impl.java",
    "chars": 1840,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/android/window/WindowRootViewCompactV18Impl.java",
    "chars": 1661,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/android/window/WindowRootViewCompactV19Impl.java",
    "chars": 1563,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/elements/android/window/WindowRootViewCompat.java",
    "chars": 2412,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/helper/ChromePeerManager.java",
    "chars": 4440,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/helper/IntegerFormatter.java",
    "chars": 1477,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/helper/ObjectIdMapper.java",
    "chars": 2844,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/helper/PeerRegistrationListener.java",
    "chars": 429,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/helper/PeersRegisteredListener.java",
    "chars": 1049,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/helper/ThreadBoundProxy.java",
    "chars": 1415,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/jsonrpc/DisconnectReceiver.java",
    "chars": 435,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/jsonrpc/JsonRpcException.java",
    "chars": 687,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/jsonrpc/JsonRpcPeer.java",
    "chars": 3028,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/jsonrpc/JsonRpcResult.java",
    "chars": 498,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/jsonrpc/PendingRequest.java",
    "chars": 832,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/jsonrpc/PendingRequestCallback.java",
    "chars": 416,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/jsonrpc/protocol/EmptyResult.java",
    "chars": 361,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/jsonrpc/protocol/JsonRpcError.java",
    "chars": 1303,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/jsonrpc/protocol/JsonRpcEvent.java",
    "chars": 770,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/jsonrpc/protocol/JsonRpcRequest.java",
    "chars": 894,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/jsonrpc/protocol/JsonRpcResponse.java",
    "chars": 620,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/network/AsyncPrettyPrinter.java",
    "chars": 1273,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/network/AsyncPrettyPrinterExecutorHolder.java",
    "chars": 952,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/network/AsyncPrettyPrinterFactory.java",
    "chars": 929,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/network/AsyncPrettyPrinterInitializer.java",
    "chars": 809,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/network/AsyncPrettyPrinterRegistry.java",
    "chars": 923,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/network/CountingOutputStream.java",
    "chars": 910,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/network/DecompressionHelper.java",
    "chars": 2059,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/network/DefaultResponseHandler.java",
    "chars": 1419,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/network/DownloadingAsyncPrettyPrinterFactory.java",
    "chars": 5795,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/network/GunzippingOutputStream.java",
    "chars": 3050,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/network/MimeMatcher.java",
    "chars": 2457,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/network/NetworkEventReporter.java",
    "chars": 13077,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/network/NetworkEventReporterImpl.java",
    "chars": 17347,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/network/NetworkPeerManager.java",
    "chars": 2483,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/network/PrettyPrinterDisplayType.java",
    "chars": 817,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/network/RequestBodyHelper.java",
    "chars": 2540,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/network/ResourceTypeHelper.java",
    "chars": 1841,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/network/ResponseBodyData.java",
    "chars": 471,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/network/ResponseBodyFileManager.java",
    "chars": 5957,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/network/ResponseHandler.java",
    "chars": 1391,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/network/ResponseHandlingInputStream.java",
    "chars": 7919,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/network/SimpleBinaryInspectorWebSocketFrame.java",
    "chars": 1052,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/network/SimpleTextInspectorWebSocketFrame.java",
    "chars": 818,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/protocol/ChromeDevtoolsDomain.java",
    "chars": 388,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/protocol/ChromeDevtoolsMethod.java",
    "chars": 402,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/protocol/module/BaseDatabaseDriver.java",
    "chars": 1809,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/protocol/module/CSS.java",
    "chars": 11613,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/protocol/module/Console.java",
    "chars": 3060,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/protocol/module/DOM.java",
    "chars": 18008,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/protocol/module/DOMStorage.java",
    "chars": 7574,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/protocol/module/Database.java",
    "chars": 12566,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/protocol/module/DatabaseConstants.java",
    "chars": 468,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/protocol/module/DatabaseDescriptor.java",
    "chars": 360,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/protocol/module/DatabaseDriver2.java",
    "chars": 586,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/protocol/module/Debugger.java",
    "chars": 1048,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/protocol/module/HeapProfiler.java",
    "chars": 1288,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/protocol/module/Inspector.java",
    "chars": 734,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/protocol/module/Network.java",
    "chars": 10893,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/protocol/module/Page.java",
    "chars": 10035,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/protocol/module/Profiler.java",
    "chars": 1602,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/protocol/module/Runtime.java",
    "chars": 19229,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/protocol/module/SimpleBooleanResult.java",
    "chars": 599,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  },
  {
    "path": "stetho/src/main/java/com/facebook/stetho/inspector/protocol/module/Worker.java",
    "chars": 760,
    "preview": "/*\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in"
  }
]

// ... and 121 more files (download for full content)

About this extraction

This page contains the full source code of the facebook/stetho GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 321 files (1.1 MB), approximately 274.0k tokens, and a symbol index with 2352 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!