EMMA Coverage Report (generated Fri Aug 23 16:39:17 PDT 2013)
[all classes][org.chromium.android_webview.test]

COVERAGE SUMMARY FOR SOURCE FILE [AwQuotaManagerBridgeTest.java]

nameclass, %method, %block, %line, %
AwQuotaManagerBridgeTest.java85%  (11/13)88%  (35/40)81%  (450/557)78%  (83.8/108)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class AwQuotaManagerBridgeTest$30%   (0/1)0%   (0/2)0%   (0/21)0%   (0/3)
AwQuotaManagerBridgeTest$3 (AwQuotaManagerBridgeTest, AwQuotaManagerBridge, A... 0%   (0/1)0%   (0/12)0%   (0/1)
run (): void 0%   (0/1)0%   (0/9)0%   (0/2)
     
class AwQuotaManagerBridgeTest$3$10%   (0/1)0%   (0/2)0%   (0/13)0%   (0/3)
AwQuotaManagerBridgeTest$3$1 (AwQuotaManagerBridgeTest$3): void 0%   (0/1)0%   (0/6)0%   (0/1)
onReceiveValue (Long): void 0%   (0/1)0%   (0/7)0%   (0/2)
     
class AwQuotaManagerBridgeTest$9100% (1/1)100% (2/2)74%  (14/19)45%  (1.8/4)
isSatisfied (): boolean 100% (1/1)62%  (8/13)27%  (0.8/3)
AwQuotaManagerBridgeTest$9 (AwQuotaManagerBridgeTest): void 100% (1/1)100% (6/6)100% (1/1)
     
class AwQuotaManagerBridgeTest$LongValueCallbackHelper100% (1/1)100% (5/5)81%  (26/32)90%  (5.4/6)
getValue (): long 100% (1/1)67%  (8/12)78%  (1.6/2)
<static initializer> 100% (1/1)75%  (6/8)75%  (0.8/1)
AwQuotaManagerBridgeTest$LongValueCallbackHelper (): void 100% (1/1)100% (3/3)100% (1/1)
AwQuotaManagerBridgeTest$LongValueCallbackHelper (AwQuotaManagerBridgeTest$1)... 100% (1/1)100% (3/3)100% (1/1)
notifyCalled (long): void 100% (1/1)100% (6/6)100% (3/3)
     
class AwQuotaManagerBridgeTest100% (1/1)92%  (12/13)84%  (265/315)89%  (65.6/74)
getQuotaForOrigin (String): long 0%   (0/1)0%   (0/26)0%   (0/6)
testGetResultsMatch (): void 100% (1/1)58%  (33/57)73%  (6.6/9)
AwQuotaManagerBridgeTest (): void 100% (1/1)100% (3/3)100% (2/2)
access$100 (AwQuotaManagerBridgeTest): String 100% (1/1)100% (3/3)100% (1/1)
access$200 (AwQuotaManagerBridgeTest, String): long 100% (1/1)100% (4/4)100% (1/1)
deleteAllData (): void 100% (1/1)100% (12/12)100% (3/3)
deleteOrigin (String): void 100% (1/1)100% (13/13)100% (3/3)
getUsageForOrigin (String): long 100% (1/1)100% (27/27)100% (6/6)
setUp (): void 100% (1/1)100% (47/47)100% (12/12)
tearDown (): void 100% (1/1)100% (11/11)100% (5/5)
testDeleteAllWithAppCache (): void 100% (1/1)100% (25/25)100% (7/7)
testDeleteOriginWithAppCache (): void 100% (1/1)100% (27/27)100% (7/7)
useAppCache (): void 100% (1/1)100% (60/60)100% (14/14)
     
class AwQuotaManagerBridgeTest$5100% (1/1)100% (2/2)86%  (19/22)50%  (2/4)
isSatisfied (): boolean 100% (1/1)81%  (13/16)33%  (1/3)
AwQuotaManagerBridgeTest$5 (AwQuotaManagerBridgeTest): void 100% (1/1)100% (6/6)100% (1/1)
     
class AwQuotaManagerBridgeTest$6100% (1/1)100% (2/2)86%  (19/22)50%  (2/4)
isSatisfied (): boolean 100% (1/1)81%  (13/16)33%  (1/3)
AwQuotaManagerBridgeTest$6 (AwQuotaManagerBridgeTest): void 100% (1/1)100% (6/6)100% (1/1)
     
class AwQuotaManagerBridgeTest$7100% (1/1)100% (2/2)86%  (19/22)50%  (2/4)
isSatisfied (): boolean 100% (1/1)81%  (13/16)33%  (1/3)
AwQuotaManagerBridgeTest$7 (AwQuotaManagerBridgeTest): void 100% (1/1)100% (6/6)100% (1/1)
     
class AwQuotaManagerBridgeTest$8100% (1/1)100% (2/2)86%  (19/22)50%  (2/4)
isSatisfied (): boolean 100% (1/1)81%  (13/16)33%  (1/3)
AwQuotaManagerBridgeTest$8 (AwQuotaManagerBridgeTest): void 100% (1/1)100% (6/6)100% (1/1)
     
class AwQuotaManagerBridgeTest$1100% (1/1)100% (2/2)100% (13/13)100% (3/3)
AwQuotaManagerBridgeTest$1 (AwQuotaManagerBridgeTest, AwQuotaManagerBridge): ... 100% (1/1)100% (9/9)100% (1/1)
run (): void 100% (1/1)100% (4/4)100% (2/2)
     
class AwQuotaManagerBridgeTest$2100% (1/1)100% (2/2)100% (18/18)100% (3/3)
AwQuotaManagerBridgeTest$2 (AwQuotaManagerBridgeTest, AwQuotaManagerBridge, S... 100% (1/1)100% (12/12)100% (1/1)
run (): void 100% (1/1)100% (6/6)100% (2/2)
     
class AwQuotaManagerBridgeTest$4100% (1/1)100% (2/2)100% (25/25)100% (3/3)
AwQuotaManagerBridgeTest$4 (AwQuotaManagerBridgeTest, AwQuotaManagerBridge, S... 100% (1/1)100% (15/15)100% (1/1)
run (): void 100% (1/1)100% (10/10)100% (2/2)
     
class AwQuotaManagerBridgeTest$4$1100% (1/1)100% (2/2)100% (13/13)100% (3/3)
AwQuotaManagerBridgeTest$4$1 (AwQuotaManagerBridgeTest$4): void 100% (1/1)100% (6/6)100% (1/1)
onReceiveValue (Long): void 100% (1/1)100% (7/7)100% (2/2)

1// Copyright (c) 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4 
5package org.chromium.android_webview.test;
6 
7import android.test.suitebuilder.annotation.LargeTest;
8import android.util.Pair;
9import android.webkit.ValueCallback;
10 
11import org.chromium.android_webview.AwContents;
12import org.chromium.android_webview.AwQuotaManagerBridge;
13import org.chromium.android_webview.AwSettings;
14import org.chromium.android_webview.test.util.AwQuotaManagerBridgeTestUtil;
15import org.chromium.base.test.util.Feature;
16import org.chromium.content.browser.test.util.CallbackHelper;
17import org.chromium.content.browser.test.util.Criteria;
18import org.chromium.content.browser.test.util.CriteriaHelper;
19import org.chromium.net.test.util.TestWebServer;
20 
21import java.util.ArrayList;
22import java.util.concurrent.Callable;
23import java.util.List;
24 
25public class AwQuotaManagerBridgeTest extends AwTestBase {
26    private TestAwContentsClient mContentsClient;
27    private AwTestContainerView mTestView;
28    private AwContents mAwContents;
29    private TestWebServer mWebServer;
30    private String mOrigin;
31 
32    @Override
33    public void setUp() throws Exception {
34        super.setUp();
35        mContentsClient = new TestAwContentsClient();
36        mTestView = createAwTestContainerViewOnMainSync(mContentsClient);
37        mAwContents = mTestView.getAwContents();
38        mWebServer = new TestWebServer(false);
39        mOrigin = mWebServer.getBaseUrl();
40 
41        AwSettings settings = getAwSettingsOnUiThread(mAwContents);
42        settings.setJavaScriptEnabled(true);
43        settings.setDomStorageEnabled(true);
44        settings.setAppCacheEnabled(true);
45        settings.setAppCachePath("whatever");  // Enables AppCache.
46    }
47 
48    @Override
49    public void tearDown() throws Exception {
50        deleteAllData();
51        if (mWebServer != null) {
52            mWebServer.shutdown();
53        }
54        super.tearDown();
55    }
56 
57    private void deleteAllData() throws Exception {
58        final AwQuotaManagerBridge bridge =
59                AwQuotaManagerBridgeTestUtil.getQuotaManagerBridge(this);
60        getInstrumentation().runOnMainSync(new Runnable() {
61            @Override
62            public void run() {
63                bridge.deleteAllData();
64            }
65        });
66    }
67 
68    private void deleteOrigin(final String origin) throws Exception {
69        final AwQuotaManagerBridge bridge =
70                AwQuotaManagerBridgeTestUtil.getQuotaManagerBridge(this);
71        getInstrumentation().runOnMainSync(new Runnable() {
72            @Override
73            public void run() {
74                bridge.deleteOrigin(origin);
75            }
76        });
77    }
78 
79    private static class LongValueCallbackHelper extends CallbackHelper {
80        private long mValue;
81 
82        public void notifyCalled(long value) {
83            mValue = value;
84            notifyCalled();
85        }
86 
87        public long getValue() {
88            assert getCallCount() > 0;
89            return mValue;
90        }
91    }
92 
93    private long getQuotaForOrigin(final String origin) throws Exception {
94        final LongValueCallbackHelper callbackHelper = new LongValueCallbackHelper();
95        final AwQuotaManagerBridge bridge =
96                AwQuotaManagerBridgeTestUtil.getQuotaManagerBridge(this);
97 
98        int callCount = callbackHelper.getCallCount();
99        getInstrumentation().runOnMainSync(new Runnable() {
100            @Override
101            public void run() {
102                bridge.getQuotaForOrigin("foo.com",
103                    new ValueCallback<Long>() {
104                        @Override
105                        public void onReceiveValue(Long quota) {
106                            callbackHelper.notifyCalled(quota);
107                        }
108                    }
109                );
110            }
111        });
112        callbackHelper.waitForCallback(callCount);
113 
114        return callbackHelper.getValue();
115    }
116 
117    private long getUsageForOrigin(final String origin) throws Exception {
118        final LongValueCallbackHelper callbackHelper = new LongValueCallbackHelper();
119        final AwQuotaManagerBridge bridge =
120                AwQuotaManagerBridgeTestUtil.getQuotaManagerBridge(this);
121 
122        int callCount = callbackHelper.getCallCount();
123        getInstrumentation().runOnMainSync(new Runnable() {
124            @Override
125            public void run() {
126                bridge.getUsageForOrigin(origin,
127                    new ValueCallback<Long>() {
128                        @Override
129                        public void onReceiveValue(Long usage) {
130                            callbackHelper.notifyCalled(usage);
131                        }
132                    }
133                );
134            }
135        });
136        callbackHelper.waitForCallback(callCount);
137 
138        return callbackHelper.getValue();
139    }
140 
141    private void useAppCache() throws Exception {
142        final String CACHED_FILE_PATH = "/foo.js";
143        final String CACHED_FILE_CONTENTS = "1 + 1;";
144        mWebServer.setResponse(CACHED_FILE_PATH, CACHED_FILE_CONTENTS, null);
145 
146        final String MANIFEST_PATH = "/foo.manifest";
147        final String MANIFEST_CONTENTS = "CACHE MANIFEST\nCACHE:\n" + CACHED_FILE_PATH;
148        List<Pair<String, String>> manifestHeaders = new ArrayList<Pair<String, String>>();
149        manifestHeaders.add(Pair.create("Content-Disposition", "text/cache-manifest"));
150        mWebServer.setResponse(MANIFEST_PATH, MANIFEST_CONTENTS, manifestHeaders);
151 
152        final String PAGE_PATH = "/appcache.html";
153        final String PAGE_CONTENTS = "<html manifest=\"" + MANIFEST_PATH + "\">" +
154                "<head><script src=\"" + CACHED_FILE_PATH + "\"></script></head></html>";
155        String url = mWebServer.setResponse(PAGE_PATH, PAGE_CONTENTS, null);
156 
157        loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(), url);
158        executeJavaScriptAndWaitForResult(mAwContents, mContentsClient,
159              "window.applicationCache.update();");
160    }
161 
162    @LargeTest
163    @Feature({"AndroidWebView", "WebStore"})
164    public void testDeleteAllWithAppCache() throws Exception {
165        long currentUsage = getUsageForOrigin(mOrigin);
166        assertEquals(0, currentUsage);
167 
168        useAppCache();
169        assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
170            @Override
171            public boolean isSatisfied() {
172                try {
173                    return getUsageForOrigin(mOrigin) > 0;
174                } catch (Exception e) {
175                    return false;
176                }
177            }
178        }));
179 
180        deleteAllData();
181        assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
182            @Override
183            public boolean isSatisfied() {
184                try {
185                    return getUsageForOrigin(mOrigin) == 0;
186                } catch (Exception e) {
187                    return false;
188                }
189            }
190        }));
191    }
192 
193    @LargeTest
194    @Feature({"AndroidWebView", "WebStore"})
195    public void testDeleteOriginWithAppCache() throws Exception {
196        long currentUsage = getUsageForOrigin(mOrigin);
197        assertEquals(0, currentUsage);
198 
199        useAppCache();
200        assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
201            @Override
202            public boolean isSatisfied() {
203                try {
204                    return getUsageForOrigin(mOrigin) > 0;
205                } catch (Exception e) {
206                    return false;
207                }
208            }
209        }));
210 
211        deleteOrigin(mOrigin);
212        assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
213            @Override
214            public boolean isSatisfied() {
215                try {
216                    return getUsageForOrigin(mOrigin) == 0;
217                } catch (Exception e) {
218                    return false;
219                }
220            }
221        }));
222    }
223 
224    @LargeTest
225    @Feature({"AndroidWebView", "WebStore"})
226    public void testGetResultsMatch() throws Exception {
227        useAppCache();
228 
229        CriteriaHelper.pollForCriteria(new Criteria() {
230            @Override
231            public boolean isSatisfied() {
232                try {
233                    return AwQuotaManagerBridgeTestUtil.getOrigins(
234                                AwQuotaManagerBridgeTest.this).mOrigins.length > 0;
235                } catch (Exception e) {
236                    return false;
237                }
238            }
239        });
240 
241        AwQuotaManagerBridge.Origins origins = AwQuotaManagerBridgeTestUtil.getOrigins(this);
242        assertEquals(origins.mOrigins.length, origins.mUsages.length);
243        assertEquals(origins.mOrigins.length, origins.mQuotas.length);
244 
245        for (int i = 0; i < origins.mOrigins.length; ++i) {
246            assertEquals(origins.mUsages[i], getUsageForOrigin(origins.mOrigins[i]));
247            assertEquals(origins.mQuotas[i], getQuotaForOrigin(origins.mOrigins[i]));
248        }
249    }
250}

[all classes][org.chromium.android_webview.test]
EMMA 2.0.5312 (C) Vladimir Roubtsov