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

COVERAGE SUMMARY FOR SOURCE FILE [BookmarksBridge.java]

nameclass, %method, %block, %line, %
BookmarksBridge.java0%   (0/4)0%   (0/18)0%   (0/210)0%   (0/54)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class BookmarksBridge0%   (0/1)0%   (0/7)0%   (0/124)0%   (0/28)
BookmarksBridge (Profile): void 0%   (0/1)0%   (0/16)0%   (0/5)
bookmarkModelDeleted (): void 0%   (0/1)0%   (0/3)0%   (0/2)
bookmarkModelLoaded (): void 0%   (0/1)0%   (0/26)0%   (0/6)
create (List, long, String, String, boolean, long): void 0%   (0/1)0%   (0/13)0%   (0/2)
destroy (): void 0%   (0/1)0%   (0/14)0%   (0/5)
getBookmarksForFolder (long, BookmarksBridge$BookmarksCallback): void 0%   (0/1)0%   (0/26)0%   (0/4)
getCurrentFolderHierarchy (long, BookmarksBridge$BookmarksCallback): void 0%   (0/1)0%   (0/26)0%   (0/4)
     
class BookmarksBridge$10%   (0/1)100% (0/0)100% (0/0)100% (0/0)
     
class BookmarksBridge$BookmarkItem0%   (0/1)0%   (0/7)0%   (0/41)0%   (0/13)
BookmarksBridge$BookmarkItem (long, String, String, boolean, long): void 0%   (0/1)0%   (0/18)0%   (0/7)
BookmarksBridge$BookmarkItem (long, String, String, boolean, long, BookmarksB... 0%   (0/1)0%   (0/8)0%   (0/1)
getId (): long 0%   (0/1)0%   (0/3)0%   (0/1)
getParentId (): long 0%   (0/1)0%   (0/3)0%   (0/1)
getTitle (): String 0%   (0/1)0%   (0/3)0%   (0/1)
getUrl (): String 0%   (0/1)0%   (0/3)0%   (0/1)
isFolder (): boolean 0%   (0/1)0%   (0/3)0%   (0/1)
     
class BookmarksBridge$DelayedBookmarkCallback0%   (0/1)0%   (0/4)0%   (0/45)0%   (0/13)
BookmarksBridge$DelayedBookmarkCallback (long, BookmarksBridge$BookmarksCallb... 0%   (0/1)0%   (0/15)0%   (0/6)
BookmarksBridge$DelayedBookmarkCallback (long, BookmarksBridge$BookmarksCallb... 0%   (0/1)0%   (0/7)0%   (0/1)
access$100 (BookmarksBridge$DelayedBookmarkCallback): void 0%   (0/1)0%   (0/3)0%   (0/1)
callCallbackMethod (): void 0%   (0/1)0%   (0/20)0%   (0/6)

1// Copyright 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.chrome.browser;
6 
7import org.chromium.base.CalledByNative;
8import org.chromium.chrome.browser.profiles.Profile;
9 
10import java.util.ArrayList;
11import java.util.List;
12 
13/**
14 * Handler to fetch the bookmarks, titles, urls and folder hierarchy.
15 */
16public class BookmarksBridge {
17 
18    private final Profile mProfile;
19    private int mNativeBookmarksBridge;
20    private boolean mIsNativeBookmarkModelLoaded;
21    private List<DelayedBookmarkCallback> mDelayedBookmarkCallbacks =
22            new ArrayList<DelayedBookmarkCallback>();
23 
24    /**
25     * Interface for callback object for fetching bookmarks and folder hierarchy.
26     */
27    public interface BookmarksCallback {
28 
29        /**
30         * Callback method for fetching bookmarks for a folder and the folder hierarchy.
31         * @param folderId The folder id to which the bookmarks belong.
32         * @param bookmarksList List holding the fetched bookmarks and details.
33         */
34        @CalledByNative("BookmarksCallback")
35        public void onBookmarksAvailable(long folderId, List<BookmarkItem> bookmarksList);
36 
37        /**
38         * Callback method for fetching the folder hierarchy.
39         * @param folderId The folder id to which the bookmarks belong.
40         * @param bookmarksList List holding the fetched folder details.
41         */
42        @CalledByNative("BookmarksCallback")
43        public void onBookmarksFolderHierarchyAvailable(long folderId,
44                List<BookmarkItem> bookmarksList);
45 
46   }
47 
48    /**
49     * Handler to fetch the bookmarks, titles, urls and folder hierarchy.
50     * @param profile Profile instance corresponding to the active profile.
51     */
52    public BookmarksBridge(Profile profile) {
53        mProfile = profile;
54        mNativeBookmarksBridge = nativeInit(profile);
55    }
56 
57    /**
58     * Destroys this instance so no further calls can be executed.
59     */
60    public void destroy() {
61        if (mNativeBookmarksBridge != 0) {
62            nativeDestroy(mNativeBookmarksBridge);
63            mNativeBookmarksBridge = 0;
64            mIsNativeBookmarkModelLoaded = false;
65        }
66    }
67 
68    /**
69     * Fetches the bookmarks of the current folder. Callback will be
70     * synchronous if the bookmark model is already loaded and async if it is loaded in the
71     * background.
72     * @param folderId The current folder id.
73     * @param callback Instance of a callback object.
74     */
75    public void getBookmarksForFolder(long folderId, BookmarksCallback callback) {
76        if (mIsNativeBookmarkModelLoaded) {
77            nativeGetBookmarksForFolder(mNativeBookmarksBridge, folderId, callback,
78                    new ArrayList<BookmarkItem>());
79        } else {
80            mDelayedBookmarkCallbacks.add(new DelayedBookmarkCallback(folderId, callback,
81                    DelayedBookmarkCallback.GET_BOOKMARKS_FOR_FOLDER, this));
82        }
83    }
84 
85    /**
86     * Fetches the folder hierarchy of the given folder. Callback will be
87     * synchronous if the bookmark model is already loaded and async if it is loaded in the
88     * background.
89     * @param folderId The current folder id.
90     * @param callback Instance of a callback object.
91     */
92    public void getCurrentFolderHierarchy(long folderId, BookmarksCallback callback) {
93        if (mIsNativeBookmarkModelLoaded) {
94            nativeGetCurrentFolderHierarchy(mNativeBookmarksBridge, folderId, callback,
95                    new ArrayList<BookmarkItem>());
96        } else {
97            mDelayedBookmarkCallbacks.add(new DelayedBookmarkCallback(folderId, callback,
98                    DelayedBookmarkCallback.GET_CURRENT_FOLDER_HIERARCHY, this));
99        }
100    }
101 
102    @CalledByNative
103    public void bookmarkModelLoaded() {
104        mIsNativeBookmarkModelLoaded = true;
105        if (!mDelayedBookmarkCallbacks.isEmpty()) {
106            for (int i = 0; i < mDelayedBookmarkCallbacks.size(); i++) {
107                mDelayedBookmarkCallbacks.get(i).callCallbackMethod();
108            }
109            mDelayedBookmarkCallbacks.clear();
110        }
111    }
112 
113    @CalledByNative
114    public void bookmarkModelDeleted() {
115        destroy();
116    }
117 
118    @CalledByNative
119    private static void create(List<BookmarkItem> bookmarksList, long id, String title, String url,
120            boolean isFolder, long parentId) {
121        bookmarksList.add(new BookmarkItem(id, title, url, isFolder, parentId));
122    }
123 
124    private native void nativeGetBookmarksForFolder(int nativeBookmarksBridge,
125            long folderId, BookmarksCallback callback,
126            List<BookmarkItem> bookmarksList);
127    private native void nativeGetCurrentFolderHierarchy(int nativeBookmarksBridge,
128            long folderId, BookmarksCallback callback,
129            List<BookmarkItem> bookmarksList);
130    private native int nativeInit(Profile profile);
131    private native void nativeDestroy(int nativeBookmarksBridge);
132 
133    /**
134     * Simple object representing the bookmark item.
135     */
136    public static class BookmarkItem {
137 
138        private final String mTitle;
139        private final String mUrl;
140        private final long mId;
141        private final boolean mIsFolder;
142        private final long mParentId;
143 
144        private BookmarkItem(long id, String title, String url, boolean isFolder, long parentId) {
145            mId = id;
146            mTitle = title;
147            mUrl = url;
148            mIsFolder = isFolder;
149            mParentId = parentId;
150        }
151 
152        /**
153         * @return Title of the bookmark item.
154         */
155        public String getTitle() {
156            return mTitle;
157        }
158 
159        /**
160         * @return Url of the bookmark item.
161         */
162        public String getUrl() {
163            return mUrl;
164        }
165 
166        /**
167         * @return Id of the bookmark item.
168         */
169        public long getId() {
170            return mId;
171        }
172 
173        /**
174         * @return Whether item is a folder or a bookmark.
175         */
176        public boolean isFolder() {
177            return mIsFolder;
178        }
179 
180        /**
181         * @return Parent id of the bookmark item.
182         */
183        public long getParentId() {
184            return mParentId;
185        }
186    }
187 
188    /**
189     * Details about callbacks that need to be called once the bookmark model has loaded.
190     */
191    private static class DelayedBookmarkCallback {
192 
193        private static final int GET_BOOKMARKS_FOR_FOLDER = 0;
194        private static final int GET_CURRENT_FOLDER_HIERARCHY = 1;
195 
196        private final BookmarksCallback mCallback;
197        private final long mFolderId;
198        private final int mCallbackMethod;
199        private final BookmarksBridge mHandler;
200 
201        private DelayedBookmarkCallback(long folderId, BookmarksCallback callback, int method,
202                BookmarksBridge handler) {
203            mFolderId = folderId;
204            mCallback = callback;
205            mCallbackMethod = method;
206            mHandler = handler;
207        }
208 
209        /**
210         * Invoke the callback method.
211         */
212        private void callCallbackMethod() {
213            switch(mCallbackMethod) {
214                case GET_BOOKMARKS_FOR_FOLDER:
215                    mHandler.getBookmarksForFolder(mFolderId, mCallback);
216                    break;
217                case GET_CURRENT_FOLDER_HIERARCHY:
218                    mHandler.getCurrentFolderHierarchy(mFolderId, mCallback);
219                    break;
220                default:
221                    break;
222            }
223        }
224    }
225 
226}
227 

[all classes][org.chromium.chrome.browser]
EMMA 2.0.5312 (C) Vladimir Roubtsov