Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3134)

Unified Diff: chrome/browser/ui/webui/ntp/android/bookmarks_handler.h

Issue 10829326: Add the webui handler for Android's bookmark section on the NTP. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/webui/ntp/android/bookmarks_handler.h
diff --git a/chrome/browser/ui/webui/ntp/android/bookmarks_handler.h b/chrome/browser/ui/webui/ntp/android/bookmarks_handler.h
new file mode 100644
index 0000000000000000000000000000000000000000..cddae741ca1080e498f305a839268f172e93d716
--- /dev/null
+++ b/chrome/browser/ui/webui/ntp/android/bookmarks_handler.h
@@ -0,0 +1,139 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_UI_WEBUI_NTP_ANDROID_BOOKMARKS_HANDLER_H_
+#define CHROME_BROWSER_UI_WEBUI_NTP_ANDROID_BOOKMARKS_HANDLER_H_
+
+#include "base/values.h"
+#include "chrome/browser/bookmarks/base_bookmark_model_observer.h"
+#include "chrome/browser/cancelable_request.h"
+#include "chrome/browser/favicon/favicon_service.h"
+#include "chrome/browser/ui/webui/ntp/android/partner_bookmarks_shim.h"
+#include "content/public/browser/web_ui_message_handler.h"
+
+// The handler for Javascript messages related to the bookmarks.
+//
+// In Javascript if getBookmarks() is called without any parameter, the 'Other
+// Bookmark' folder and bookmark bar's bookmarks and folders are returned.
+// If getBookmarks() is called with a valid bookmark folder id, the given
+// folder's bookmarks and sub folders of are returned.
+//
+// All bookmarks and subfolder is returned by bookmarks() javascript callback
+// function.
+// The returned field 'folder' indicates whether the data is a folder. The
+// returned field 'root' indicates whether or not the bookmark list that was
+// returned is the root list or not. Besides these fields, a folder has id
+// and title fields; A bookmark has url and title fields.
+//
+// A sample result looks like:
+// {
+// title: 'Bookmark Bar',
+// id: '1',
+// root: true,
+// bookmarks: [
+// {
+// title: 'Cake',
+// url: 'http://www.google.com',
+// folder: false
+// },
+// {
+// title: 'Puppies',
+// folder: true,
+// id: '2'
+// }
+// ]
+// }
+class BookmarksHandler : public content::WebUIMessageHandler,
+ public BaseBookmarkModelObserver,
+ public PartnerBookmarksShim::Observer {
+ public:
+ BookmarksHandler();
+ virtual ~BookmarksHandler();
+
+ // WebUIMessageHandler override and implementation.
+ virtual void RegisterMessages() OVERRIDE;
+
+ // Callback for the "getBookmarks" message.
+ void HandleGetBookmarks(const ListValue* args);
+ // Callback for the "deleteBookmark" message.
+ void HandleDeleteBookmark(const ListValue* args);
+ // Callback for the "createHomeScreenBookmarkShortcut" message. Used when
+ // creating a shortcut on the home screen that should open the bookmark
+ // specified in |args|.
+ void HandleCreateHomeScreenBookmarkShortcut(const base::ListValue* args);
+
+ // Notify the UI that a change occurred to the bookmark model.
+ virtual void NotifyModelChanged(const DictionaryValue& status);
+
+ // Override the methods of BookmarkModelObserver
+ virtual void Loaded(BookmarkModel* model, bool ids_reassigned) OVERRIDE;
+ virtual void BookmarkModelChanged() OVERRIDE;
+ virtual void ExtensiveBookmarkChangesBeginning(BookmarkModel* model) OVERRIDE;
+ virtual void ExtensiveBookmarkChangesEnded(BookmarkModel* model) OVERRIDE;
+ virtual void BookmarkNodeRemoved(BookmarkModel* model,
+ const BookmarkNode* parent,
+ int old_index,
+ const BookmarkNode* node) OVERRIDE;
+ virtual void BookmarkNodeAdded(BookmarkModel* model,
+ const BookmarkNode* parent,
+ int index) OVERRIDE;
+ virtual void BookmarkNodeChanged(BookmarkModel* model,
+ const BookmarkNode* node) OVERRIDE;
+
+ // Override the methods of PartnerBookmarksShim::Observer
+ virtual void PartnerShimLoaded(PartnerBookmarksShim* shim) OVERRIDE;
+ virtual void ShimBeingDeleted(PartnerBookmarksShim* shim) OVERRIDE;
+
+ private:
+ // The bookmark model being observed (if it has been attached).
+ BookmarkModel* bookmark_model_;
+
+ // Information about the Partner bookmarks (must check for IsLoaded())
+ PartnerBookmarksShim* partner_bookmarks_shim_;
+
+ // Whether the bookmark data has been requested by the UI yet.
+ bool bookmark_data_requested_;
+
+ // Indicates that extensive changes to the BookmarkModel is on-going.
+ bool extensive_changes_;
+
+ // Used for loading bookmark node.
+ CancelableRequestConsumerTSimple<const BookmarkNode*> cancelable_consumer_;
+
+ // Generates the string encoded ID to be used by the NTP.
+ std::string GetBookmarkIdForNtp(const BookmarkNode* node);
+
+ // Sets the necessary parent information in the response object to be sent
+ // to the UI renderer.
+ void SetParentInBookmarksResult(const BookmarkNode* parent,
+ DictionaryValue* result);
+
+ // Convert the given bookmark |node| into a dictionary format to be returned
+ // to JavaScript.
+ void PopulateBookmark(const BookmarkNode* node, ListValue* result);
+
+ // Given a bookmark folder node, |folder|, populate the |result| with the
+ // structured JavaScript-formatted data regarding the folder.
+ void PopulateBookmarksInFolder(const BookmarkNode* folder,
+ DictionaryValue* result);
+
+ // Sends all bookmarks and sub folders in the given folder back to the NTP.
+ void QueryBookmarkFolder(const int64& id, bool is_partner_bookmark);
+
+ // Sends bookmark bar's bookmarks and sub folders and other folders back to
+ // NTP.
+ void QueryInitialBookmarks();
+
+ // Sends the result back to Javascript
+ void SendResult(const DictionaryValue& result);
+
+ // Called once the favicon is loaded during creation of the bookmark shortcuts
+ // and is available for use.
+ void OnShortcutFaviconDataAvailable(FaviconService::Handle handle,
+ history::FaviconData favicon);
+
+ DISALLOW_COPY_AND_ASSIGN(BookmarksHandler);
+};
+
+#endif // CHROME_BROWSER_UI_WEBUI_NTP_ANDROID_BOOKMARKS_HANDLER_H_
« no previous file with comments | « chrome/browser/resources/ntp_android/ntp_android.js ('k') | chrome/browser/ui/webui/ntp/android/bookmarks_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698