mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
179 lines
7.2 KiB
Java
179 lines
7.2 KiB
Java
package org.mozilla.gecko.tests;
|
|
|
|
import org.mozilla.gecko.*;
|
|
import org.mozilla.gecko.sync.Utils;
|
|
|
|
import com.jayway.android.robotium.solo.Condition;
|
|
|
|
import android.content.ContentResolver;
|
|
import android.content.ContentValues;
|
|
import android.content.ContentUris;
|
|
import android.database.Cursor;
|
|
import android.net.Uri;
|
|
import android.view.View;
|
|
import android.widget.ListAdapter;
|
|
import android.widget.ListView;
|
|
import android.widget.TextView;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.Arrays;
|
|
|
|
public class testBookmarkFolders extends AboutHomeTest {
|
|
private static String DESKTOP_BOOKMARK_URL;
|
|
|
|
@Override
|
|
protected int getTestType() {
|
|
return TEST_MOCHITEST;
|
|
}
|
|
|
|
public void testBookmarkFolders() {
|
|
DESKTOP_BOOKMARK_URL = getAbsoluteUrl(StringHelper.ROBOCOP_BLANK_PAGE_02_URL);
|
|
|
|
setUpDesktopBookmarks();
|
|
checkBookmarkList();
|
|
}
|
|
|
|
private void checkBookmarkList() {
|
|
openAboutHomeTab(AboutHomeTabs.BOOKMARKS);
|
|
waitForText(StringHelper.DESKTOP_FOLDER_LABEL);
|
|
clickOnBookmarkFolder(StringHelper.DESKTOP_FOLDER_LABEL);
|
|
waitForText(StringHelper.TOOLBAR_FOLDER_LABEL);
|
|
|
|
// Verify the number of folders displayed in the Desktop Bookmarks folder is correct
|
|
ListView desktopFolderContent = findListViewWithTag("bookmarks");
|
|
ListAdapter adapter = desktopFolderContent.getAdapter();
|
|
if (mDevice.type.equals("tablet")) { // On tablets it's 4 folders and 1 view for top padding
|
|
mAsserter.is(adapter.getCount(), 5, "Checking that the correct number of folders is displayed in the Desktop Bookmarks folder");
|
|
} else { // On phones it's just the 4 folders
|
|
mAsserter.is(adapter.getCount(), 4, "Checking that the correct number of folders is displayed in the Desktop Bookmarks folder");
|
|
}
|
|
|
|
clickOnBookmarkFolder(StringHelper.TOOLBAR_FOLDER_LABEL);
|
|
|
|
// Go up in the bookmark folder hierarchy
|
|
clickOnBookmarkFolder(StringHelper.TOOLBAR_FOLDER_LABEL);
|
|
mAsserter.ok(waitForText(StringHelper.BOOKMARKS_MENU_FOLDER_LABEL), "Going up in the folder hierarchy", "We are back in the Desktop Bookmarks folder");
|
|
|
|
clickOnBookmarkFolder(StringHelper.DESKTOP_FOLDER_LABEL);
|
|
mAsserter.ok(waitForText(StringHelper.DESKTOP_FOLDER_LABEL), "Going up in the folder hierarchy", "We are back in the main Bookmarks List View");
|
|
|
|
clickOnBookmarkFolder(StringHelper.DESKTOP_FOLDER_LABEL);
|
|
clickOnBookmarkFolder(StringHelper.TOOLBAR_FOLDER_LABEL);
|
|
isBookmarkDisplayed(DESKTOP_BOOKMARK_URL);
|
|
|
|
// Open the bookmark from a bookmark folder hierarchy
|
|
loadBookmark(DESKTOP_BOOKMARK_URL);
|
|
waitForText(StringHelper.ROBOCOP_BLANK_PAGE_02_TITLE);
|
|
verifyPageTitle(StringHelper.ROBOCOP_BLANK_PAGE_02_TITLE);
|
|
openAboutHomeTab(AboutHomeTabs.BOOKMARKS);
|
|
|
|
// Check that folders don't have a context menu
|
|
boolean success = waitForCondition(new Condition() {
|
|
@Override
|
|
public boolean isSatisfied() {
|
|
View desktopFolder = getBookmarkFolderView(StringHelper.DESKTOP_FOLDER_LABEL);
|
|
if (desktopFolder == null) {
|
|
return false;
|
|
}
|
|
mSolo.clickLongOnView(desktopFolder);
|
|
return true; }
|
|
}, MAX_WAIT_MS);
|
|
|
|
mAsserter.ok(success, "Trying to long click on the Desktop Bookmarks","Desktop Bookmarks folder could not be long clicked");
|
|
|
|
final String contextMenuString = StringHelper.BOOKMARK_CONTEXT_MENU_ITEMS[0];
|
|
mAsserter.ok(!waitForText(contextMenuString), "Folders do not have context menus", "The context menu was not opened");
|
|
|
|
// Even if no context menu is opened long clicking a folder still opens it. We need to close it.
|
|
clickOnBookmarkFolder(StringHelper.DESKTOP_FOLDER_LABEL);
|
|
}
|
|
|
|
private void clickOnBookmarkFolder(final String folderName) {
|
|
boolean success = waitForCondition(new Condition() {
|
|
@Override
|
|
public boolean isSatisfied() {
|
|
View bookmarksFolder = getBookmarkFolderView(folderName);
|
|
if (bookmarksFolder == null) {
|
|
return false;
|
|
}
|
|
mSolo.waitForView(bookmarksFolder);
|
|
mSolo.clickOnView(bookmarksFolder);
|
|
return true;
|
|
}
|
|
}, MAX_WAIT_MS);
|
|
mAsserter.ok(success, "Trying to click on the " + folderName + " folder","The " + folderName + " folder was clicked");
|
|
}
|
|
|
|
private View getBookmarkFolderView(String folderName) {
|
|
openAboutHomeTab(AboutHomeTabs.BOOKMARKS);
|
|
mSolo.hideSoftKeyboard();
|
|
getInstrumentation().waitForIdleSync();
|
|
|
|
ListView bookmarksTabList = findListViewWithTag("bookmarks");
|
|
if (!waitForNonEmptyListToLoad(bookmarksTabList)) {
|
|
return null;
|
|
}
|
|
|
|
ListAdapter adapter = bookmarksTabList.getAdapter();
|
|
if (adapter == null) {
|
|
return null;
|
|
}
|
|
|
|
for (int i = 0; i < adapter.getCount(); i++ ) {
|
|
View bookmarkView = bookmarksTabList.getChildAt(i);
|
|
if (bookmarkView instanceof TextView) {
|
|
TextView folderTextView = (TextView) bookmarkView;
|
|
if (folderTextView.getText().equals(folderName)) {
|
|
return bookmarkView;
|
|
}
|
|
}
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
// Add a bookmark in the Desktop folder so we can check the folder navigation in the bookmarks page
|
|
private void setUpDesktopBookmarks() {
|
|
blockForGeckoReady();
|
|
|
|
// Get the folder id of the StringHelper.DESKTOP_FOLDER_LABEL folder
|
|
Long desktopFolderId = mDatabaseHelper.getFolderIdFromGuid("toolbar");
|
|
|
|
// Generate a Guid for the bookmark
|
|
final String generatedGuid = Utils.generateGuid();
|
|
mAsserter.ok((generatedGuid != null), "Generating a random Guid for the bookmark", "We could not generate a Guid for the bookmark");
|
|
|
|
// Insert the bookmark
|
|
ContentResolver resolver = getActivity().getContentResolver();
|
|
Uri bookmarksUri = mDatabaseHelper.buildUri(DatabaseHelper.BrowserDataType.BOOKMARKS);
|
|
|
|
long now = System.currentTimeMillis();
|
|
ContentValues values = new ContentValues();
|
|
values.put("title", StringHelper.ROBOCOP_BLANK_PAGE_02_TITLE);
|
|
values.put("url", DESKTOP_BOOKMARK_URL);
|
|
values.put("parent", desktopFolderId);
|
|
values.put("modified", now);
|
|
values.put("type", 1);
|
|
values.put("guid", generatedGuid);
|
|
values.put("position", 10);
|
|
values.put("created", now);
|
|
|
|
int updated = resolver.update(bookmarksUri,
|
|
values,
|
|
"url = ?",
|
|
new String[] { DESKTOP_BOOKMARK_URL });
|
|
if (updated == 0) {
|
|
Uri uri = resolver.insert(bookmarksUri, values);
|
|
mAsserter.ok(true, "Inserted at: ", uri.toString());
|
|
} else {
|
|
mAsserter.ok(false, "Failed to insert the Desktop bookmark", "Something went wrong");
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void tearDown() throws Exception {
|
|
mDatabaseHelper.deleteBookmark(DESKTOP_BOOKMARK_URL);
|
|
super.tearDown();
|
|
}
|
|
}
|