Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 package org.chromium.chrome.browser.offlinepages; | 5 package org.chromium.chrome.browser.offlinepages; |
| 6 | 6 |
| 7 import android.test.suitebuilder.annotation.MediumTest; | 7 import android.test.suitebuilder.annotation.SmallTest; |
| 8 | 8 |
| 9 import org.chromium.base.ThreadUtils; | 9 import org.chromium.base.ThreadUtils; |
| 10 import org.chromium.chrome.browser.ChromeActivity; | 10 import org.chromium.chrome.browser.ChromeActivity; |
| 11 import org.chromium.chrome.browser.offlinepages.OfflinePageBridge.DeletePageCall back; | 11 import org.chromium.chrome.browser.offlinepages.OfflinePageBridge.DeletePageCall back; |
| 12 import org.chromium.chrome.browser.offlinepages.OfflinePageBridge.OfflinePageMod elObserver; | 12 import org.chromium.chrome.browser.offlinepages.OfflinePageBridge.OfflinePageMod elObserver; |
| 13 import org.chromium.chrome.browser.offlinepages.OfflinePageBridge.SavePageCallba ck; | 13 import org.chromium.chrome.browser.offlinepages.OfflinePageBridge.SavePageCallba ck; |
| 14 import org.chromium.chrome.browser.profiles.Profile; | 14 import org.chromium.chrome.browser.profiles.Profile; |
| 15 import org.chromium.chrome.test.ChromeActivityTestCaseBase; | 15 import org.chromium.chrome.test.ChromeActivityTestCaseBase; |
| 16 import org.chromium.chrome.test.util.TestHttpServerClient; | 16 import org.chromium.chrome.test.util.TestHttpServerClient; |
| 17 import org.chromium.components.bookmarks.BookmarkId; | 17 import org.chromium.components.bookmarks.BookmarkId; |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 62 } | 62 } |
| 63 }); | 63 }); |
| 64 assertTrue(semaphore.tryAcquire(TIMEOUT_MS, TimeUnit.MILLISECONDS)); | 64 assertTrue(semaphore.tryAcquire(TIMEOUT_MS, TimeUnit.MILLISECONDS)); |
| 65 } | 65 } |
| 66 | 66 |
| 67 @Override | 67 @Override |
| 68 public void startMainActivity() throws InterruptedException { | 68 public void startMainActivity() throws InterruptedException { |
| 69 startMainActivityOnBlankPage(); | 69 startMainActivityOnBlankPage(); |
| 70 } | 70 } |
| 71 | 71 |
| 72 @MediumTest | 72 @SmallTest |
| 73 public void testLoadOfflinePagesWhenEmpty() throws Exception { | 73 public void testLoadOfflinePagesWhenEmpty() throws Exception { |
| 74 List<OfflinePageItem> offlinePages = getAllPages(); | 74 List<OfflinePageItem> offlinePages = getAllPages(); |
| 75 assertEquals("Offline pages count incorrect.", 0, offlinePages.size()); | 75 assertEquals("Offline pages count incorrect.", 0, offlinePages.size()); |
| 76 } | 76 } |
| 77 | 77 |
| 78 @MediumTest | 78 @SmallTest |
| 79 public void testAddOfflinePageAndLoad() throws Exception { | 79 public void testAddOfflinePageAndLoad() throws Exception { |
| 80 loadUrl(TEST_PAGE); | 80 loadUrl(TEST_PAGE); |
| 81 savePage(SavePageResult.SUCCESS, TEST_PAGE); | 81 savePage(SavePageResult.SUCCESS, TEST_PAGE); |
| 82 List<OfflinePageItem> allPages = getAllPages(); | 82 List<OfflinePageItem> allPages = getAllPages(); |
| 83 OfflinePageItem offlinePage = allPages.get(0); | 83 OfflinePageItem offlinePage = allPages.get(0); |
| 84 assertEquals("Offline pages count incorrect.", 1, allPages.size()); | 84 assertEquals("Offline pages count incorrect.", 1, allPages.size()); |
| 85 assertEquals("Offline page item url incorrect.", TEST_PAGE, offlinePage. getUrl()); | 85 assertEquals("Offline page item url incorrect.", TEST_PAGE, offlinePage. getUrl()); |
| 86 assertEquals("Offline page item bookmark ID incorrect.", BOOKMARK_ID, | 86 assertEquals("Offline page item bookmark ID incorrect.", BOOKMARK_ID, |
| 87 offlinePage.getBookmarkId()); | 87 offlinePage.getBookmarkId()); |
| 88 assertTrue("Offline page item offline file url doesn't start properly.", | 88 assertTrue("Offline page item offline file url doesn't start properly.", |
| 89 offlinePage.getOfflineUrl().startsWith("file:///")); | 89 offlinePage.getOfflineUrl().startsWith("file:///")); |
| 90 assertTrue("Offline page item offline file doesn't have the right name." , | 90 assertTrue("Offline page item offline file doesn't have the right name." , |
| 91 offlinePage.getOfflineUrl().endsWith(".mhtml")); | 91 offlinePage.getOfflineUrl().endsWith(".mhtml")); |
| 92 assertTrue("Offline page item offline file doesn't have the right name." , | 92 assertTrue("Offline page item offline file doesn't have the right name." , |
| 93 offlinePage.getOfflineUrl().contains("About")); | 93 offlinePage.getOfflineUrl().contains("About")); |
| 94 | 94 |
| 95 // We don't care about the exact file size of the mhtml file: | 95 // We don't care about the exact file size of the mhtml file: |
| 96 // - exact file size is not something that the end user sees or cares ab out | 96 // - exact file size is not something that the end user sees or cares ab out |
| 97 // - exact file size can vary based on external factors (i.e. see crbug. com/518758) | 97 // - exact file size can vary based on external factors (i.e. see crbug. com/518758) |
| 98 // - verification of contents of the resulting mhtml file should be cove red by mhtml | 98 // - verification of contents of the resulting mhtml file should be cove red by mhtml |
| 99 // serialization tests (i.e. save_page_browsertest.cc) | 99 // serialization tests (i.e. save_page_browsertest.cc) |
| 100 // - we want to avoid overtesting and artificially requiring specific fo rmatting and/or | 100 // - we want to avoid overtesting and artificially requiring specific fo rmatting and/or |
| 101 // implementation choices in the mhtml serialization code | 101 // implementation choices in the mhtml serialization code |
| 102 // OTOH, it still seems useful to assert that the file is not empty and that its size is in | 102 // OTOH, it still seems useful to assert that the file is not empty and that its size is in |
| 103 // the right ballpark. | 103 // the right ballpark. |
| 104 long size = offlinePage.getFileSize(); | 104 long size = offlinePage.getFileSize(); |
| 105 assertTrue("Offline page item size is incorrect: " + size, 600 < size && size < 800); | 105 assertTrue("Offline page item size is incorrect: " + size, 600 < size && size < 800); |
| 106 } | 106 } |
| 107 | 107 |
| 108 @MediumTest | 108 @SmallTest |
| 109 public void testMarkPageAccessed() throws Exception { | 109 public void testMarkPageAccessed() throws Exception { |
| 110 loadUrl(TEST_PAGE); | 110 loadUrl(TEST_PAGE); |
| 111 savePage(SavePageResult.SUCCESS, TEST_PAGE); | 111 savePage(SavePageResult.SUCCESS, TEST_PAGE); |
| 112 OfflinePageItem offlinePage = mOfflinePageBridge.getPageByBookmarkId(BOO KMARK_ID); | 112 OfflinePageItem offlinePage = mOfflinePageBridge.getPageByBookmarkId(BOO KMARK_ID); |
| 113 assertNotNull("Offline page should be available, but it is not.", offlin ePage); | 113 assertNotNull("Offline page should be available, but it is not.", offlin ePage); |
| 114 assertEquals("Offline page access count should be 0.", 0, offlinePage.ge tAccessCount()); | 114 assertEquals("Offline page access count should be 0.", 0, offlinePage.ge tAccessCount()); |
| 115 | 115 |
| 116 markPageAccessed(BOOKMARK_ID, 1); | 116 markPageAccessed(BOOKMARK_ID, 1); |
| 117 } | 117 } |
| 118 | 118 |
| 119 @MediumTest | 119 @SmallTest |
| 120 public void testGetPageByBookmarkId() throws Exception { | 120 public void testGetPageByBookmarkId() throws Exception { |
| 121 loadUrl(TEST_PAGE); | 121 loadUrl(TEST_PAGE); |
| 122 savePage(SavePageResult.SUCCESS, TEST_PAGE); | 122 savePage(SavePageResult.SUCCESS, TEST_PAGE); |
| 123 OfflinePageItem offlinePage = mOfflinePageBridge.getPageByBookmarkId(BOO KMARK_ID); | 123 OfflinePageItem offlinePage = mOfflinePageBridge.getPageByBookmarkId(BOO KMARK_ID); |
| 124 assertEquals("Offline page item url incorrect.", TEST_PAGE, offlinePage. getUrl()); | 124 assertEquals("Offline page item url incorrect.", TEST_PAGE, offlinePage. getUrl()); |
| 125 assertEquals("Offline page item bookmark ID incorrect.", BOOKMARK_ID, | 125 assertEquals("Offline page item bookmark ID incorrect.", BOOKMARK_ID, |
| 126 offlinePage.getBookmarkId()); | 126 offlinePage.getBookmarkId()); |
| 127 assertTrue("Offline page item offline file url doesn't start properly.", | 127 assertTrue("Offline page item offline file url doesn't start properly.", |
| 128 offlinePage.getOfflineUrl().startsWith("file:///")); | 128 offlinePage.getOfflineUrl().startsWith("file:///")); |
| 129 assertTrue("Offline page item offline file doesn't have the right name." , | 129 assertTrue("Offline page item offline file doesn't have the right name." , |
| 130 offlinePage.getOfflineUrl().endsWith(".mhtml")); | 130 offlinePage.getOfflineUrl().endsWith(".mhtml")); |
| 131 assertTrue("Offline page item offline file doesn't have the right name." , | 131 assertTrue("Offline page item offline file doesn't have the right name." , |
| 132 offlinePage.getOfflineUrl().contains("About")); | 132 offlinePage.getOfflineUrl().contains("About")); |
| 133 | 133 |
| 134 assertNull("Offline page is not supposed to exist", | 134 assertNull("Offline page is not supposed to exist", |
| 135 mOfflinePageBridge.getPageByBookmarkId(new BookmarkId(-42, Bookm arkType.NORMAL))); | 135 mOfflinePageBridge.getPageByBookmarkId(new BookmarkId(-42, Bookm arkType.NORMAL))); |
| 136 } | 136 } |
| 137 | 137 |
| 138 @MediumTest | 138 @SmallTest |
| 139 public void testDeleteOfflinePage() throws Exception { | 139 public void testDeleteOfflinePage() throws Exception { |
| 140 deletePage(BOOKMARK_ID, DeletePageResult.NOT_FOUND); | 140 deletePage(BOOKMARK_ID, DeletePageResult.NOT_FOUND); |
| 141 loadUrl(TEST_PAGE); | 141 loadUrl(TEST_PAGE); |
| 142 savePage(SavePageResult.SUCCESS, TEST_PAGE); | 142 savePage(SavePageResult.SUCCESS, TEST_PAGE); |
| 143 assertNotNull("Offline page should be available, but it is not.", | 143 assertNotNull("Offline page should be available, but it is not.", |
| 144 mOfflinePageBridge.getPageByBookmarkId(BOOKMARK_ID)); | 144 mOfflinePageBridge.getPageByBookmarkId(BOOKMARK_ID)); |
| 145 deletePage(BOOKMARK_ID, DeletePageResult.SUCCESS); | 145 deletePage(BOOKMARK_ID, DeletePageResult.SUCCESS); |
| 146 assertNull("Offline page should be gone, but it is available.", | 146 assertNull("Offline page should be gone, but it is available.", |
| 147 mOfflinePageBridge.getPageByBookmarkId(BOOKMARK_ID)); | 147 mOfflinePageBridge.getPageByBookmarkId(BOOKMARK_ID)); |
| 148 } | 148 } |
| 149 | 149 |
| 150 @SmallTest | |
| 151 public void testGetOfflineUrlForOnlineUrl() throws Exception { | |
| 152 loadUrl(TEST_PAGE); | |
| 153 savePage(SavePageResult.SUCCESS, TEST_PAGE); | |
| 154 OfflinePageItem offlinePage = mOfflinePageBridge.getPageByBookmarkId(BOO KMARK_ID); | |
| 155 assertEquals("We should get the same offline URL, when querying using on line URL", | |
| 156 offlinePage.getOfflineUrl(), | |
| 157 mOfflinePageBridge.getOfflineUrlForOnlineUrl(offlinePage.getUrl( ))); | |
| 158 } | |
| 159 | |
| 160 @SmallTest | |
| 161 public void testIsOfflniePageUrl() throws Exception { | |
|
newt (away)
2016/01/05 22:40:41
s/Offlnie/Offline/
fgorski
2016/01/07 17:12:49
Done.
| |
| 162 loadUrl(TEST_PAGE); | |
| 163 savePage(SavePageResult.SUCCESS, TEST_PAGE); | |
| 164 OfflinePageItem offlinePage = mOfflinePageBridge.getPageByBookmarkId(BOO KMARK_ID); | |
| 165 assertTrue("Offline URL of an offline page should clearly be an offline page URL", | |
| 166 mOfflinePageBridge.isOfflinePageUrl(offlinePage.getOfflineUrl()) ); | |
| 167 assertFalse("Online URL of an offline page should not be an offline page URL", | |
| 168 mOfflinePageBridge.isOfflinePageUrl(offlinePage.getUrl())); | |
| 169 } | |
| 170 | |
| 150 private void savePage(final int expectedResult, final String expectedUrl) | 171 private void savePage(final int expectedResult, final String expectedUrl) |
| 151 throws InterruptedException { | 172 throws InterruptedException { |
| 152 final Semaphore semaphore = new Semaphore(0); | 173 final Semaphore semaphore = new Semaphore(0); |
| 153 ThreadUtils.runOnUiThreadBlocking(new Runnable() { | 174 ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
| 154 @Override | 175 @Override |
| 155 public void run() { | 176 public void run() { |
| 156 assertNotNull("Tab is null", getActivity().getActivityTab()); | 177 assertNotNull("Tab is null", getActivity().getActivityTab()); |
| 157 assertEquals("URL does not match requested.", TEST_PAGE, | 178 assertEquals("URL does not match requested.", TEST_PAGE, |
| 158 getActivity().getActivityTab().getUrl()); | 179 getActivity().getActivityTab().getUrl()); |
| 159 assertNotNull("WebContents is null", | 180 assertNotNull("WebContents is null", |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 223 result.add(item); | 244 result.add(item); |
| 224 } | 245 } |
| 225 | 246 |
| 226 semaphore.release(); | 247 semaphore.release(); |
| 227 } | 248 } |
| 228 }); | 249 }); |
| 229 assertTrue(semaphore.tryAcquire(TIMEOUT_MS, TimeUnit.MILLISECONDS)); | 250 assertTrue(semaphore.tryAcquire(TIMEOUT_MS, TimeUnit.MILLISECONDS)); |
| 230 return result; | 251 return result; |
| 231 } | 252 } |
| 232 } | 253 } |
| OLD | NEW |