Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
scorpio
frameworks_base
Commits
5e8a587d
Commit
5e8a587d
authored
14 years ago
by
Brian Carlstrom
Browse files
Options
Download
Email Patches
Plain Diff
Tracking merge of dalvik-dev to master
Change-Id: Id4c19401ad0aa238219aaf5d9a20d2889d0a4b18
parent
aae05232
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
186 additions
and
42 deletions
+186
-42
api/9.xml
api/9.xml
+1
-1
api/current.xml
api/current.xml
+26
-26
core/java/android/net/SSLCertificateSocketFactory.java
core/java/android/net/SSLCertificateSocketFactory.java
+2
-2
core/java/android/net/http/HttpsConnection.java
core/java/android/net/http/HttpsConnection.java
+2
-2
core/tests/coretests/Android.mk
core/tests/coretests/Android.mk
+3
-1
core/tests/coretests/src/android/net/http/HttpsThroughHttpProxyTest.java
...tests/src/android/net/http/HttpsThroughHttpProxyTest.java
+142
-0
tests/CoreTests/android/core/SSLPerformanceTest.java
tests/CoreTests/android/core/SSLPerformanceTest.java
+6
-6
tests/CoreTests/android/core/SSLSocketTest.java
tests/CoreTests/android/core/SSLSocketTest.java
+4
-4
No files found.
api/9.xml
View file @
5e8a587d
...
...
@@ -268066,7 +268066,7 @@
</constructor>
</class>
<class name="UnrecoverableKeyException"
extends="java.security.
GeneralSecurit
yException"
extends="java.security.
UnrecoverableEntr
yException"
abstract="false"
static="false"
final="false"
This diff is collapsed.
Click to expand it.
api/current.xml
View file @
5e8a587d
...
...
@@ -234967,7 +234967,7 @@
deprecated="not deprecated"
visibility="public"
>
<parameter name="
dest
" type="java.io.File">
<parameter name="
newPath
" type="java.io.File">
</parameter>
</method>
<method name="setExecutable"
...
...
@@ -238965,7 +238965,7 @@
deprecated="not deprecated"
visibility="public"
>
<parameter name="
des
t" type="java.io.PipedInputStream">
<parameter name="
targe
t" type="java.io.PipedInputStream">
</parameter>
<exception name="IOException" type="java.io.IOException">
</exception>
...
...
@@ -242177,9 +242177,9 @@
</parameter>
<parameter name="end" type="int">
</parameter>
<parameter name="d
e
st" type="char[]">
<parameter name="dst" type="char[]">
</parameter>
<parameter name="d
e
stStart" type="int">
<parameter name="dstStart" type="int">
</parameter>
</method>
<method name="indexOf"
...
...
@@ -246604,7 +246604,7 @@
<method name="getName"
return="java.lang.String"
abstract="false"
native="
tru
e"
native="
fals
e"
synchronized="false"
static="false"
final="false"
...
...
@@ -250570,7 +250570,7 @@
return="double"
abstract="false"
native="false"
synchronized="
fals
e"
synchronized="
tru
e"
static="true"
final="false"
deprecated="not deprecated"
...
...
@@ -254070,7 +254070,7 @@
deprecated="not deprecated"
visibility="public"
>
<parameter name="
string
" type="java.lang.String">
<parameter name="
toCopy
" type="java.lang.String">
</parameter>
</constructor>
<constructor name="String"
...
...
@@ -256022,9 +256022,9 @@
</parameter>
<parameter name="srcPos" type="int">
</parameter>
<parameter name="d
e
st" type="java.lang.Object">
<parameter name="dst" type="java.lang.Object">
</parameter>
<parameter name="d
e
stPos" type="int">
<parameter name="dstPos" type="int">
</parameter>
<parameter name="length" type="int">
</parameter>
...
...
@@ -256109,7 +256109,7 @@
deprecated="not deprecated"
visibility="public"
>
<parameter name="prop" type="java.lang.String">
<parameter name="prop
ertyName
" type="java.lang.String">
</parameter>
</method>
<method name="getProperty"
...
...
@@ -264697,7 +264697,7 @@
deprecated="not deprecated"
visibility="public"
>
<parameter name="chunk
l
en" type="int">
<parameter name="chunk
L
en
gth
" type="int">
</parameter>
</method>
<method name="setFixedLengthStreamingMode"
...
...
@@ -271174,7 +271174,7 @@
deprecated="not deprecated"
visibility="public"
>
<parameter name="d
e
st" type="byte[]">
<parameter name="dst" type="byte[]">
</parameter>
</method>
<method name="get"
...
...
@@ -271187,7 +271187,7 @@
deprecated="not deprecated"
visibility="public"
>
<parameter name="d
e
st" type="byte[]">
<parameter name="dst" type="byte[]">
</parameter>
<parameter name="off" type="int">
</parameter>
...
...
@@ -271892,7 +271892,7 @@
deprecated="not deprecated"
visibility="public"
>
<parameter name="d
e
st" type="char[]">
<parameter name="dst" type="char[]">
</parameter>
</method>
<method name="get"
...
...
@@ -271905,7 +271905,7 @@
deprecated="not deprecated"
visibility="public"
>
<parameter name="d
e
st" type="char[]">
<parameter name="dst" type="char[]">
</parameter>
<parameter name="off" type="int">
</parameter>
...
...
@@ -272284,7 +272284,7 @@
deprecated="not deprecated"
visibility="public"
>
<parameter name="d
e
st" type="double[]">
<parameter name="dst" type="double[]">
</parameter>
</method>
<method name="get"
...
...
@@ -272297,7 +272297,7 @@
deprecated="not deprecated"
visibility="public"
>
<parameter name="d
e
st" type="double[]">
<parameter name="dst" type="double[]">
</parameter>
<parameter name="off" type="int">
</parameter>
...
...
@@ -272575,7 +272575,7 @@
deprecated="not deprecated"
visibility="public"
>
<parameter name="d
e
st" type="float[]">
<parameter name="dst" type="float[]">
</parameter>
</method>
<method name="get"
...
...
@@ -272588,7 +272588,7 @@
deprecated="not deprecated"
visibility="public"
>
<parameter name="d
e
st" type="float[]">
<parameter name="dst" type="float[]">
</parameter>
<parameter name="off" type="int">
</parameter>
...
...
@@ -272866,7 +272866,7 @@
deprecated="not deprecated"
visibility="public"
>
<parameter name="d
e
st" type="int[]">
<parameter name="dst" type="int[]">
</parameter>
</method>
<method name="get"
...
...
@@ -272879,7 +272879,7 @@
deprecated="not deprecated"
visibility="public"
>
<parameter name="d
e
st" type="int[]">
<parameter name="dst" type="int[]">
</parameter>
<parameter name="off" type="int">
</parameter>
...
...
@@ -273174,7 +273174,7 @@
deprecated="not deprecated"
visibility="public"
>
<parameter name="d
e
st" type="long[]">
<parameter name="dst" type="long[]">
</parameter>
</method>
<method name="get"
...
...
@@ -273187,7 +273187,7 @@
deprecated="not deprecated"
visibility="public"
>
<parameter name="d
e
st" type="long[]">
<parameter name="dst" type="long[]">
</parameter>
<parameter name="off" type="int">
</parameter>
...
...
@@ -273524,7 +273524,7 @@
deprecated="not deprecated"
visibility="public"
>
<parameter name="d
e
st" type="short[]">
<parameter name="dst" type="short[]">
</parameter>
</method>
<method name="get"
...
...
@@ -273537,7 +273537,7 @@
deprecated="not deprecated"
visibility="public"
>
<parameter name="d
e
st" type="short[]">
<parameter name="dst" type="short[]">
</parameter>
<parameter name="off" type="int">
</parameter>
...
...
@@ -284432,7 +284432,7 @@
</constructor>
</class>
<class name="UnrecoverableKeyException"
extends="java.security.
GeneralSecurit
yException"
extends="java.security.
UnrecoverableEntr
yException"
abstract="false"
static="false"
final="false"
This diff is collapsed.
Click to expand it.
core/java/android/net/SSLCertificateSocketFactory.java
View file @
5e8a587d
...
...
@@ -46,9 +46,9 @@ import javax.net.ssl.TrustManager;
import
javax.net.ssl.TrustManagerFactory
;
import
javax.net.ssl.X509TrustManager
;
import
org.apache.harmony.xnet.provider.jsse.OpenSSLContextImpl
;
import
org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl
;
import
org.apache.harmony.xnet.provider.jsse.SSLClientSessionCache
;
import
org.apache.harmony.xnet.provider.jsse.SSLContextImpl
;
import
org.apache.harmony.xnet.provider.jsse.SSLParameters
;
/**
...
...
@@ -210,7 +210,7 @@ public class SSLCertificateSocketFactory extends SSLSocketFactory {
private
SSLSocketFactory
makeSocketFactory
(
TrustManager
[]
trustManagers
)
{
try
{
SSLContextImpl
sslContext
=
new
SSLContextImpl
();
Open
SSLContextImpl
sslContext
=
new
Open
SSLContextImpl
();
sslContext
.
engineInit
(
null
,
trustManagers
,
null
,
mSessionCache
,
null
);
return
sslContext
.
engineGetSocketFactory
();
}
catch
(
KeyManagementException
e
)
{
...
...
This diff is collapsed.
Click to expand it.
core/java/android/net/http/HttpsConnection.java
View file @
5e8a587d
...
...
@@ -19,8 +19,8 @@ package android.net.http;
import
android.content.Context
;
import
android.util.Log
;
import
org.apache.harmony.xnet.provider.jsse.FileClientSessionCache
;
import
org.apache.harmony.xnet.provider.jsse.OpenSSLContextImpl
;
import
org.apache.harmony.xnet.provider.jsse.SSLClientSessionCache
;
import
org.apache.harmony.xnet.provider.jsse.SSLContextImpl
;
import
org.apache.http.Header
;
import
org.apache.http.HttpException
;
import
org.apache.http.HttpHost
;
...
...
@@ -79,7 +79,7 @@ public class HttpsConnection extends Connection {
cache
=
FileClientSessionCache
.
usingDirectory
(
sessionDir
);
}
SSLContextImpl
sslContext
=
new
SSLContextImpl
();
Open
SSLContextImpl
sslContext
=
new
Open
SSLContextImpl
();
// here, trust managers is a single trust-all manager
TrustManager
[]
trustManagers
=
new
TrustManager
[]
{
...
...
This diff is collapsed.
Click to expand it.
core/tests/coretests/Android.mk
View file @
5e8a587d
...
...
@@ -13,7 +13,9 @@ LOCAL_SRC_FILES := \
LOCAL_STATIC_JAVA_LIBRARIES
+=
android-common
LOCAL_JAVA_LIBRARIES
:=
android.test.runner
LOCAL_DX_FLAGS
:=
--core-library
LOCAL_STATIC_JAVA_LIBRARIES
:=
core-tests-supportlib
LOCAL_JAVA_LIBRARIES
:=
android.test.runner android-common
LOCAL_PACKAGE_NAME
:=
FrameworksCoreTests
LOCAL_CERTIFICATE
:=
platform
...
...
This diff is collapsed.
Click to expand it.
core/tests/coretests/src/android/net/http/HttpsThroughHttpProxyTest.java
0 → 100644
View file @
5e8a587d
/*
* Copyright (C) 2010 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
android.net.http
;
import
java.io.IOException
;
import
java.io.InputStreamReader
;
import
java.io.Reader
;
import
java.io.StringWriter
;
import
java.util.Arrays
;
import
java.util.List
;
import
javax.net.ssl.TestSSLContext
;
import
junit.framework.TestCase
;
import
org.apache.http.HttpHost
;
import
org.apache.http.HttpResponse
;
import
org.apache.http.client.HttpClient
;
import
org.apache.http.client.methods.HttpGet
;
import
org.apache.http.conn.params.ConnRoutePNames
;
import
org.apache.http.conn.scheme.Scheme
;
import
org.apache.http.conn.ssl.AllowAllHostnameVerifier
;
import
org.apache.http.conn.ssl.SSLSocketFactory
;
import
org.apache.http.impl.client.DefaultHttpClient
;
import
tests.http.MockResponse
;
import
tests.http.MockWebServer
;
import
tests.http.RecordedRequest
;
public
class
HttpsThroughHttpProxyTest
extends
TestCase
{
public
void
testConnectViaHttps
()
throws
IOException
,
InterruptedException
{
TestSSLContext
testSSLContext
=
TestSSLContext
.
create
();
MockWebServer
server
=
new
MockWebServer
();
server
.
useHttps
(
testSSLContext
.
serverContext
.
getSocketFactory
(),
false
);
server
.
enqueue
(
new
MockResponse
()
.
setResponseCode
(
200
)
.
setBody
(
"this response comes via HTTPS"
));
server
.
play
();
HttpClient
httpClient
=
new
DefaultHttpClient
();
SSLSocketFactory
sslSocketFactory
=
new
SSLSocketFactory
(
testSSLContext
.
clientContext
.
getSocketFactory
());
sslSocketFactory
.
setHostnameVerifier
(
new
AllowAllHostnameVerifier
());
httpClient
.
getConnectionManager
().
getSchemeRegistry
()
.
register
(
new
Scheme
(
"https"
,
sslSocketFactory
,
server
.
getPort
()));
HttpResponse
response
=
httpClient
.
execute
(
new
HttpGet
(
"https://localhost:"
+
server
.
getPort
()
+
"/foo"
));
assertEquals
(
"this response comes via HTTPS"
,
contentToString
(
response
));
RecordedRequest
request
=
server
.
takeRequest
();
assertEquals
(
"GET /foo HTTP/1.1"
,
request
.
getRequestLine
());
}
/**
* http://code.google.com/p/android/issues/detail?id=2690
*/
public
void
testConnectViaProxy
()
throws
IOException
,
InterruptedException
{
MockWebServer
proxy
=
new
MockWebServer
();
MockResponse
mockResponse
=
new
MockResponse
()
.
setResponseCode
(
200
)
.
setBody
(
"this response comes via a proxy"
);
proxy
.
enqueue
(
mockResponse
);
proxy
.
play
();
HttpClient
httpProxyClient
=
new
DefaultHttpClient
();
httpProxyClient
.
getParams
().
setParameter
(
ConnRoutePNames
.
DEFAULT_PROXY
,
new
HttpHost
(
"localhost"
,
proxy
.
getPort
()));
HttpResponse
response
=
httpProxyClient
.
execute
(
new
HttpGet
(
"http://android.com/foo"
));
assertEquals
(
"this response comes via a proxy"
,
contentToString
(
response
));
RecordedRequest
request
=
proxy
.
takeRequest
();
assertEquals
(
"GET http://android.com/foo HTTP/1.1"
,
request
.
getRequestLine
());
assertContains
(
request
.
getHeaders
(),
"Host: android.com"
);
}
public
void
testConnectViaHttpProxyToHttps
()
throws
IOException
,
InterruptedException
{
TestSSLContext
testSSLContext
=
TestSSLContext
.
create
();
MockWebServer
proxy
=
new
MockWebServer
();
proxy
.
useHttps
(
testSSLContext
.
serverContext
.
getSocketFactory
(),
true
);
MockResponse
connectResponse
=
new
MockResponse
()
.
setResponseCode
(
200
);
connectResponse
.
getHeaders
().
clear
();
proxy
.
enqueue
(
connectResponse
);
proxy
.
enqueue
(
new
MockResponse
()
.
setResponseCode
(
200
)
.
setBody
(
"this response comes via a secure proxy"
));
proxy
.
play
();
HttpClient
httpProxyClient
=
new
DefaultHttpClient
();
HttpHost
proxyHost
=
new
HttpHost
(
"localhost"
,
proxy
.
getPort
());
httpProxyClient
.
getParams
().
setParameter
(
ConnRoutePNames
.
DEFAULT_PROXY
,
proxyHost
);
SSLSocketFactory
sslSocketFactory
=
new
SSLSocketFactory
(
testSSLContext
.
clientContext
.
getSocketFactory
());
sslSocketFactory
.
setHostnameVerifier
(
new
AllowAllHostnameVerifier
());
httpProxyClient
.
getConnectionManager
().
getSchemeRegistry
()
.
register
(
new
Scheme
(
"https"
,
sslSocketFactory
,
443
));
HttpResponse
response
=
httpProxyClient
.
execute
(
new
HttpGet
(
"https://android.com/foo"
));
assertEquals
(
"this response comes via a secure proxy"
,
contentToString
(
response
));
RecordedRequest
connect
=
proxy
.
takeRequest
();
assertEquals
(
"Connect line failure on proxy "
+
proxyHost
.
toHostString
(),
"CONNECT android.com:443 HTTP/1.1"
,
connect
.
getRequestLine
());
assertContains
(
connect
.
getHeaders
(),
"Host: android.com"
);
RecordedRequest
get
=
proxy
.
takeRequest
();
assertEquals
(
"GET /foo HTTP/1.1"
,
get
.
getRequestLine
());
assertContains
(
get
.
getHeaders
(),
"Host: android.com"
);
}
private
void
assertContains
(
List
<
String
>
headers
,
String
header
)
{
assertTrue
(
headers
.
toString
(),
headers
.
contains
(
header
));
}
private
String
contentToString
(
HttpResponse
response
)
throws
IOException
{
StringWriter
writer
=
new
StringWriter
();
char
[]
buffer
=
new
char
[
1024
];
Reader
reader
=
new
InputStreamReader
(
response
.
getEntity
().
getContent
());
int
length
;
while
((
length
=
reader
.
read
(
buffer
))
!=
-
1
)
{
writer
.
write
(
buffer
,
0
,
length
);
}
reader
.
close
();
return
writer
.
toString
();
}
}
This diff is collapsed.
Click to expand it.
tests/CoreTests/android/core/SSLPerformanceTest.java
View file @
5e8a587d
...
...
@@ -19,8 +19,8 @@ package android.core;
import
android.test.AndroidTestCase
;
import
android.os.Debug
;
import
org.apache.harmony.xnet.provider.jsse.FileClientSessionCache
;
import
org.apache.harmony.xnet.provider.jsse.OpenSSLContextImpl
;
import
org.apache.harmony.xnet.provider.jsse.SSLClientSessionCache
;
import
org.apache.harmony.xnet.provider.jsse.SSLContextImpl
;
import
org.apache.http.conn.scheme.SchemeRegistry
;
import
org.apache.http.conn.scheme.Scheme
;
import
org.apache.http.conn.ClientConnectionManager
;
...
...
@@ -189,14 +189,14 @@ public class SSLPerformanceTest extends AndroidTestCase {
public
void
testEngineInit
()
throws
IOException
,
KeyManagementException
{
Stopwatch
stopwatch
=
new
Stopwatch
();
new
SSLContextImpl
().
engineInit
(
null
,
null
,
null
);
new
Open
SSLContextImpl
().
engineInit
(
null
,
null
,
null
);
stopwatch
.
stop
();
}
public
void
testWebRequestWithoutCache
()
throws
IOException
,
KeyManagementException
{
SSLContextImpl
sslContext
=
new
SSLContextImpl
();
Open
SSLContextImpl
sslContext
=
new
Open
SSLContextImpl
();
sslContext
.
engineInit
(
null
,
null
,
null
);
Stopwatch
stopwatch
=
new
Stopwatch
();
...
...
@@ -210,7 +210,7 @@ public class SSLPerformanceTest extends AndroidTestCase {
KeyManagementException
{
deleteDirectory
();
SSLContextImpl
sslContext
=
new
SSLContextImpl
();
Open
SSLContextImpl
sslContext
=
new
Open
SSLContextImpl
();
sslContext
.
engineInit
(
null
,
null
,
null
,
FileClientSessionCache
.
usingDirectory
(
getCacheDirectory
()),
null
);
...
...
@@ -234,7 +234,7 @@ public class SSLPerformanceTest extends AndroidTestCase {
KeyManagementException
{
deleteDirectory
();
SSLContextImpl
sslContext
=
new
SSLContextImpl
();
Open
SSLContextImpl
sslContext
=
new
Open
SSLContextImpl
();
sslContext
.
engineInit
(
null
,
null
,
null
);
// Make sure www.google.com is in the cache.
...
...
@@ -247,7 +247,7 @@ public class SSLPerformanceTest extends AndroidTestCase {
stopwatch
.
stop
();
}
private
void
getVerisignDotCom
(
SSLContextImpl
sslContext
)
private
void
getVerisignDotCom
(
Open
SSLContextImpl
sslContext
)
throws
IOException
{
SchemeRegistry
schemeRegistry
=
new
SchemeRegistry
();
schemeRegistry
.
register
(
new
Scheme
(
"https"
,
...
...
This diff is collapsed.
Click to expand it.
tests/CoreTests/android/core/SSLSocketTest.java
View file @
5e8a587d
...
...
@@ -19,9 +19,9 @@ package android.core;
import
junit.framework.TestCase
;
import
org.apache.commons.codec.binary.Base64
;
import
org.apache.harmony.xnet.provider.jsse.SSLContextImpl
;
import
org.apache.harmony.xnet.provider.jsse.SSLClientSessionCache
;
import
org.apache.harmony.xnet.provider.jsse.FileClientSessionCache
;
import
org.apache.harmony.xnet.provider.jsse.OpenSSLContextImpl
;
import
org.apache.harmony.xnet.provider.jsse.SSLClientSessionCache
;
import
java.io.ByteArrayInputStream
;
import
java.io.DataInputStream
;
...
...
@@ -907,7 +907,7 @@ public class SSLSocketTest extends TestCase {
*/
public
void
testClientSessionCaching
()
throws
IOException
,
KeyManagementException
{
SSLContextImpl
context
=
new
SSLContextImpl
();
Open
SSLContextImpl
context
=
new
Open
SSLContextImpl
();
// Cache size = 2.
FakeClientSessionCache
fakeCache
=
new
FakeClientSessionCache
();
...
...
@@ -997,7 +997,7 @@ public class SSLSocketTest extends TestCase {
public
void
testFileBasedClientSessionCache
()
throws
IOException
,
KeyManagementException
{
SSLContextImpl
context
=
new
SSLContextImpl
();
Open
SSLContextImpl
context
=
new
Open
SSLContextImpl
();
String
tmpDir
=
System
.
getProperty
(
"java.io.tmpdir"
);
if
(
tmpDir
==
null
)
{
fail
(
"Please set 'java.io.tmpdir' system property."
);
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment