diff --git a/.github/workflows/builds.yml b/.github/workflows/builds.yml deleted file mode 100644 index 2586cf3c6f..0000000000 --- a/.github/workflows/builds.yml +++ /dev/null @@ -1,59 +0,0 @@ -name: Build Check - -on: - schedule: - - cron: '0 12 * * *' - -jobs: - Verify: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Grant Permission - run: chmod +x ./mvnw - - uses: actions/setup-java@v4 - with: - distribution: 'corretto' - java-version: '11' - - name: Verify - run: ./mvnw -B -ntp clean verify -DskipTests -Dgpg.skip=true - - RunOnLinux: - runs-on: ubuntu-latest - needs: Verify - steps: - - uses: actions/checkout@v4 - - name: Grant Permission - run: chmod +x ./mvnw - - uses: actions/setup-java@v4 - with: - distribution: 'corretto' - java-version: '11' - - name: Run Tests - run: ./mvnw -B -ntp test - - RunOnMacOs: - runs-on: macos-latest - needs: Verify - steps: - - uses: actions/checkout@v4 - - name: Grant Permission - run: chmod +x ./mvnw - - uses: actions/setup-java@v4 - with: - distribution: 'corretto' - java-version: '11' - - name: Run Tests - run: ./mvnw -B -ntp test - - RunOnWindows: - runs-on: windows-latest - needs: Verify - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-java@v4 - with: - distribution: 'corretto' - java-version: '11' - - name: Run Tests - run: ./mvnw.cmd -B -ntp test diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml deleted file mode 100644 index 1f49d31122..0000000000 --- a/.github/workflows/maven.yml +++ /dev/null @@ -1,55 +0,0 @@ -# This workflow is designed to build PRs for AHC. Note that it does not actually publish AHC, just builds and test it. -# Docs: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven - -name: Build PR - -on: - push: - branches: - - main - pull_request: - - workflow_dispatch: - inputs: - name: - description: 'Github Actions' - required: true - default: 'Github Actions' - -jobs: - RunOnLinux: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Grant Permission - run: sudo chmod +x ./mvnw - - uses: actions/setup-java@v4 - with: - distribution: 'corretto' - java-version: '11' - - name: Run Tests - run: ./mvnw -B -ntp clean test - - RunOnMacOs: - runs-on: macos-latest - steps: - - uses: actions/checkout@v4 - - name: Grant Permission - run: sudo chmod +x ./mvnw - - uses: actions/setup-java@v4 - with: - distribution: 'corretto' - java-version: '11' - - name: Run Tests - run: ./mvnw -B -ntp clean test - - RunOnWindows: - runs-on: windows-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-java@v4 - with: - distribution: 'corretto' - java-version: '11' - - name: Run Tests - run: ./mvnw.cmd -B -ntp clean test diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index b175fa865c..0000000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,52 +0,0 @@ -name: Release - -on: - workflow_dispatch: - inputs: - name: - description: 'Github Actions - Release' - required: true - default: 'Github Actions - Release' - -jobs: - - Publish: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: Grant Permission - run: sudo chmod +x ./mvnw - - - uses: actions/setup-java@v4 - with: - distribution: 'corretto' - java-version: '11' - - - name: Remove old Maven Settings - run: rm -f /home/runner/.m2/settings.xml - - - name: Maven Settings - uses: s4u/maven-settings-action@v3.1.0 - with: - servers: | - [{ - "id": "ossrh", - "username": "${{ secrets.OSSRH_USERNAME }}", - "password": "${{ secrets.OSSRH_PASSWORD }}" - }] - - - name: Import GPG - uses: crazy-max/ghaction-import-gpg@v6.3.0 - with: - gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }} - passphrase: ${{ secrets.GPG_PASSPHRASE }} - - - name: Build - run: mvn -ntp -B clean verify install -DskipTests - - - name: Publish to Maven Central - env: - GPG_KEY_NAME: ${{ secrets.GPG_KEY_NAME }} - GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} - run: mvn -ntp -B deploy -DskipTests -Dgpg.keyname=${GPG_KEY_NAME} -Dgpg.passphrase=${GPG_PASSPHRASE} diff --git a/.gitignore b/.gitignore deleted file mode 100644 index d424b2597a..0000000000 --- a/.gitignore +++ /dev/null @@ -1,21 +0,0 @@ -*.class -*~ -.*.swp -.*.swo -.loadpath -.buildpath -.classpath -.project -.settings -.idea -*.iml -*.ipr -*.iws -nbproject -.DS_Store -target -test-output -MANIFEST.MF -work -atlassian-ide-plugin.xml -/bom/.flattened-pom.xml diff --git a/.mvn/jvm.config b/.mvn/jvm.config deleted file mode 100644 index 32599cefea..0000000000 --- a/.mvn/jvm.config +++ /dev/null @@ -1,10 +0,0 @@ ---add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED ---add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED ---add-exports jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED ---add-exports jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED ---add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED ---add-exports jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED ---add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED ---add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED ---add-opens jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED ---add-opens jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED diff --git a/.mvn/wrapper/maven-wrapper.jar b/.mvn/wrapper/maven-wrapper.jar deleted file mode 100644 index c1dd12f176..0000000000 Binary files a/.mvn/wrapper/maven-wrapper.jar and /dev/null differ diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties deleted file mode 100644 index 4a95a1367b..0000000000 --- a/.mvn/wrapper/maven-wrapper.properties +++ /dev/null @@ -1,18 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.6/apache-maven-3.9.6-bin.zip -wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar diff --git a/CHANGES.md b/CHANGES.md deleted file mode 100644 index d548766a4e..0000000000 --- a/CHANGES.md +++ /dev/null @@ -1,29 +0,0 @@ -## From 2.2 to 2.3 - -* New `isFilterInsecureCipherSuites` config to disable unsecure and weak ciphers filtering performed internally in Netty. - -## From 2.1 to 2.2 - -* New [Typesafe config](https://github.com/lightbend/config) extra module -* new `enableWebSocketCompression` config to enable per-message and per-frame WebSocket compression extension - -## From 2.0 to 2.1 - -* AHC 2.1 targets Netty 4.1. -* `org.asynchttpclient.HttpResponseHeaders` was [dropped](https://github.com/AsyncHttpClient/async-http-client/commit/f4786f3ac7699f8f8664e7c7db0b7097585a0786) in favor - of `io.netty.handler.codec.http.HttpHeaders`. -* `org.asynchttpclient.cookie.Cookie` was [dropped](https://github.com/AsyncHttpClient/async-http-client/commit/a6d659ea0cc11fa5131304d8a04a7ba89c7a66af) in favor - of `io.netty.handler.codec.http.cookie.Cookie` as AHC's cookie parsers were contributed to Netty. -* AHC now has a RFC6265 `CookieStore` that is enabled by default. Implementation can be changed in `AsyncHttpClientConfig`. -* `AsyncHttpClient` now exposes stats with `getClientStats`. -* `AsyncHandlerExtensions` was [dropped](https://github.com/AsyncHttpClient/async-http-client/commit/1972c9b9984d6d9f9faca6edd4f2159013205aea) in favor of default methods - in `AsyncHandler`. -* `WebSocket` and `WebSocketListener` methods were renamed to mention frames -* `AsyncHttpClientConfig` various changes: - * new `getCookieStore` now lets you configure a CookieStore (enabled by default) - * new `isAggregateWebSocketFrameFragments` now lets you disable WebSocket fragmented frames aggregation - * new `isUseLaxCookieEncoder` lets you loosen cookie chars validation - * `isAcceptAnyCertificate` was dropped, as it didn't do what its name stated - * new `isUseInsecureTrustManager` lets you use a permissive TrustManager, that would typically let you accept self-signed certificates - * new `isDisableHttpsEndpointIdentificationAlgorithm` disables setting `HTTPS` algorithm on the SSLEngines, typically disables SNI and HTTPS hostname verification - * new `isAggregateWebSocketFrameFragments` lets you disable fragmented WebSocket frames aggregation diff --git a/LICENSE.txt b/LICENSE.txt deleted file mode 100644 index 85a16d3d06..0000000000 --- a/LICENSE.txt +++ /dev/null @@ -1,13 +0,0 @@ - Copyright (c) 2014-2024 AsyncHttpClient Project. All rights reserved. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/LICENSES/LICENSE.zstd-jni.txt b/LICENSES/LICENSE.zstd-jni.txt deleted file mode 100644 index 66abb8ae78..0000000000 --- a/LICENSES/LICENSE.zstd-jni.txt +++ /dev/null @@ -1,26 +0,0 @@ -Zstd-jni: JNI bindings to Zstd Library - -Copyright (c) 2015-present, Luben Karavelov/ All rights reserved. - -BSD License - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, this - list of conditions and the following disclaimer in the documentation and/or - other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/README.md b/README.md deleted file mode 100644 index 0272134ed1..0000000000 --- a/README.md +++ /dev/null @@ -1,263 +0,0 @@ -# Async Http Client -[![Build](https://github.com/AsyncHttpClient/async-http-client/actions/workflows/builds.yml/badge.svg)](https://github.com/AsyncHttpClient/async-http-client/actions/workflows/builds.yml) -![Maven Central](https://img.shields.io/maven-central/v/org.asynchttpclient/async-http-client) - -Follow [@AsyncHttpClient](https://twitter.com/AsyncHttpClient) on Twitter. - -The AsyncHttpClient (AHC) library allows Java applications to easily execute HTTP requests and asynchronously process HTTP responses. -The library also supports the WebSocket Protocol. - -It's built on top of [Netty](https://github.com/netty/netty). It's compiled with Java 11. - -## Installation - -Binaries are deployed on Maven Central. -Add a dependency on the main AsyncHttpClient artifact: - -Maven: -```xml - - - org.asynchttpclient - async-http-client - 3.0.2 - - -``` - -Gradle: -```groovy -dependencies { - implementation 'org.asynchttpclient:async-http-client:3.0.2' -} -``` - -### Dsl - -Import the Dsl helpers to use convenient methods to bootstrap components: - -```java -import static org.asynchttpclient.Dsl.*; -``` - -### Client - -```java -import static org.asynchttpclient.Dsl.*; - -AsyncHttpClient asyncHttpClient=asyncHttpClient(); -``` - -AsyncHttpClient instances must be closed (call the `close` method) once you're done with them, typically when shutting down your application. -If you don't, you'll experience threads hanging and resource leaks. - -AsyncHttpClient instances are intended to be global resources that share the same lifecycle as the application. -Typically, AHC will usually underperform if you create a new client for each request, as it will create new threads and connection pools for each. -It's possible to create shared resources (EventLoop and Timer) beforehand and pass them to multiple client instances in the config. You'll then be responsible for closing -those shared resources. - -## Configuration - -Finally, you can also configure the AsyncHttpClient instance via its AsyncHttpClientConfig object: - -```java -import static org.asynchttpclient.Dsl.*; - -AsyncHttpClient c=asyncHttpClient(config().setProxyServer(proxyServer("127.0.0.1",38080))); -``` - -## HTTP - -### Sending Requests - -### Basics - -AHC provides 2 APIs for defining requests: bound and unbound. -`AsyncHttpClient` and Dsl` provide methods for standard HTTP methods (POST, PUT, etc) but you can also pass a custom one. - -```java -import org.asynchttpclient.*; - -// bound -Future whenResponse=asyncHttpClient.prepareGet("http://www.example.com/").execute(); - -// unbound - Request request=get("http://www.example.com/").build(); - Future whenResponse=asyncHttpClient.executeRequest(request); -``` - -#### Setting Request Body - -Use the `setBody` method to add a body to the request. - -This body can be of type: - -* `java.io.File` -* `byte[]` -* `List` -* `String` -* `java.nio.ByteBuffer` -* `java.io.InputStream` -* `Publisher` -* `org.asynchttpclient.request.body.generator.BodyGenerator` - -`BodyGenerator` is a generic abstraction that let you create request bodies on the fly. -Have a look at `FeedableBodyGenerator` if you're looking for a way to pass requests chunks on the fly. - -#### Multipart - -Use the `addBodyPart` method to add a multipart part to the request. - -This part can be of type: - -* `ByteArrayPart` -* `FilePart` -* `InputStreamPart` -* `StringPart` - -### Dealing with Responses - -#### Blocking on the Future - -`execute` methods return a `java.util.concurrent.Future`. You can simply block the calling thread to get the response. - -```java -Future whenResponse=asyncHttpClient.prepareGet("http://www.example.com/").execute(); - Response response=whenResponse.get(); -``` - -This is useful for debugging but you'll most likely hurt performance or create bugs when running such code on production. -The point of using a non blocking client is to *NOT BLOCK* the calling thread! - -### Setting callbacks on the ListenableFuture - -`execute` methods actually return a `org.asynchttpclient.ListenableFuture` similar to Guava's. -You can configure listeners to be notified of the Future's completion. - -```java - ListenableFuture whenResponse = ???; - Runnable callback = () - > { - try { - Response response = whenResponse.get(); - System.out.println(response); - } catch (InterruptedException | ExecutionException e) { - e.printStackTrace(); - } - }; - - java.util.concurrent.Executor executor = ???; - whenResponse.addListener(() - > ??? , executor); -``` - -If the `executor` parameter is null, callback will be executed in the IO thread. -You *MUST NEVER PERFORM BLOCKING* operations in there, typically sending another request and block on a future. - -#### Using custom AsyncHandlers - -`execute` methods can take an `org.asynchttpclient.AsyncHandler` to be notified on the different events, such as receiving the status, the headers and body chunks. -When you don't specify one, AHC will use a `org.asynchttpclient.AsyncCompletionHandler`; - -`AsyncHandler` methods can let you abort processing early (return `AsyncHandler.State.ABORT`) and can let you return a computation result from `onCompleted` that will be used -as the Future's result. -See `AsyncCompletionHandler` implementation as an example. - -The below sample just capture the response status and skips processing the response body chunks. - -Note that returning `ABORT` closes the underlying connection. - -```java -import static org.asynchttpclient.Dsl.*; - -import org.asynchttpclient.*; -import io.netty.handler.codec.http.HttpHeaders; - -Future whenStatusCode = asyncHttpClient.prepareGet("http://www.example.com/") - .execute(new AsyncHandler () { - private Integer status; - - @Override - public State onStatusReceived(HttpResponseStatus responseStatus) throws Exception { - status = responseStatus.getStatusCode(); - return State.ABORT; - } - - @Override - public State onHeadersReceived(HttpHeaders headers) throws Exception { - return State.ABORT; - } - - @Override - public State onBodyPartReceived(HttpResponseBodyPart bodyPart) throws Exception { - return State.ABORT; - } - - @Override - public Integer onCompleted() throws Exception{ - return status; - } - - @Override - public void onThrowable(Throwable t) { - t.printStackTrace(); - } - }); - - Integer statusCode = whenStatusCode.get(); -``` - -#### Using Continuations - -`ListenableFuture` has a `toCompletableFuture` method that returns a `CompletableFuture`. -Beware that canceling this `CompletableFuture` won't properly cancel the ongoing request. -There's a very good chance we'll return a `CompletionStage` instead in the next release. - -```java -CompletableFuture whenResponse=asyncHttpClient - .prepareGet("http://www.example.com/") - .execute() - .toCompletableFuture() - .exceptionally(t->{ /* Something wrong happened... */ }) - .thenApply(response->{ /* Do something with the Response */ return resp;}); - whenResponse.join(); // wait for completion -``` - -You may get the complete maven project for this simple demo -from [org.asynchttpclient.example](https://github.com/AsyncHttpClient/async-http-client/tree/master/example/src/main/java/org/asynchttpclient/example) - -## WebSocket - -Async Http Client also supports WebSocket. -You need to pass a `WebSocketUpgradeHandler` where you would register a `WebSocketListener`. - -```java -WebSocket websocket = c.prepareGet("ws://demos.kaazing.com/echo") - .execute(new WebSocketUpgradeHandler.Builder().addWebSocketListener( - new WebSocketListener() { - - @Override - public void onOpen(WebSocket websocket) { - websocket.sendTextFrame("...").sendTextFrame("..."); - } - - @Override - public void onClose(WebSocket websocket) { - // ... - } - - @Override - public void onTextFrame(String payload, boolean finalFragment, int rsv) { - System.out.println(payload); - } - - @Override - public void onError(Throwable t) { - t.printStackTrace(); - } - }).build()).get(); -``` - -## User Group - -Keep up to date on the library development by joining the Asynchronous HTTP Client discussion group - -[GitHub Discussions](https://github.com/AsyncHttpClient/async-http-client/discussions) diff --git a/apidocs/allclasses-frame.html b/apidocs/allclasses-frame.html new file mode 100644 index 0000000000..cb041ffc33 --- /dev/null +++ b/apidocs/allclasses-frame.html @@ -0,0 +1,300 @@ + + + + + + + +All Classes (Asynchronous Http Client 1.7.0-SNAPSHOT API) + + + + + + + + + + + +All Classes +
+ + + + + +
AbstractListenableFuture +
+ApacheAsyncHttpProvider +
+ApacheAsyncHttpProviderConfig +
+ApacheResponse +
+ApacheResponseBodyPart +
+ApacheResponseFuture +
+ApacheResponseHeaders +
+ApacheResponseStatus +
+AppendableBodyConsumer +
+AsyncCompletionHandler +
+AsyncCompletionHandlerBase +
+AsyncHandler +
+AsyncHandler.STATE +
+AsyncHttpClient +
+AsyncHttpClientConfig +
+AsyncHttpClientConfig.Builder +
+AsyncHttpClientConfigBean +
+AsyncHttpProvider +
+AsyncHttpProviderConfig +
+AsyncHttpProviderUtils +
+AuthenticatorUtils +
+Base64 +
+Body +
+BodyConsumer +
+BodyDeferringAsyncHandler +
+BodyDeferringAsyncHandler.BodyDeferringInputStream +
+BodyGenerator +
+ByteArrayBodyGenerator +
+ByteArrayPart +
+ByteArrayPartSource +
+ByteBufferBodyConsumer +
+CleanupChannelGroup +
+ConnectionsPool +
+ConsumerKey +
+Cookie +
+DateUtil +
+DateUtil.DateParseException +
+ExecutionList +
+FileBodyConsumer +
+FileBodyGenerator +
+FileBodyGenerator.FileBody +
+FilePart +
+FilePart +
+FilePartSource +
+FilterContext +
+FilterContext.FilterContextBuilder +
+FilterException +
+FluentCaseInsensitiveStringsMap +
+FluentStringsMap +
+HeaderMap +
+HttpContent +
+HttpResponseBodyPart +
+HttpResponseHeaders +
+HttpResponseStatus +
+InputStreamBodyGenerator +
+IOExceptionFilter +
+JDKAsyncHttpProvider +
+JDKAsyncHttpProviderConfig +
+JDKDelegateFuture +
+JDKFuture +
+JDKResponse +
+ListenableFuture +
+MaxRedirectException +
+MultipartBody +
+MultipartEncodingUtil +
+MultipartRequestEntity +
+NettyAsyncHttpProvider +
+NettyAsyncHttpProvider.OptimizedFileRegion +
+NettyAsyncHttpProvider.ThreadLocalBoolean +
+NettyAsyncHttpProviderConfig +
+NettyConnectionsPool +
+NettyResponse +
+NettyResponseFuture +
+NTLMEngine +
+NTLMEngineException +
+OAuthSignatureCalculator +
+OutputStreamBodyConsumer +
+Part +
+Part +
+PartBase +
+PartSource +
+PerRequestConfig +
+ProgressAsyncHandler +
+PropertiesBasedResumableProcessor +
+ProxyServer +
+ProxyServer.Protocol +
+ProxyUtils +
+RandomAccessBody +
+Realm +
+Realm.AuthScheme +
+Realm.RealmBuilder +
+Request +
+Request.EntityWriter +
+RequestBuilder +
+RequestBuilderBase +
+RequestEntity +
+RequestFilter +
+RequestToken +
+Response +
+Response.ResponseBuilder +
+ResponseBodyPart +
+ResponseBodyPart +
+ResponseFilter +
+ResponseHeaders +
+ResponseHeaders +
+ResponseStatus +
+ResponseStatus +
+ResumableAsyncHandler +
+ResumableAsyncHandler.ResumableProcessor +
+ResumableBodyConsumer +
+ResumableIOExceptionFilter +
+ResumableListener +
+ResumableRandomAccessFileListener +
+SignatureCalculator +
+SimpleAHCTransferListener +
+SimpleAsyncHttpClient +
+SimpleAsyncHttpClient.Builder +
+SimpleAsyncHttpClient.DerivedBuilder +
+SimpleAsyncHttpClient.ErrorDocumentBehaviour +
+SpnegoEngine +
+SpnegoTokenGenerator +
+SSLEngineFactory +
+SslUtils +
+StringPart +
+StringPart +
+ThreadSafeHMAC +
+ThrottleRequestFilter +
+ThrowableHandler +
+TransferCompletionHandler +
+TransferCompletionHandler.TransferAdapter +
+TransferListener +
+UTF8Codec +
+UTF8UrlEncoder +
+WebDavCompletionHandlerBase +
+WebDavResponse +
+
+ + + diff --git a/apidocs/allclasses-noframe.html b/apidocs/allclasses-noframe.html new file mode 100644 index 0000000000..bb2fd0caed --- /dev/null +++ b/apidocs/allclasses-noframe.html @@ -0,0 +1,300 @@ + + + + + + + +All Classes (Asynchronous Http Client 1.7.0-SNAPSHOT API) + + + + + + + + + + + +All Classes +
+ + + + + +
AbstractListenableFuture +
+ApacheAsyncHttpProvider +
+ApacheAsyncHttpProviderConfig +
+ApacheResponse +
+ApacheResponseBodyPart +
+ApacheResponseFuture +
+ApacheResponseHeaders +
+ApacheResponseStatus +
+AppendableBodyConsumer +
+AsyncCompletionHandler +
+AsyncCompletionHandlerBase +
+AsyncHandler +
+AsyncHandler.STATE +
+AsyncHttpClient +
+AsyncHttpClientConfig +
+AsyncHttpClientConfig.Builder +
+AsyncHttpClientConfigBean +
+AsyncHttpProvider +
+AsyncHttpProviderConfig +
+AsyncHttpProviderUtils +
+AuthenticatorUtils +
+Base64 +
+Body +
+BodyConsumer +
+BodyDeferringAsyncHandler +
+BodyDeferringAsyncHandler.BodyDeferringInputStream +
+BodyGenerator +
+ByteArrayBodyGenerator +
+ByteArrayPart +
+ByteArrayPartSource +
+ByteBufferBodyConsumer +
+CleanupChannelGroup +
+ConnectionsPool +
+ConsumerKey +
+Cookie +
+DateUtil +
+DateUtil.DateParseException +
+ExecutionList +
+FileBodyConsumer +
+FileBodyGenerator +
+FileBodyGenerator.FileBody +
+FilePart +
+FilePart +
+FilePartSource +
+FilterContext +
+FilterContext.FilterContextBuilder +
+FilterException +
+FluentCaseInsensitiveStringsMap +
+FluentStringsMap +
+HeaderMap +
+HttpContent +
+HttpResponseBodyPart +
+HttpResponseHeaders +
+HttpResponseStatus +
+InputStreamBodyGenerator +
+IOExceptionFilter +
+JDKAsyncHttpProvider +
+JDKAsyncHttpProviderConfig +
+JDKDelegateFuture +
+JDKFuture +
+JDKResponse +
+ListenableFuture +
+MaxRedirectException +
+MultipartBody +
+MultipartEncodingUtil +
+MultipartRequestEntity +
+NettyAsyncHttpProvider +
+NettyAsyncHttpProvider.OptimizedFileRegion +
+NettyAsyncHttpProvider.ThreadLocalBoolean +
+NettyAsyncHttpProviderConfig +
+NettyConnectionsPool +
+NettyResponse +
+NettyResponseFuture +
+NTLMEngine +
+NTLMEngineException +
+OAuthSignatureCalculator +
+OutputStreamBodyConsumer +
+Part +
+Part +
+PartBase +
+PartSource +
+PerRequestConfig +
+ProgressAsyncHandler +
+PropertiesBasedResumableProcessor +
+ProxyServer +
+ProxyServer.Protocol +
+ProxyUtils +
+RandomAccessBody +
+Realm +
+Realm.AuthScheme +
+Realm.RealmBuilder +
+Request +
+Request.EntityWriter +
+RequestBuilder +
+RequestBuilderBase +
+RequestEntity +
+RequestFilter +
+RequestToken +
+Response +
+Response.ResponseBuilder +
+ResponseBodyPart +
+ResponseBodyPart +
+ResponseFilter +
+ResponseHeaders +
+ResponseHeaders +
+ResponseStatus +
+ResponseStatus +
+ResumableAsyncHandler +
+ResumableAsyncHandler.ResumableProcessor +
+ResumableBodyConsumer +
+ResumableIOExceptionFilter +
+ResumableListener +
+ResumableRandomAccessFileListener +
+SignatureCalculator +
+SimpleAHCTransferListener +
+SimpleAsyncHttpClient +
+SimpleAsyncHttpClient.Builder +
+SimpleAsyncHttpClient.DerivedBuilder +
+SimpleAsyncHttpClient.ErrorDocumentBehaviour +
+SpnegoEngine +
+SpnegoTokenGenerator +
+SSLEngineFactory +
+SslUtils +
+StringPart +
+StringPart +
+ThreadSafeHMAC +
+ThrottleRequestFilter +
+ThrowableHandler +
+TransferCompletionHandler +
+TransferCompletionHandler.TransferAdapter +
+TransferListener +
+UTF8Codec +
+UTF8UrlEncoder +
+WebDavCompletionHandlerBase +
+WebDavResponse +
+
+ + + diff --git a/apidocs/assets/android-developer-core.css b/apidocs/assets/android-developer-core.css new file mode 100644 index 0000000000..06c5b3eb07 --- /dev/null +++ b/apidocs/assets/android-developer-core.css @@ -0,0 +1,1198 @@ +/* file: android-developer-core.css + author: smain + date: september 2008 + info: core developer styles (developer.android.com) +*/ + + +/* RESET STYLES */ + +html,body,div,h1,h2,h3,h4,h5,h6,p,img, +dl,dt,dd,ol,ul,li,table,caption,tbody, +tfoot,thead,tr,th,td,form,fieldset, +embed,object,applet { + margin: 0; + padding: 0; + border: 0; +} + +/* BASICS */ + +html, body { + overflow:hidden; /* keeps scrollbar off IE */ + background-color:#fff; +} + +body { + font-family:arial,sans-serif; + color:#000; + font-size:13px; + color:#333; + background-image:url(images/bg_fade.jpg); + background-repeat:repeat-x; +} + +a, a code { + color:#006699; +} + +a:active, +a:active code { + color:#f00; +} + +a:visited, +a:visited code { + color:#006699; +} + +input, select, +textarea, option, label { + font-family:inherit; + font-size:inherit; + padding:0; + margin:0; + vertical-align:middle; +} + +option { + padding:0 4px; +} + +p { + padding:0; + margin:0 0 1em; +} + +code, pre { + color:#007000; + font-family:monospace; + line-height:1em; +} + +var { + color:#007000; + font-style:italic; +} + +pre { + border:1px solid #ccc; + background-color:#fafafa; + padding:10px; + margin:0 0 1em 1em; + overflow:auto; + line-height:inherit; /* fixes vertical scrolling in webkit */ +} + +h1,h2,h3,h4,h5 { + margin:1em 0; + padding:0; +} + +p,ul,ol,dl,dd,dt,li { + line-height:1.3em; +} + +ul,ol { + margin:0 0 .8em; + padding:0 0 0 2em; +} + +li { + padding:0 0 .5em; +} + +dl { + margin:0 0 1em 0; + padding:0; +} + +dt { + margin:0; + padding:0; +} + +dd { + margin:0 0 1em; + padding:0 0 0 2em; +} + +li p { + margin:.5em 0 0; +} + +dd p { + margin:1em 0 0; +} + +li pre, li table, li img { + margin:.5em 0 0 1em; +} + +dd pre, +#jd-content dd table, +#jd-content dd img { + margin:1em 0 0 1em; +} + +li ul, +li ol, +dd ul, +dd ol { + margin:0; + padding: 0 0 0 2em; +} + +li li, +dd li { + margin:0; + padding:.5em 0 0; +} + +dl dl, +ol dl, +ul dl { + margin:0 0 1em; + padding:0; +} + +table { + font-size:1em; + margin:0 0 1em; + padding:0; + border-collapse:collapse; + border-width:0; + empty-cells:show; +} + +td,th { + border:1px solid #ccc; + padding:6px 12px; + text-align:left; + vertical-align:top; + background-color:inherit; +} + +th { + background-color:#dee8f1; +} + +td > p:last-child { + margin:0; +} + +hr.blue { + background-color:#DDF0F2; + border:none; + height:5px; + margin:20px 0 10px; +} + +blockquote { + margin: 0 0 1em 1em; + padding: 0 4em 0 1em; + border-left:2px solid #eee; +} +/* LAYOUT */ + +#body-content { + /* "Preliminary" watermark for preview releases and interim builds. + background:transparent url(images/preliminary.png) repeat scroll 0 0; */ + margin:0; + position:relative; + width:100%; +} + +#header { + height: 44px; + position:relative; + z-index:100; + min-width:675px; /* min width for the tabs, before they wrap */ + padding:0 10px; + border-bottom:3px solid #94b922; +} + +#headerLeft{ + position:absolute; + padding: 10px 0 0; + left:8px; + bottom:3px; +} + +#headerRight { + position:absolute; + right:0; + bottom:3px; + padding:0; + text-align:right; +} + +#masthead-title { + font-size:28px; + color: #2f74ae; +} + +/* Tabs in the header */ + +#header ul { + list-style: none; + margin: 7px 0 0; + padding: 0; + height: 29px; +} + +#header li { + float: left; + margin: 0px 2px 0px 0px; + padding:0; +} + +#header li a { + text-decoration: none; + display: block; + background-image: url(images/bg_images_sprite.png); + background-position: 0 -58px; + background-repeat: no-repeat; + color: #666; + font-size: 13px; + font-weight: bold; + width: 94px; + height: 29px; + text-align: center; + margin: 0px; +} + +#header li a:hover { + background-image: url(images/bg_images_sprite.png); + background-position: 0 -29px; + background-repeat: no-repeat; +} + +#header li a span { + position:relative; + top:7px; +} + +#header li a span+span { + display:none; +} + +/* tab highlighting */ + +.home #home-link a, +.guide #guide-link a, +.reference #reference-link a, +.sdk #sdk-link a, +.resources #resources-link a, +.videos #videos-link a { + background-image: url(images/bg_images_sprite.png); + background-position: 0 0; + background-repeat: no-repeat; + color: #fff; + font-weight: bold; + cursor:default; +} + +.home #home-link a:hover, +.guide #guide-link a:hover, +.reference #reference-link a:hover, +.sdk #sdk-link a:hover, +.resources #resources-link a:hover, +.videos #videos-link a:hover { + background-image: url(images/bg_images_sprite.png); + background-position: 0 0; +} + +#headerLinks { + margin:10px 10px 0 0; + height:13px; + font-size: 11px; + vertical-align: top; +} + +#headerLinks a { + color: #7FA9B5; +} + +#headerLinks img { + vertical-align:middle; +} + +#language { + margin:0 10px 0 4px; +} + +#search { + margin:8px 10px 0 0; +} + +/* MAIN BODY */ + +#mainBodyFluid { + margin: 20px 10px; + color:#333; +} + +#mainBodyFixed { + margin: 20px 10px; + color: #333; + width:930px; + position:relative; +} + +#mainBodyFixed h3, +#mainBodyFluid h3 { + color:#336666; + font-size:1.25em; + margin: 0em 0em 0em 0em; + padding-bottom:.5em; +} + +#mainBodyFixed h2, +#mainBodyFluid h2 { + color:#336666; + font-size:1.25em; + margin: 0; + padding-bottom:.5em; +} + +#mainBodyFixed h1, +#mainBodyFluid h1 { + color:#435A6E; + font-size:1.7em; + margin: 1em 0; +} + +#mainBodyFixed .green, +#mainBodyFluid .green, +#jd-content .green { + color:#7BB026; + background-color:none; +} + +#mainBodyLeft { + float: left; + width: 600px; + margin-right: 20px; + color: #333; + position:relative; +} + +div.indent { + margin-left: 40px; + margin-right: 70px; +} + +#mainBodyLeft p { + color: #333; + font-size: 13px; +} + +#mainBodyLeft p.blue { + color: #669999; +} + +#mainBodyLeft #communityDiv { + float: left; + background-image:url(images/bg_community_leftDiv.jpg); + background-repeat: no-repeat; + width: 581px; + height: 347px; + padding: 20px 0px 0px 20px; +} + +#mainBodyRight { + float: left; + width: 300px; + color: #333; +} + +#mainBodyRight p { + padding-right: 50px; + color: #333; +} + +#mainBodyRight table { + width: 100%; +} + +#mainBodyRight td { + border:0px solid #666; + padding:0px 5px; + text-align:left; +} + +#mainBodyRight td p { + margin:0 0 1em 0; +} + +#mainBodyRight .blueBorderBox { + border:5px solid #ddf0f2; + padding:18px 18px 18px 18px; + text-align:left; +} + +#mainBodyFixed .seperator { + background-image:url(images/hr_gray_side.jpg); + background-repeat:no-repeat; + width: 100%; + float: left; + clear: both; +} + +#mainBodyBottom { + float: left; + width: 100%; + clear:both; + color: #333; +} + +#mainBodyBottom .seperator { + background-image:url(images/hr_gray_main.jpg); + background-repeat:no-repeat; + width: 100%; + float: left; + clear: both; +} + +/* FOOTER */ + +#footer { + float: left; + width:90%; + margin: 20px; + color: #aaa; + font-size: 11px; +} + +#footer a { + color: #aaa; + font-size: 11px; +} + +#footer a:hover { + text-decoration: underline; + color:#aaa; +} + +#footerlinks { + margin-top:2px; +} + +#footerlinks a, +#footerlinks a:visited { + color:#006699; +} + +/* SEARCH FILTER */ + +#search_autocomplete { + color:#aaa; +} + +#search-button { + display:inline; +} + +#search_filtered_div { + position:absolute; + margin-top:-1px; + z-index:101; + border:1px solid #BCCDF0; + background-color:#fff; +} + +#search_filtered { + min-width:100%; +} +#search_filtered td{ + background-color:#fff; + border-bottom: 1px solid #669999; + line-height:1.5em; +} + +#search_filtered .jd-selected { + background-color: #94b922; + cursor:pointer; +} +#search_filtered .jd-selected, +#search_filtered .jd-selected a { + color:#fff; +} + +.no-display { + display: none; +} + +.jd-autocomplete { + font-family: Arial, sans-serif; + padding-left: 6px; + padding-right: 6px; + padding-top: 1px; + padding-bottom: 1px; + font-size: 0.81em; + border: none; + margin: 0; + line-height: 1.05em; +} + +.show-row { + display: table-row; +} +.hide-row { + display: hidden; +} + +/* SEARCH */ + +/* restrict global search form width */ +#searchForm { + width:350px; +} + +#searchTxt { + width:200px; +} + +/* disable twiddle and size selectors for left column */ +#leftSearchControl div { + width: 100%; +} + +#leftSearchControl .gsc-twiddle { + background-image : none; +} + +#leftSearchControl td, #searchForm td { + border: 0px solid #000; +} + +#leftSearchControl .gsc-resultsHeader .gsc-title { + padding-left : 0px; + font-weight : bold; + font-size : 13px; + color:#006699; + display : none; +} + +#leftSearchControl .gsc-resultsHeader div.gsc-results-selector { + display : none; +} + +#leftSearchControl .gsc-resultsRoot { + padding-top : 6px; +} + +#leftSearchControl div.gs-visibleUrl-long { + display : block; + color:#006699; +} + +.gsc-webResult div.gs-visibleUrl-short, +table.gsc-branding, +.gsc-clear-button { + display : none; +} + +.gsc-cursor-box .gsc-cursor div.gsc-cursor-page, +.gsc-cursor-box .gsc-trailing-more-results a.gsc-trailing-more-results, +#leftSearchControl a, +#leftSearchControl a b { + color:#006699; +} + +.gsc-resultsHeader { + display: none; +} + +/* Disable built in search forms */ +.gsc-control form.gsc-search-box { + display : none; +} +table.gsc-search-box { + margin:6px 0 0 0; + border-collapse:collapse; +} + +td.gsc-input { + padding:0 2px; + width:100%; + vertical-align:middle; +} + +input.gsc-input { + border:1px solid #BCCDF0; + width:99%; + padding-left:2px; + font-size:.95em; +} + +td.gsc-search-button { + text-align: right; + padding:0; + vertical-align:top; +} + +#search-button { + margin:0 0 0 2px; + font-size:11px; +} + +/* search result tabs */ + +#doc-content .gsc-control { + position:relative; +} + +#doc-content .gsc-tabsArea { + position:relative; + white-space:nowrap; +} + +#doc-content .gsc-tabHeader { + padding: 3px 6px; + position:relative; +} + +#doc-content .gsc-tabHeader.gsc-tabhActive { + border-top: 2px solid #94B922; +} + +#doc-content h2#searchTitle { + padding:0; +} + +#doc-content .gsc-resultsbox-visible { + padding:1em 0 0 6px; +} + +/* CAROUSEL */ + +#homeMiddle { + padding: 0px 0px 0px 0px; + float: left; + width: 584px; + height: 627px; + position:relative; +} + +#topAnnouncement { + background:url(images/home/bg_home_announcement.png) no-repeat 0 0; +} + +#homeTitle { + padding:15px 15px 0; + height:30px; +} + +#homeTitle h2 { + padding:0; +} + +#announcement-block { + padding:0 15px 0; + overflow:hidden; + background: url(images/hr_gray_side.jpg) no-repeat 15px 0; + zoom:1; +} + +#announcement-block>* { + padding:15px 0 0; +} + +#announcement-block img { + float:left; + margin:0 30px 0 0; +} + +#announcement { + float:left; + margin:0; +} + +#carousel { + background:url(images/home/bg_home_carousel.png) no-repeat 0 0; + position:relative; + height:400px; +} + +#carouselMain { + background: url(images/home/bg_home_carousel_board.png) 0 0 no-repeat; + height:auto; + padding: 25px 21px 0; + overflow:hidden; + position:relative; + zoom:1; /*IE6*/ +} + +#carouselMain img { + margin:0; +} + +#carouselMain .bulletinDesc h3 { + margin:0; + padding:0; +} + +#carouselMain .bulletinDesc p { + margin:0; + padding:0.7em 0 0; +} + +#carouselWheel { + background: url(images/home/bg_home_carousel_wheel.png) 0 0 no-repeat; + padding-top:40px; + height:150px; +} + +.clearer { clear:both; } + +a#arrow-left, a#arrow-right { + float:left; + width:42px; + height:42px; + background-image:url(images/home/carousel_buttons_sprite.png); + background-repeat:no-repeat; +} +a#arrow-left { + margin:35px 3px 0 10px; +} +a#arrow-right { + margin:35px 10px 0 0; +} +a.arrow-left-off, +a#arrow-left.arrow-left-off:hover { + background-position:0 0; +} +a.arrow-right-off, +a#arrow-right.arrow-right-off:hover { + background-position:-42px 0; +} +a#arrow-left:hover { + background-position:0 -42px; +} +a#arrow-right:hover { + background-position:-42px -42px; +} +a.arrow-left-on { + background-position:0 0; +} +a.arrow-right-on { + background-position:-42px 0; +} +a.arrow-right-off, +a.arrow-left-off { + cursor:default; +} + +.app-list-container { + margin:0 20px; + position:relative; + width:100%; +} + +div#list-clip { + height:110px; + width:438px; + overflow:hidden; + position:relative; + float:left; +} + +div#app-list { + left:0; + z-index:1; + position:absolute; + margin:11px 0 0; + _margin-top:13px; + width:1000%; +} + +#app-list a { + display:block; + float:left; + height:90px; + width:90px; + margin:0 24px 0; + padding:3px; + background:#99cccc; + -webkit-border-radius:7px; + -moz-border-radius:7px; + border-radius:7px; + text-decoration:none; + text-align:center; + font-size:11px; + line-height:11px; +} + +#app-list a span { + position:relative; + top:-4px; +} + +#app-list img { + width:90px; + height:70px; + margin:0; +} + +#app-list a.selected, +#app-list a:active.selected, +#app-list a:hover.selected { + background:#A4C639; + color:#fff; + cursor:default; + text-decoration:none; +} + +#app-list a:hover, +#app-list a:active { + background:#ff9900; +} + +#app-list a:hover span, +#app-list a:active span { + text-decoration:underline; +} + +#droid-name { + padding-top:.5em; + color:#666; + padding-bottom:.25em; +} + +/*IE6*/ +* html #app-list a { zoom: 1; margin:0 24px 0 15px;} + +* html #list-clip { + width:430px !important; +} + +/*carousel bulletin layouts*/ +/*460px width*/ +/*185px height*/ +.img-left { + float:left; + width:230px; + overflow:hidden; + padding:8px 0 8px 8px; +} +.desc-right { + float:left; + width:270px; + padding:10px; +} +.img-right { + float:right; + width:220px; + overflow:hidden; + padding:8px 8px 8px 0; +} +.desc-left { + float:right; + width:280px; + padding:10px; + text-align:right; +} +.img-top { + padding:20px 20px 0; +} +.desc-bottom { + padding:10px; +} + + +/* VIDEO PAGE */ + +#mainBodyLeft.videoPlayer { + width:570px; +} + +#mainBodyRight.videoPlayer { + width:330px; +} + +/* player */ + +#videoPlayerBox { + background-color: #DAF3FC; + border-radius:7px; + -moz-border-radius:7px; + -webkit-border-radius:7px; + width:530px; + padding:20px; + border:1px solid #d3ecf5; + box-shadow:2px 3px 1px #eee; + -moz-box-shadow:2px 3px 1px #eee; + -webkit-box-shadow:2px 3px 1px #eee; +} + +#videoBorder { + background-color: #FFF; + min-height:399px; + height:auto !important; + border:1px solid #ccdada; + border-radius:7px 7px 0 0; + -moz-border-radius:7px 7px 0 0; + -webkit-border-top-left-radius:7px; + -webkit-border-top-right-radius:7px; +} + +#videoPlayerTitle { + width:500px; + padding:15px 15px 0; +} + +#videoPlayerTitle h2 { + font-weight:bold; + font-size:1.2em; + color:#336666; + margin:0; + padding:0; +} + +#objectWrapper { + padding:15px 15px; + height:334px; + width:500px; +} + +/* playlist tabs */ + +ul#videoTabs { + list-style-type:none; + padding:0; + clear:both; + margin:0; + padding: 20px 0 0 15px; + zoom:1; /* IE7/8, otherwise top-padding is double */ +} + +ul#videoTabs li { + display:inline; + padding:0; + margin:0 3px 0 0; + line-height:2em; +} + +ul#videoTabs li a { + border-radius:7px 7px 0 0; + -moz-border-radius:7px 7px 0 0; + -webkit-border-top-left-radius:7px; + -webkit-border-top-right-radius:7px; + background:#95c0d0; + color:#fff; + text-decoration:none; + padding:.45em 1.5em; + font-weight:bold; +} + +ul#videoTabs li.selected a { + font-weight:bold; + text-decoration:none; + color:#555; + background:#daf3fc; + border-bottom:1px solid #daf3fc; +} + +ul#videoTabs li:hover a { + background:#85acba; +} + +ul#videoTabs li.selected:hover a { + background:#daf3fc; +} + +/* playlists */ + +#videos { + background:#daf3fc; + margin-bottom:1.5em; + padding:15px; + border-radius:5px; + -moz-border-radius:5px; + -webkit-border-radius:5px; + box-shadow:2px 3px 1px #eee; + -moz-box-shadow:2px 3px 1px #eee; + -webkit-box-shadow:2px 3px 1px #eee; +} + +#videos div { + display:none; +} + +#videos div.selected { + display:block; +} + +ul.videoPreviews { + list-style:none; + padding:0; + margin:0; + zoom:1; /* IE, otherwise, layout doesn't update when showing 'more' */ +} + +ul.videoPreviews li { + margin:0 0 5px; + padding:0; + overflow:hidden; + position:relative; +} + +#mainBodyFixed ul.videoPreviews h3 { + font-size: 12px; + margin:0 0 1em 130px; + padding:0; + font-weight:bold; + color:inherit; +} + +ul.videoPreviews a { + margin:1px; + padding:10px; + text-decoration:none; + height:90px; + display:block; + border-radius:5px; + -moz-border-radius:5px; + -webkit-border-radius:5px; + background-color:transparent; +} + +ul.videoPreviews a:hover { + background-color:#FFF; + border:none; /* IE8, otherwise, bg doesn't work */ +} + +ul.videoPreviews a.selected { + background-color: #FF9900; +} + +ul.videoPreviews img { + float:left; + clear:left; + margin:0; +} + +ul.videoPreviews h3 { + font-size:12px; + font-weight:bold; + text-decoration:none; + margin:0 0 1em 130px; + padding:0; +} + +ul.videoPreviews p { + font-size: 12px; + text-decoration:none; + margin:0 0 1.2em 130px; +} + +ul.videoPreviews p.full { + display:none; +} + +ul.videoPreviews span.more { + padding:0 0 0 12px; + background:url(images/arrow_bluelink_down.png) 0 2px no-repeat; +} + +ul.videoPreviews span.less { + padding:0 0 0 12px; + background:url(images/arrow_bluelink_up.png) 0 2px no-repeat; + display:none; +} + +ul.videoPreviews p.toggle { + position:absolute; + margin:0; + margin-top:-23px; /* instead of bottom:23px, because IE won't do it correctly */ + left:140px; +} + +ul.videoPreviews p.toggle a { + height:auto; + margin:0; + padding:0; + zoom:1; /* IE6, otherwise the margin considers the img on redraws */ +} + +ul.videoPreviews p.toggle a:hover { + text-decoration:underline; + background:transparent; /* IE6, otherwise it inherits white */ +} + +/* featured videos */ + +#mainBodyRight h2 { + padding:0 0 5px; +} + +#mainBodyRight ul.videoPreviews { + margin:10px 0 0; +} + +#mainBodyRight ul.videoPreviews li { + font-size:11px; + line-height:13px; + margin:0 0 5px; + padding:0; +} + +#mainBodyRight ul.videoPreviews h3 { + padding:0; + margin:0; +} + +#mainBodyRight ul.videoPreviews a { + text-decoration:none; + height:108px; + border:1px solid #FFF; +} + +#mainBodyRight ul.videoPreviews a:hover { + border:1px solid #CCDADA; +} + +#mainBodyRight ul.videoPreviews a.selected { + border:1px solid #FFF; +} + +#mainBodyRight ul.videoPreviews p { + line-height:1.2em; + padding:0; + margin:4px 0 0 130px; +} + +#mainBodyRight ul.videoPreviews img { + margin-top:5px; +} + +/* Pretty printing styles. Used with prettify.js. */ + +.str { color: #080; } +.kwd { color: #008; } +.com { color: #800; } +.typ { color: #606; } +.lit { color: #066; } +.pun { color: #660; } +.pln { color: #000; } +dl.tag-list dt code, +.tag { color: #008; } +dl.atn-list dt code, +.atn { color: #828; } +.atv { color: #080; } +.dec { color: #606; } + +@media print { + .str { color: #060; } + .kwd { color: #006; font-weight: bold; } + .com { color: #600; font-style: italic; } + .typ { color: #404; font-weight: bold; } + .lit { color: #044; } + .pun { color: #440; } + .pln { color: #000; } + .tag { color: #006; font-weight: bold; } + .atn { color: #404; } + .atv { color: #060; } +} diff --git a/apidocs/assets/android-developer-docs-devguide.css b/apidocs/assets/android-developer-docs-devguide.css new file mode 100644 index 0000000000..d8bd3b3474 --- /dev/null +++ b/apidocs/assets/android-developer-docs-devguide.css @@ -0,0 +1,19 @@ + +@import url("android-developer-docs.css"); + +/* Page title */ + +#jd-header h1 { + padding: 8px 0 0 0; +} + +/* Page content container */ + +#jd-header table { +margin: 0 0 1em 1em; +} + +#jd-content table table, +#jd-content table img { + margin:1em 0; +} \ No newline at end of file diff --git a/apidocs/assets/android-developer-docs.css b/apidocs/assets/android-developer-docs.css new file mode 100644 index 0000000000..9cc06fe948 --- /dev/null +++ b/apidocs/assets/android-developer-docs.css @@ -0,0 +1,1297 @@ +/* file: android-developer-docs.css + author: smain + date: september 2008 + info: developer doc styles (developer.android.com) +*/ + +@import url("android-developer-core.css"); + +#title { + border-bottom: 4px solid #ccc; + display:none; +} + +#title h1 { + color:#336666; + margin:0; + padding: 5px 10px; + font-size: 1em; + line-height: 15px; +} + +#title h1 .small{ + color:#000; + margin:0; + font-size: 13px; + padding:0 0 0 15px; +} + +/* SIDE NAVIGATION */ + +#side-nav { + padding:0 6px 0 0; + background-color: #fff; + font-size:12px; +} + +#side-nav.not-resizable { + background:url('images/sidenav-rule.png') no-repeat 243px 0; +} + +#resize-packages-nav { +/* keeps the resize handle below the h-scroll handle */ + height:270px; + overflow:hidden; + max-height:100%; +} + +#packages-nav { + height:270px; + max-height:inherit; + position:relative; + overflow:auto; +} + +#classes-nav, +#devdoc-nav { + overflow:auto; + position:relative; +} + +#side-nav ul { + list-style: none; + margin: 0; + padding:5px 0; +} + +#side-nav ul ul { + margin: .35em 0 0 0; + padding: 0; +} + +#side-nav li { + padding:0; + line-height:16px; + white-space:nowrap; + zoom:1; +} + +#side-nav li h2 { + font-size:12px; + font-weight: bold; + margin:.5em 0 0 0; + padding: 3px 0 1px 9px; +} + +#side-nav li a { + text-decoration:none; + padding: 0 0 0 18px; + zoom:1; +} + +#side-nav li a span+span { + display:none; +} + +#side-nav li a:hover { + text-decoration:underline; +} + +#side-nav li a+a { + padding: 0; +} +/*second level (nested) list*/ +#side-nav li li li a { + padding: 0 0 0 28px; +} +/*third level (nested) list*/ +#side-nav li li li li a { + padding: 0 0 0 38px; +} + +#side-nav .selected { + background-color: #435a6e; + color: #fff; + font-weight:bold; +} + +#side-nav .selected a { + color: #fff; + text-decoration:none; +} + +#side-nav strong { + display:block; +} + +#side-nav .toggle-list .toggle-img { + margin:0; + padding:0; + position:absolute; + top:0; + left:0; + height:16px; + width:15px; + outline-style:none; +} +/* second-level toggle */ +#side-nav .toggle-list .toggle-list .toggle-img { + left:10px; +} + +#side-nav .closed .toggle-img, +#side-nav .open .closed .toggle-img { + background:url('images/triangle-closed-small.png') 7px 4px no-repeat; +} +#side-nav .open .toggle-img { + background:url('images/triangle-opened-small.png') 7px 4px no-repeat; +} + +#side-nav .toggle-list { + position:relative; +} + +#side-nav .toggle-list ul { + margin:0; + display:none; +} + +#side-nav .toggle-list div { + display:block; +} + +#index-links .selected { + background-color: #fff; + color: #000; + font-weight:normal; + text-decoration:none; +} + +#index-links { + padding:7px 0 4px 10px; +} + +/* nav tree */ + +#nav-tree ul { + padding:5px 0 1.5em; +} + +#side-nav #nav-tree ul li a, +#side-nav #nav-tree ul li span.no-children { + padding: 0 0 0 0; + margin: 0; +} + +#nav-tree .plus { + margin: 0 3px 0 0; +} + +#nav-tree ul ul { + list-style: none; + margin: 0; + padding: 0 0 0 0; +} + +#nav-tree ul li { + margin: 0; + padding: 0 0 0 0; + white-space: nowrap; +} + +#nav-tree .children_ul { + margin:0; +} + +#nav-tree a.nolink { + color: black; + text-decoration: none; +} + +#nav-tree span.label { + width: 100%; +} + +#nav-tree { + overflow-x: auto; + overflow-y: scroll; +} + +#nav-swap { + font-size:10px; + line-height:10px; + margin-left:1em; + text-decoration:none; + display:block; + position:absolute; + bottom:2px; + left:0px; +} + +#tree-link { + +} + +/* DOCUMENT BODY */ + +#doc-content { + overflow:auto; +} + +#jd-header { + background-color: #E2E2E2; + padding: 7px 15px; +} + +#jd-header h1 { + margin: 0 0 10px; + font-size:1.7em; +} + +#jd-header .crumb { + font-size:.9em; + line-height:1em; + color:#777; +} + +#jd-header .crumb a, +#jd-header .crumb a:visited { + text-decoration:none; + color:#777; +} + +#jd-header .crumb a:hover { + text-decoration:underline; +} + +#jd-header table { + margin:0; + padding:0; +} + +#jd-header td { + border:none; + padding:0; + vertical-align:top; +} + +#jd-header.guide-header { + background-color:#fff; + color:#435a6e; + height:50px; +} + +#jd-descr { + position:relative; +} + +/* summary tables for reference pages */ +.jd-sumtable { + margin: .5em 1em 1em 1em; + width:95%; /* consistent table widths; within IE's quirks */ + font-size:.9em; +} + +.jd-sumtable a { + text-decoration:none; +} + +.jd-sumtable a:hover { + text-decoration:underline; +} + +/* the link inside a sumtable for "Show All/Hide All" */ +.toggle-all { + display:block; + float:right; + font-weight:normal; + font-size:0.9em; +} + +/* adjustments for in/direct subclasses tables */ +.jd-sumtable-subclasses { + margin: 1em 0 0 0; + max-width:968px; +} + +/* extra space between end of method name and open-paren */ +.sympad { + margin-right: 2px; +} + +/* right alignment for the return type in sumtable */ +.jd-sumtable .jd-typecol { + text-align:right; +} + +/* adjustments for the expando table-in-table */ +.jd-sumtable-expando { + margin:.5em 0; + padding:0; +} + +/* a div that holds a short description */ +.jd-descrdiv { + padding:3px 1em 0 1em; + margin:0; + border:0; +} + +/* page-top-right container for reference pages (holds +links to summary tables) */ +#api-info-block { + font-size:.8em; + padding:6px 10px; + font-weight:normal; + float:right; + text-align:right; + color:#999; + max-width:70%; +} + +#api-level-toggle { + padding:0 0px; + font-size:11px; + margin:3px 10px 0 0; +} + +#api-level-toggle label.disabled { + color:#999; +} + +div.api-level { + font-size:.8em; + font-weight:normal; + color:#999; + float:right; + padding:0 7px 0; + margin-top:-25px; +} + +#api-info-block div.api-level { + font-size:1.3em; + font-weight:bold; + float:none; + color:#444; + padding:0; + margin:0; +} + +/* Force link colors for IE6 */ +div.api-level a { + color:#999; +} +#api-info-block div.api-level a:link { + color:#444; +} +#api-level-toggle a { + color:#999; +} + +div#naMessage { + display:none; + width:555px; + height:0; + margin:0 auto; +} + +div#naMessage div { + width:450px; + position:fixed; + margin:50px 0; + padding:4em 4em 3em; + background:#FFF; + background:rgba(255,255,255,0.7); + border:1px solid #dddd00; +} +/* IE6 can't position fixed */ +* html div#naMessage div { position:absolute; } + +div#naMessage strong { + font-size:1.1em; +} + +.absent, +.absent a:link, +.absent a:visited, +.absent a:hover, +.absent * { + color:#bbb !important; + cursor:default !important; + text-decoration:none !important; +} + +#api-level-toggle a, +.api-level a { + color:inherit; + text-decoration:none; +} + +#api-level-toggle a:hover, +.api-level a:hover { + color:inherit; + text-decoration:underline !important; + cursor:pointer !important; +} + +#side-nav li.absent.selected, +#side-nav li.absent.selected *, +#side-nav div.label.absent.selected, +#side-nav div.label.absent.selected * { + background-color:#eaeaea !important; +} +/* IE6 quirk (won't chain classes, so just keep background blue) */ +* html #side-nav li.selected, +* html #side-nav li.selected *, +* html #side-nav div.label.selected, +* html #side-nav div.label.selected * { + background-color: #435a6e !important; +} + + +.absent h4.jd-details-title, +.absent h4.jd-details-title * { + background-color:#f6f6f6 !important; +} + +.absent img { + opacity: .3; + filter: alpha(opacity=30); + -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; +} + + +/* applies to a div containing links to summary tables */ +.sum-details-links { + padding:0; + font-weight:normal; +} + +.sum-details-links a { + text-decoration:none; +} + +.sum-details-links a:hover { + text-decoration:underline; +} + + +/* inheritance table */ +.jd-inheritance-table { + border-spacing:0; + margin:0; + padding:0; + font-size:.9em; +} +.jd-inheritance-table td { + border: none; + margin: 0; + padding: 0; +} +.jd-inheritance-table .jd-inheritance-space { + font-weight:bold; + width:1em; +} +.jd-inheritance-table .jd-inheritance-interface-cell { + padding-left: 17px; +} + +#jd-content { + padding: 18px 15px; +} + +hr { + background-color:#ccc; + border-color:#fff; + margin:2em 0 1em; +} + +/* DOC CLASSES */ + +#jd-content h1 { +/*sdk page*/ + font-size:1.6em; + color:#336666; + margin:0 0 .5em; +} + +#jd-content h2 { + font-size:1.45em; + color:#111; + border-top:2px solid #ccc; + padding: .5em 0 0; + margin: 2em 0 1em 0; +} + +#jd-content h3 { + font-size:1.2em; + color:#222; + padding: .75em 0 .65em 0; + margin:0; +} + +#jd-content h4 { + font-size:1.1em; + margin-bottom:.5em; + color:#222; +} + +#jd-content .small-header { + font-size:1em; + color:#000; + font-weight:bold; + border:none; + padding:0; + margin:1em 0 .5em; + position:inherit; +} + +#jd-content table { + margin: 0 0 1em 1em; +} + +#jd-content img { + margin: 0 0 1em 1em; +} + +#jd-content li img, +#jd-content dd img { + margin:.5em 0 0 1em; +} + +.nolist { + list-style:none; + padding:0; + margin:0 0 1em 1em; +} + +.nolist li { + padding:0 0 2px; + margin:0; +} + +h4 .normal { + font-size:.9em; + font-weight:normal; +} + +.caps { + font-variant:small-caps; + font-size:1.2em; +} + +dl.tag-list dl.atn-list { + padding:0 0 0 2em; +} + +.jd-details { +/* border:1px solid #669999; + padding:4px; */ + margin:0 0 1em; +} + +/* API reference: a container for the +.tagdata blocks that make up the detailed +description */ +.jd-details-descr { + padding:0; + margin:.5em .25em; +} + +/* API reference: a block containing +a detailed description, a params table, +seealso list, etc */ +.jd-tagdata { + margin:.5em 1em; +} + +.jd-tagdata p { + margin:0 0 1em 1em; +} + +/* API reference: adjustments to +the detailed description block */ +.jd-tagdescr { + margin:.25em 0 .75em 0; + line-height:1em; +} + +.jd-tagdescr p { + margin:.5em 0; + padding:0; + +} + +.jd-tagdescr ol, +.jd-tagdescr ul { + margin:0 2.5em; + padding:0; +} + +.jd-tagdescr table, +.jd-tagdescr img { + margin:.25em 1em; +} + +.jd-tagdescr li { +margin:0 0 .25em 0; +padding:0; +} + +/* API reference: heading marking +the details section for constants, +attrs, methods, etc. */ +h4.jd-details-title { + font-size:1.15em; + background-color: #E2E2E2; + margin:1.5em 0 .6em; + padding:3px 95px 3px 3px; /* room for api-level */ +} + +h4.jd-tagtitle { + margin:0; +} + +/* API reference: heading for "Parameters", "See Also", etc., +in details sections */ +h5.jd-tagtitle { + margin:0 0 .25em 0; + font-size:1em; +} + +.jd-tagtable { + margin:0; +} + +.jd-tagtable td, +.jd-tagtable th { + border:none; + background-color:#fff; + vertical-align:top; + font-weight:normal; + padding:2px 10px; +} + +.jd-tagtable th { + font-style:italic; +} + +#jd-content table h2 { + background-color: #d6d6d6; + font-size: 1.1em; + margin:0 0 10px; + padding:5px; + left:0; + width:auto; +} + +div.special { + padding: .5em 1em 1em 1em; + margin: 0 0 1em; + background-color: #DAF3FC; + border:1px solid #d3ecf5; + border-radius:5px; + -moz-border-radius:5px; + -webkit-border-radius:5px; +} + +.toggle-content-toggleme { + display:none; +} + +.toggle-content-button { + font-size:.9em; + line-height:.9em; + text-decoration:none; + position:relative; + top:5px; +} + +.toggle-content-button:hover { + text-decoration:underline; +} + +div.special p { + margin: .5em 0 0 0; +} + +div.special ol { + margin: 0; +} + +div.special ol li { + margin: 0; + padding: 0; +} + +#jd-content div.special h2, +#jd-content div.special h3 { + color:#669999; + font-size:1.2em; + border:none; + margin:0 0 .5em; + padding:0; +} + +p.note, p.caution, p.warning { + margin: 1em; + padding: 0 0 0 .5em; + border-left: 4px solid; +} + +p.special-note { + background-color:#EBF3DB; + padding:10px 20px; + margin:0 0 1em; +} + +p.note { + border-color: #99aacc; +} + +p.warning { + border-color: #aa0033; +} + +p.caution { + border-color: #ffcf00; +} + +p.warning b, p.warning strong { + font-weight: bold; +} + +li p.note, li p.warning { + margin: .5em 0 0 0; + padding: .2em .5em .2em .9em; +} + +dl.xml dt { + font-variant:small-caps; + font-size:1.2em; +} + +dl.xml dl { + padding:0; +} + +dl.xml dl dt { + font-variant:normal; + font-size:1em; +} + +.listhead li { + font-weight: bold; +} + +.listhead li *, /*ie*/.listhead li li { + font-weight: normal; +} + +ol.no-style, +ul.no-style { + list-style:none; + padding-left:1em; +} + +.new { + font-size: .78em; + font-weight: bold; + color: #ff3d3d; + text-decoration: none; + vertical-align:top; + line-height:.9em; +} + +pre.classic { + background-color:transparent; + border:none; + padding:0; +} + +p.img-caption { + margin: -0.5em 0 1em 1em; /* matches default img left-margin */ +} + +div.figure { + float:right; + clear:right; + margin:1em 0 0 3em; + padding:0; + background-color:#fff; + /* width must be defined w/ an inline style matching the image width */ +} + +#jd-content +div.figure img { + margin: 0 0 1em; +} + +div.figure p.img-caption { + margin: -0.5em 0 1em 0; +} + +p.table-caption { + margin: 0 0 0.5em 1em; /* matches default table left-margin */ +} + +/* BEGIN quickview sidebar element styles */ + +#qv-wrapper { + float: right; + width:310px; /* +35px padding */ + background-color:#fff; + margin:-48px 0 2px 0; + padding:0 0 20px 35px; +} + +#qv { + background-color:#fff; + border:4px solid #dee8f1; + margin:0; + padding:0 5px 5px; + width:292px; /* +10px padding; +8px border */ + font-size:.9em; +} + +#qv ol { + list-style:none; + padding: 0; +} + +#qv ol ol{ + list-style:none; + padding: 0 0 0 12px; + margin:0; +} + +#qv ul { + padding: 0 10px 0 2em; +} + +#qv li { + padding: 0 10px 3px; + line-height: 1.2em; +} + +#qv li li { + padding: 3px 10px 0; +} + +#qv ul li { + padding: 0 10px 0 0; +} + +#qv li.selected a { + color:#555; + text-decoration:none; +} + +#qv a { + color:#cc6600; +} + +#qv p { + margin:8px 0 0; + padding:0 10px; +} + +#qv-extra #rule { + padding: 0 10px; + margin: 0; +} + +#qv-sub-rule { + padding: 6px 20px; + margin: 0; +} + +#qv-sub-rule p { + margin: 0; +} + +#jd-content #qv h2 { + font-size:1.05em; + font-weight:bold; + margin:12px 0 .25em 0; + padding:0 10px; + background-color:transparent; + color:#7BB026; + border:none; + left:0; + z-index:1; +} + +/* END quickview sidebar element styles */ + +/* Begin sidebox sidebar element styles */ + +.sidebox-wrapper { + float:right; + clear:right; + width:310px; /* +35px padding */ + background-color:#fff; + margin:0; + padding:0 0 20px 35px; +} + +.sidebox { + border-left:1px solid #dee8f1; + background-color:#ffffee; + margin:0; + padding:8px 12px; + font-size:0.9em; + width:285px; /* +24px padding; +1px border */ +} + +.sidebox p { + margin-bottom: .25em; +} + +.sidebox ul { + padding: 0 0 0 1.5em; +} + +.sidebox li ul { + margin-top:0; + margin-bottom:.1em; +} + +.sidebox li { +padding:0 0 0 0em; +} + +#jd-content .sidebox h2, +#jd-content .sidebox h3, +#jd-content .sidebox h4, +#jd-content .sidebox h5 { + border:none; + font-size:1em; + margin:0; + padding:0 0 8px; + left:0; + z-index:0; +} + +.sidebox hr { + background-color:#ccc; + border:none; +} + +/* End sidebox sidebar element styles */ + +/* BEGIN image and caption styles (originally for UI Guidelines docs) */ + +table.image-caption { + padding:0; + margin:.5em 0; + border:0; +} + +td.image-caption-i { + font-size:92%; + padding:0 5px; + margin:0; + border:0; +} + +td.image-caption-i img { + padding:0 1em; + margin:0; +} + +.image-list { + width:24px; + text-align:center; +} + +td.image-caption-c { + font-size:92%; + padding:1em 2px 2px 2px; + margin:0; + border:0; + width:350px; +} + +.grad-rule-top { +background-image:url(images/grad-rule-qv.png); +background-repeat:no-repeat; +padding-top:1em; +margin-top:0; +} + +.image-caption-nested { + margin-top:0; + padding:0 0 0 1em; +} + +.image-caption-nested td { + padding:0 4px 2px 0; + margin:0; + border:0; +} + +/* END image and caption styles */ + +/* table of contents */ + +ol.toc { + margin: 0 0 1em 0; + padding: 0; + list-style: none; + font-size:95%; +} + +ol.toc li { + font-weight: bold; + margin: 0 0 .5em 1em; + padding: 0; +} + +ol.toc li p { + font-weight: normal; +} + +ol.toc li ol { + margin: 0; + padding: 0; +} + +ol.toc li li { + padding: 0; + margin: 0 0 0 1em; + font-weight: normal; + list-style: none; +} + +table ol.toc { + margin-left: 0; +} + +.columns td { + padding:0 5px; + border:none; +} + +/* link table */ +.jd-linktable { + margin: 0 0 1em; + border-bottom: 1px solid #888; +} +.jd-linktable th, +.jd-linktable td { + padding: 3px 5px; + vertical-align: top; + text-align: left; + border:none; +} +.jd-linktable tr { + background-color: #fff; +} +.jd-linktable td { + border-top: 1px solid #888; + background-color: inherit; +} +.jd-linktable td p { + padding: 0 0 5px; +} +.jd-linktable .jd-linkcol { +} +.jd-linktable .jd-descrcol { +} +.jd-linktable .jd-typecol { + text-align:right; +} +.jd-linktable .jd-valcol { +} +.jd-linktable .jd-commentrow { + border-top:none; + padding-left:25px; +} +.jd-deprecated-warning { + margin-top: 0; + margin-bottom: 10px; +} + +tr.alt-color { + background-color: #f6f6f6; +} + +/* expando trigger */ +#jd-content .jd-expando-trigger-img { + margin:0; +} + +/* jd-expando */ +.jd-inheritedlinks { + padding:0 0 0 13px +} + +/* SDK PAGE */ +table.download tr { + background-color:#d9d9d9; +} + +table.download tr.alt-color { + background-color:#ededed; +} + +table.download td, +table.download th { + border:2px solid #fff; + padding:10px 5px; +} + +table.download th { + background-color:#6d8293; + color:#fff; +} + +/* INLAY 180 COPY and 240PX EXTENSION */ +/* modified to 43px so that all browsers eliminate the package panel h-scroll */ +.g-tpl-240 .g-unit, +.g-unit .g-tpl-240 .g-unit, +.g-unit .g-unit .g-tpl-240 .g-unit { + display: block; + margin: 0 0 0 243px; + width: auto; + float: none; +} +.g-unit .g-unit .g-tpl-240 .g-first, +.g-unit .g-tpl-240 .g-first, +.g-tpl-240 .g-first { + display: block; + margin: 0; + width: 243px; + float: left; +} +/* 240px alt */ +.g-tpl-240-alt .g-unit, +.g-unit .g-tpl-240-alt .g-unit, +.g-unit .g-unit .g-tpl-240-alt .g-unit { + display: block; + margin: 0 243px 0 0; + width: auto; + float: none; +} +.g-unit .g-unit .g-tpl-240-alt .g-first, +.g-unit .g-tpl-240-alt .g-first, +.g-tpl-240-alt .g-first { + display: block; + margin: 0; + width: 243px; + float: right; +} + +/* 180px */ +.g-tpl-180 .g-unit, +.g-unit .g-tpl-180 .g-unit, +.g-unit .g-unit .g-tpl-180 .g-unit { + display: block; + margin: 0 0 0 180px; + width: auto; + float: none; +} +.g-unit .g-unit .g-tpl-180 .g-first, +.g-unit .g-tpl-180 .g-first, +.g-tpl-180 .g-first { + display: block; + margin: 0; + width: 180px; + float: left; +} +/* 180px alt */ +.g-tpl-180-alt .g-unit, +.g-unit .g-tpl-180-alt .g-unit, +.g-unit .g-unit .g-tpl-180-alt .g-unit { + display: block; + margin: 0 180px 0 0; + width: auto; + float: none; +} +.g-unit .g-unit .g-tpl-180-alt .g-first, +.g-unit .g-tpl-180-alt .g-first, +.g-tpl-180-alt .g-first { + display: block; + margin: 0; + width: 180px; + float: right; +} + + +/* JQUERY RESIZABLE STYLES */ +.ui-resizable { position: relative; } +.ui-resizable-handle { position: absolute; display: none; font-size: 0.1px; z-index:1; } +.ui-resizable .ui-resizable-handle { display: block; } +body .ui-resizable-disabled .ui-resizable-handle { display: none; } +body .ui-resizable-autohide .ui-resizable-handle { display: none; } +.ui-resizable-s { cursor: s-resize; height: 6px; width: 100%; bottom: 0px; left: 0px; + background: transparent url("images/resizable-s2.gif") repeat scroll center top; } +.ui-resizable-e { cursor: e-resize; width: 6px; right: 0px; top: 0px; height: 100%; + background: transparent url("images/resizable-e2.gif") repeat scroll right center; } + +@media print { + + body { + overflow:visible; + } + + #header { + height:50px; + } + + #header-tabs, + #headerRight, + #side-nav, + #api-info-block { + display:none; + } + + #body-content { + position:inherit; + } + + #doc-content { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } + + #jd-header { + padding:10px 0; + } + + #jd-content { + padding:15px 0 0; + } + + #footer { + float:none; + margin:2em 0 0; + } + + h4.jd-details-title { + border-bottom:1px solid #666; + } + + pre { + /* these allow lines to break (if there's a white space) */ + overflow: visible; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + } + + h1, h2, h3, h4, h5, h6 { + page-break-after: avoid; + } + + table, img { + page-break-inside: avoid; + } +} diff --git a/apidocs/assets/android-developer-docs.js b/apidocs/assets/android-developer-docs.js new file mode 100644 index 0000000000..6f521414db --- /dev/null +++ b/apidocs/assets/android-developer-docs.js @@ -0,0 +1,595 @@ +var resizePackagesNav; +var classesNav; +var devdocNav; +var sidenav; +var content; +var HEADER_HEIGHT = -1; +var cookie_namespace = 'android_developer'; +var NAV_PREF_TREE = "tree"; +var NAV_PREF_PANELS = "panels"; +var nav_pref; +var toRoot; +var toAssets; +var isMobile = false; // true if mobile, so we can adjust some layout +var isIE6 = false; // true if IE6 + +// TODO: use $(document).ready instead +function addLoadEvent(newfun) { + var current = window.onload; + if (typeof window.onload != 'function') { + window.onload = newfun; + } else { + window.onload = function() { + current(); + newfun(); + } + } +} + +var agent = navigator['userAgent'].toLowerCase(); +// If a mobile phone, set flag and do mobile setup +if ((agent.indexOf("mobile") != -1) || // android, iphone, ipod + (agent.indexOf("blackberry") != -1) || + (agent.indexOf("webos") != -1) || + (agent.indexOf("mini") != -1)) { // opera mini browsers + isMobile = true; + addLoadEvent(mobileSetup); +// If not a mobile browser, set the onresize event for IE6, and others +} else if (agent.indexOf("msie 6") != -1) { + isIE6 = true; + addLoadEvent(function() { + window.onresize = resizeAll; + }); +} else { + addLoadEvent(function() { + window.onresize = resizeHeight; + }); +} + +function mobileSetup() { + $("body").css({'overflow':'auto'}); + $("html").css({'overflow':'auto'}); + $("#body-content").css({'position':'relative', 'top':'0'}); + $("#doc-content").css({'overflow':'visible', 'border-left':'3px solid #DDD'}); + $("#side-nav").css({'padding':'0'}); + $("#nav-tree").css({'overflow-y': 'auto'}); +} + +/* loads the lists.js file to the page. +Loading this in the head was slowing page load time */ +addLoadEvent( function() { + var lists = document.createElement("script"); + lists.setAttribute("type","text/javascript"); + lists.setAttribute("src", toRoot+"lists.js"); + document.getElementsByTagName("head")[0].appendChild(lists); +} ); + +addLoadEvent( function() { + $("pre:not(.no-pretty-print)").addClass("prettyprint"); + prettyPrint(); +} ); + +function setToRoot(root, assets) { + toRoot = root; + toAssets = assets; + // note: toRoot also used by carousel.js +} + +function restoreWidth(navWidth) { + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth) + 6 + "px"}); //account for 6px-wide handle-bar + + if (isIE6) { + content.css({width:parseInt(windowWidth) - parseInt(navWidth) - 6 + "px"}); // necessary in order for scrollbars to be visible + } + + sidenav.css({width:navWidth}); + resizePackagesNav.css({width:navWidth}); + classesNav.css({width:navWidth}); + $("#packages-nav").css({width:navWidth}); +} + +function restoreHeight(packageHeight) { + var windowHeight = ($(window).height() - HEADER_HEIGHT); + var swapperHeight = windowHeight - 13; + $("#swapper").css({height:swapperHeight + "px"}); + sidenav.css({height:windowHeight + "px"}); + content.css({height:windowHeight + "px"}); + resizePackagesNav.css({maxHeight:swapperHeight + "px", height:packageHeight}); + classesNav.css({height:swapperHeight - parseInt(packageHeight) + "px"}); + $("#packages-nav").css({height:parseInt(packageHeight) - 6 + "px"}); //move 6px to give space for the resize handle + devdocNav.css({height:sidenav.css("height")}); + $("#nav-tree").css({height:swapperHeight + "px"}); +} + +function readCookie(cookie) { + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) { + var index = document.cookie.indexOf(myCookie); + if (index != -1) { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + return 0; +} + +function writeCookie(cookie, val, section, expiration) { + if (val==undefined) return; + section = section == null ? "_" : "_"+section+"_"; + if (expiration == null) { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + } + document.cookie = cookie_namespace + section + cookie + "=" + val + "; expires=" + expiration+"; path=/"; +} + +function getSection() { + if (location.href.indexOf("/reference/") != -1) { + return "reference"; + } else if (location.href.indexOf("/guide/") != -1) { + return "guide"; + } else if (location.href.indexOf("/resources/") != -1) { + return "resources"; + } + var basePath = getBaseUri(location.pathname); + return basePath.substring(1,basePath.indexOf("/",1)); +} + +function init() { + HEADER_HEIGHT = $("#header").height()+3; + $("#side-nav").css({position:"absolute",left:0}); + content = $("#doc-content"); + resizePackagesNav = $("#resize-packages-nav"); + classesNav = $("#classes-nav"); + sidenav = $("#side-nav"); + devdocNav = $("#devdoc-nav"); + + var cookiePath = getSection() + "_"; + + if (!isMobile) { + $("#resize-packages-nav").resizable({handles: "s", resize: function(e, ui) { resizePackagesHeight(); } }); + $(".side-nav-resizable").resizable({handles: "e", resize: function(e, ui) { resizeWidth(); } }); + var cookieWidth = readCookie(cookiePath+'width'); + var cookieHeight = readCookie(cookiePath+'height'); + if (cookieWidth) { + restoreWidth(cookieWidth); + } else if ($(".side-nav-resizable").length) { + resizeWidth(); + } + if (cookieHeight) { + restoreHeight(cookieHeight); + } else { + resizeHeight(); + } + } + + if (devdocNav.length) { // only dev guide, resources, and sdk + tryPopulateResourcesNav(); + highlightNav(location.href); + } +} + +function tryPopulateResourcesNav() { + var sampleList = $('#devdoc-nav-sample-list'); + var articleList = $('#devdoc-nav-article-list'); + var tutorialList = $('#devdoc-nav-tutorial-list'); + var topicList = $('#devdoc-nav-topic-list'); + + if (!topicList.length || !ANDROID_TAGS || !ANDROID_RESOURCES) + return; + + var topics = []; + for (var topic in ANDROID_TAGS['topic']) { + topics.push({name:topic,title:ANDROID_TAGS['topic'][topic]}); + } + topics.sort(function(x,y){ return (x.title < y.title) ? -1 : 1; }); + for (var i = 0; i < topics.length; i++) { + topicList.append( + $('
  • ').append( + $('') + .attr('href', toRoot + "../resources/browser.html?tag=" + topics[i].name) + .append($('') + .addClass('en') + .html(topics[i].title) + ) + ) + ); + } + + var _renderResourceList = function(tag, listNode) { + var resources = []; + var tags; + var resource; + var i, j; + for (i = 0; i < ANDROID_RESOURCES.length; i++) { + resource = ANDROID_RESOURCES[i]; + tags = resource.tags || []; + var hasTag = false; + for (j = 0; j < tags.length; j++) + if (tags[j] == tag) { + hasTag = true; + break; + } + if (!hasTag) + continue; + resources.push(resource); + } + //resources.sort(function(x,y){ return (x.title.en < y.title.en) ? -1 : 1; }); + for (i = 0; i < resources.length; i++) { + resource = resources[i]; + var listItemNode = $('
  • ').append( + $('') + .attr('href', toRoot + "../resources/" + resource.path) + .append($('') + .addClass('en') + .html(resource.title.en) + ) + ); + tags = resource.tags || []; + for (j = 0; j < tags.length; j++) { + if (tags[j] == 'new') { + listItemNode.get(0).innerHTML += ' new!'; + break; + } + } + listNode.append(listItemNode); + } + }; + + _renderResourceList('sample', sampleList); + _renderResourceList('article', articleList); + _renderResourceList('tutorial', tutorialList); +} + +function highlightNav(fullPageName) { + var lastSlashPos = fullPageName.lastIndexOf("/"); + var firstSlashPos; + if (fullPageName.indexOf("/guide/") != -1) { + firstSlashPos = fullPageName.indexOf("/guide/"); + } else if (fullPageName.indexOf("/sdk/") != -1) { + firstSlashPos = fullPageName.indexOf("/sdk/"); + } else { + firstSlashPos = fullPageName.indexOf("/resources/"); + } + if (lastSlashPos == (fullPageName.length - 1)) { // if the url ends in slash (add 'index.html') + fullPageName = fullPageName + "index.html"; + } + // First check if the exact URL, with query string and all, is in the navigation menu + var pathPageName = fullPageName.substr(firstSlashPos); + var link = $("#devdoc-nav a[href$='"+ pathPageName+"']"); + if (link.length == 0) { + var htmlPos = fullPageName.lastIndexOf(".html", fullPageName.length); + pathPageName = fullPageName.slice(firstSlashPos, htmlPos + 5); // +5 advances past ".html" + link = $("#devdoc-nav a[href$='"+ pathPageName+"']"); + if ((link.length == 0) && ((fullPageName.indexOf("/guide/") != -1) || (fullPageName.indexOf("/resources/") != -1))) { + // if there's no match, then let's backstep through the directory until we find an index.html page + // that matches our ancestor directories (only for dev guide and resources) + lastBackstep = pathPageName.lastIndexOf("/"); + while (link.length == 0) { + backstepDirectory = pathPageName.lastIndexOf("/", lastBackstep); + link = $("#devdoc-nav a[href$='"+ pathPageName.slice(0, backstepDirectory + 1)+"index.html']"); + lastBackstep = pathPageName.lastIndexOf("/", lastBackstep - 1); + if (lastBackstep == 0) break; + } + } + } + + // add 'selected' to the
  • or
  • ) and the parent
      is hidden + else if (link.parent().parent().is(':hidden')) { + toggle(link.parent().parent().parent(), false); // open the parent list + // then also check if the parent list is also nested in a hidden list + if (link.parent().parent().parent().parent().is(':hidden')) { + toggle(link.parent().parent().parent().parent().parent(), false); // open the super parent list + } + } +} + +/* Resize the height of the nav panels in the reference, + * and save the new size to a cookie */ +function resizePackagesHeight() { + var windowHeight = ($(window).height() - HEADER_HEIGHT); + var swapperHeight = windowHeight - 13; // move 13px for swapper link at the bottom + resizePackagesNav.css({maxHeight:swapperHeight + "px"}); + classesNav.css({height:swapperHeight - parseInt(resizePackagesNav.css("height")) + "px"}); + + $("#swapper").css({height:swapperHeight + "px"}); + $("#packages-nav").css({height:parseInt(resizePackagesNav.css("height")) - 6 + "px"}); //move 6px for handle + + var section = getSection(); + writeCookie("height", resizePackagesNav.css("height"), section, null); +} + +/* Resize the height of the side-nav and doc-content divs, + * which creates the frame effect */ +function resizeHeight() { + var docContent = $("#doc-content"); + + // Get the window height and always resize the doc-content and side-nav divs + var windowHeight = ($(window).height() - HEADER_HEIGHT); + docContent.css({height:windowHeight + "px"}); + $("#side-nav").css({height:windowHeight + "px"}); + + var href = location.href; + // If in the reference docs, also resize the "swapper", "classes-nav", and "nav-tree" divs + if (href.indexOf("/reference/") != -1) { + var swapperHeight = windowHeight - 13; + $("#swapper").css({height:swapperHeight + "px"}); + $("#classes-nav").css({height:swapperHeight - parseInt(resizePackagesNav.css("height")) + "px"}); + $("#nav-tree").css({height:swapperHeight + "px"}); + + // If in the dev guide docs, also resize the "devdoc-nav" div + } else if (href.indexOf("/guide/") != -1) { + $("#devdoc-nav").css({height:sidenav.css("height")}); + } else if (href.indexOf("/resources/") != -1) { + $("#devdoc-nav").css({height:sidenav.css("height")}); + } + + // Hide the "Go to top" link if there's no vertical scroll + if ( parseInt($("#jd-content").css("height")) <= parseInt(docContent.css("height")) ) { + $("a[href='#top']").css({'display':'none'}); + } else { + $("a[href='#top']").css({'display':'inline'}); + } +} + +/* Resize the width of the "side-nav" and the left margin of the "doc-content" div, + * which creates the resizable side bar */ +function resizeWidth() { + var windowWidth = $(window).width() + "px"; + if (sidenav.length) { + var sidenavWidth = sidenav.css("width"); + } else { + var sidenavWidth = 0; + } + content.css({marginLeft:parseInt(sidenavWidth) + 6 + "px"}); //account for 6px-wide handle-bar + + if (isIE6) { + content.css({width:parseInt(windowWidth) - parseInt(sidenavWidth) - 6 + "px"}); // necessary in order to for scrollbars to be visible + } + + resizePackagesNav.css({width:sidenavWidth}); + classesNav.css({width:sidenavWidth}); + $("#packages-nav").css({width:sidenavWidth}); + + if ($(".side-nav-resizable").length) { // Must check if the nav is resizable because IE6 calls resizeWidth() from resizeAll() for all pages + var section = getSection(); + writeCookie("width", sidenavWidth, section, null); + } +} + +/* For IE6 only, + * because it can't properly perform auto width for "doc-content" div, + * avoiding this for all browsers provides better performance */ +function resizeAll() { + resizeHeight(); + resizeWidth(); +} + +function getBaseUri(uri) { + var intlUrl = (uri.substring(0,6) == "/intl/"); + if (intlUrl) { + base = uri.substring(uri.indexOf('intl/')+5,uri.length); + base = base.substring(base.indexOf('/')+1, base.length); + //alert("intl, returning base url: /" + base); + return ("/" + base); + } else { + //alert("not intl, returning uri as found."); + return uri; + } +} + +function requestAppendHL(uri) { +//append "?hl= to an outgoing request (such as to blog) + var lang = getLangPref(); + if (lang) { + var q = 'hl=' + lang; + uri += '?' + q; + window.location = uri; + return false; + } else { + return true; + } +} + +function loadLast(cookiePath) { + var location = window.location.href; + if (location.indexOf("/"+cookiePath+"/") != -1) { + return true; + } + var lastPage = readCookie(cookiePath + "_lastpage"); + if (lastPage) { + window.location = lastPage; + return false; + } + return true; +} + +$(window).unload(function(){ + var path = getBaseUri(location.pathname); + if (path.indexOf("/reference/") != -1) { + writeCookie("lastpage", path, "reference", null); + } else if (path.indexOf("/guide/") != -1) { + writeCookie("lastpage", path, "guide", null); + } else if (path.indexOf("/resources/") != -1) { + writeCookie("lastpage", path, "resources", null); + } +}); + +function toggle(obj, slide) { + var ul = $("ul:first", obj); + var li = ul.parent(); + if (li.hasClass("closed")) { + if (slide) { + ul.slideDown("fast"); + } else { + ul.show(); + } + li.removeClass("closed"); + li.addClass("open"); + $(".toggle-img", li).attr("title", "hide pages"); + } else { + ul.slideUp("fast"); + li.removeClass("open"); + li.addClass("closed"); + $(".toggle-img", li).attr("title", "show pages"); + } +} + +function buildToggleLists() { + $(".toggle-list").each( + function(i) { + $("div:first", this).append(""); + $(this).addClass("closed"); + }); +} + +function getNavPref() { + var v = readCookie('reference_nav'); + if (v != NAV_PREF_TREE) { + v = NAV_PREF_PANELS; + } + return v; +} + +function chooseDefaultNav() { + nav_pref = getNavPref(); + if (nav_pref == NAV_PREF_TREE) { + $("#nav-panels").toggle(); + $("#panel-link").toggle(); + $("#nav-tree").toggle(); + $("#tree-link").toggle(); + } +} + +function swapNav() { + if (nav_pref == NAV_PREF_TREE) { + nav_pref = NAV_PREF_PANELS; + } else { + nav_pref = NAV_PREF_TREE; + init_default_navtree(toRoot); + } + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // keep this for 10 years + writeCookie("nav", nav_pref, "reference", date.toGMTString()); + + $("#nav-panels").toggle(); + $("#panel-link").toggle(); + $("#nav-tree").toggle(); + $("#tree-link").toggle(); + + if ($("#nav-tree").is(':visible')) scrollIntoView("nav-tree"); + else { + scrollIntoView("packages-nav"); + scrollIntoView("classes-nav"); + } +} + +function scrollIntoView(nav) { + var navObj = $("#"+nav); + if (navObj.is(':visible')) { + var selected = $(".selected", navObj); + if (selected.length == 0) return; + if (selected.is("div")) selected = selected.parent(); + + var scrolling = document.getElementById(nav); + var navHeight = navObj.height(); + var offsetTop = selected.position().top; + if (selected.parent().parent().is(".toggle-list")) offsetTop += selected.parent().parent().position().top; + if(offsetTop > navHeight - 92) { + scrolling.scrollTop = offsetTop - navHeight + 92; + } + } +} + +function changeTabLang(lang) { + var nodes = $("#header-tabs").find("."+lang); + for (i=0; i < nodes.length; i++) { // for each node in this language + var node = $(nodes[i]); + node.siblings().css("display","none"); // hide all siblings + if (node.not(":empty").length != 0) { //if this languages node has a translation, show it + node.css("display","inline"); + } else { //otherwise, show English instead + node.css("display","none"); + node.siblings().filter(".en").css("display","inline"); + } + } +} + +function changeNavLang(lang) { + var nodes = $("#side-nav").find("."+lang); + for (i=0; i < nodes.length; i++) { // for each node in this language + var node = $(nodes[i]); + node.siblings().css("display","none"); // hide all siblings + if (node.not(":empty").length != 0) { // if this languages node has a translation, show it + node.css("display","inline"); + } else { // otherwise, show English instead + node.css("display","none"); + node.siblings().filter(".en").css("display","inline"); + } + } +} + +function changeDocLang(lang) { + changeTabLang(lang); + changeNavLang(lang); +} + +function changeLangPref(lang, refresh) { + var date = new Date(); + expires = date.toGMTString(date.setTime(date.getTime()+(10*365*24*60*60*1000))); // keep this for 50 years + //alert("expires: " + expires) + writeCookie("pref_lang", lang, null, expires); + //changeDocLang(lang); + if (refresh) { + l = getBaseUri(location.pathname); + window.location = l; + } +} + +function loadLangPref() { + var lang = readCookie("pref_lang"); + if (lang != 0) { + $("#language").find("option[value='"+lang+"']").attr("selected",true); + } +} + +function getLangPref() { + var lang = $("#language").find(":selected").attr("value"); + if (!lang) { + lang = readCookie("pref_lang"); + } + return (lang != 0) ? lang : 'en'; +} + + +function toggleContent(obj) { + var button = $(obj); + var div = $(obj.parentNode); + var toggleMe = $(".toggle-content-toggleme",div); + if (button.hasClass("show")) { + toggleMe.slideDown(); + button.removeClass("show").addClass("hide"); + } else { + toggleMe.slideUp(); + button.removeClass("hide").addClass("show"); + } + $("span", button).toggle(); +} diff --git a/apidocs/assets/android-developer-reference.js b/apidocs/assets/android-developer-reference.js new file mode 100644 index 0000000000..c854f01b71 --- /dev/null +++ b/apidocs/assets/android-developer-reference.js @@ -0,0 +1,402 @@ +var API_LEVEL_ENABLED_COOKIE = "api_level_enabled"; +var API_LEVEL_INDEX_COOKIE = "api_level_index"; +var minLevelIndex = 0; + +function toggleApiLevelSelector(checkbox) { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // keep this for 10 years + var expiration = date.toGMTString(); + if (checkbox.checked) { + $("#apiLevelSelector").removeAttr("disabled"); + $("#api-level-toggle label").removeClass("disabled"); + writeCookie(API_LEVEL_ENABLED_COOKIE, 1, null, expiration); + } else { + $("#apiLevelSelector").attr("disabled","disabled"); + $("#api-level-toggle label").addClass("disabled"); + writeCookie(API_LEVEL_ENABLED_COOKIE, 0, null, expiration); + } + changeApiLevel(); +} + +function buildApiLevelSelector() { + var userApiLevelEnabled = readCookie(API_LEVEL_ENABLED_COOKIE); + var userApiLevelIndex = readCookie(API_LEVEL_INDEX_COOKIE); // No cookie (zero) is the same as maxLevel. + + if (userApiLevelEnabled == 0) { + $("#apiLevelSelector").attr("disabled","disabled"); + } else { + $("#apiLevelCheckbox").attr("checked","checked"); + $("#api-level-toggle label").removeClass("disabled"); + } + + minLevelValue = $("body").attr("class"); + minLevelIndex = apiKeyToIndex(minLevelValue); + var select = $("#apiLevelSelector").html("").change(changeApiLevel); + for (var i = SINCE_DATA.length-1; i >= 0; i--) { + var option = $("