summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorarv@chromium.org <arv@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-01-14 01:40:04 +0000
committerarv@chromium.org <arv@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-01-14 01:40:04 +0000
commit9dd97bc09671c14367f567cb8d40e2b68be50329 (patch)
tree6ab7ab9401527aa5edea00facf0b715cfc1fa3c0
parent81a860931265c0d3feed110376353a8e3e1d42c4 (diff)
downloadchromium_src-9dd97bc09671c14367f567cb8d40e2b68be50329.zip
chromium_src-9dd97bc09671c14367f567cb8d40e2b68be50329.tar.gz
chromium_src-9dd97bc09671c14367f567cb8d40e2b68be50329.tar.bz2
Add an experimental bookmark manager API to extensions.
BUG=32194 TEST=browser_tests.exe --gtest_filter=ExtensionApiTest.BookmarkManager Review URL: http://codereview.chromium.org/550021 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@36213 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/app/generated_resources.grd3
-rw-r--r--chrome/browser/extensions/extension_bookmark_manager_api.cc86
-rw-r--r--chrome/browser/extensions/extension_bookmark_manager_api.h47
-rw-r--r--chrome/browser/extensions/extension_bookmark_manager_apitest.cc14
-rw-r--r--chrome/browser/extensions/extension_function_dispatcher.cc7
-rwxr-xr-xchrome/chrome_browser.gypi2
-rwxr-xr-xchrome/chrome_tests.gypi1
-rwxr-xr-xchrome/common/extensions/api/extension_api.json70
-rw-r--r--chrome/renderer/resources/renderer_extension_bindings.js6
-rw-r--r--chrome/test/data/extensions/api_test/bookmark_manager/manifest.json7
-rw-r--r--chrome/test/data/extensions/api_test/bookmark_manager/test.html1
-rw-r--r--chrome/test/data/extensions/api_test/bookmark_manager/test.js15
12 files changed, 255 insertions, 4 deletions
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
index bdd021b..70becd3 100644
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -5487,6 +5487,9 @@ Keep your key file in a safe place. You will need it to create new versions of y
<message name="IDS_BOOKMARK_MANAGER_TITLE" desc="Title of the bookmark manager window.">
Bookmark Manager
</message>
+ <message name="IDS_BOOKMARK_MANAGER_SEARCH_BUTTON" desc="Title of the button in the bookmark manager that triggers a search">
+ Search bookmarks
+ </message>
<if expr="not pp_ifdef('use_titlecase')">
<message name="IDS_BOOKMARK_MANAGER" desc="The label of the menu item that shows the bookmark manager">
&amp;Bookmark manager
diff --git a/chrome/browser/extensions/extension_bookmark_manager_api.cc b/chrome/browser/extensions/extension_bookmark_manager_api.cc
new file mode 100644
index 0000000..58986a8
--- /dev/null
+++ b/chrome/browser/extensions/extension_bookmark_manager_api.cc
@@ -0,0 +1,86 @@
+// Copyright (c) 2010 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.
+
+#include "chrome/browser/extensions/extension_bookmark_manager_api.h"
+
+#include "app/l10n_util.h"
+#include "base/values.h"
+#include "grit/generated_resources.h"
+
+bool CopyBookmarkManagerFunction::RunImpl() {
+ NOTIMPLEMENTED();
+ return true;
+}
+
+
+bool CutBookmarkManagerFunction::RunImpl() {
+ NOTIMPLEMENTED();
+ return true;
+}
+
+
+bool PasteBookmarkManagerFunction::RunImpl() {
+ NOTIMPLEMENTED();
+ return true;
+}
+
+
+bool BookmarkManagerGetStringsFunction::RunImpl() {
+ DictionaryValue* localized_strings = new DictionaryValue();
+
+ localized_strings->SetString(L"title",
+ l10n_util::GetString(IDS_BOOKMARK_MANAGER_TITLE));
+ localized_strings->SetString(L"search_button",
+ l10n_util::GetString(IDS_BOOKMARK_MANAGER_SEARCH_BUTTON));
+ localized_strings->SetString(L"show_in_folder",
+ l10n_util::GetString(IDS_BOOKMARK_MANAGER_SHOW_IN_FOLDER));
+ localized_strings->SetString(L"sort",
+ l10n_util::GetString(IDS_BOOKMARK_MANAGER_SORT));
+ localized_strings->SetString(L"organize_menu",
+ l10n_util::GetString(IDS_BOOKMARK_MANAGER_ORGANIZE_MENU));
+ localized_strings->SetString(L"tools_menu",
+ l10n_util::GetString(IDS_BOOKMARK_MANAGER_TOOLS_MENU));
+ localized_strings->SetString(L"import_menu",
+ l10n_util::GetString(IDS_BOOKMARK_MANAGER_IMPORT_MENU));
+ localized_strings->SetString(L"export_menu",
+ l10n_util::GetString(IDS_BOOKMARK_MANAGER_EXPORT_MENU));
+
+ localized_strings->SetString(L"rename_folder",
+ l10n_util::GetString(IDS_BOOKMARK_BAR_RENAME_FOLDER));
+ localized_strings->SetString(L"edit",
+ l10n_util::GetString(IDS_BOOKMARK_BAR_EDIT));
+ localized_strings->SetString(L"should_open_all",
+ l10n_util::GetString(IDS_BOOKMARK_BAR_SHOULD_OPEN_ALL));
+ localized_strings->SetString(L"open_incognito",
+ l10n_util::GetString(IDS_BOOMARK_BAR_OPEN_INCOGNITO));
+ localized_strings->SetString(L"open_in_new_tab",
+ l10n_util::GetString(IDS_BOOMARK_BAR_OPEN_IN_NEW_TAB));
+ localized_strings->SetString(L"open_in_new_window",
+ l10n_util::GetString(IDS_BOOMARK_BAR_OPEN_IN_NEW_WINDOW));
+ localized_strings->SetString(L"add_new_bookmark",
+ l10n_util::GetString(IDS_BOOMARK_BAR_ADD_NEW_BOOKMARK));
+ localized_strings->SetString(L"new_folder",
+ l10n_util::GetString(IDS_BOOMARK_BAR_NEW_FOLDER));
+ localized_strings->SetString(L"open_all",
+ l10n_util::GetString(IDS_BOOMARK_BAR_OPEN_ALL));
+ localized_strings->SetString(L"open_all_new_window",
+ l10n_util::GetString(IDS_BOOMARK_BAR_OPEN_ALL_NEW_WINDOW));
+ localized_strings->SetString(L"open_all_incognito",
+ l10n_util::GetString(IDS_BOOMARK_BAR_OPEN_ALL_INCOGNITO));
+ localized_strings->SetString(L"remove",
+ l10n_util::GetString(IDS_BOOKMARK_BAR_REMOVE));
+
+ localized_strings->SetString(L"copy",
+ l10n_util::GetString(IDS_CONTENT_CONTEXT_COPY));
+ localized_strings->SetString(L"cut",
+ l10n_util::GetString(IDS_CONTENT_CONTEXT_CUT));
+ localized_strings->SetString(L"paste",
+ l10n_util::GetString(IDS_CONTENT_CONTEXT_PASTE));
+ localized_strings->SetString(L"delete",
+ l10n_util::GetString(IDS_CONTENT_CONTEXT_DELETE));
+
+ result_.reset(localized_strings);
+ SendResponse(true);
+ return true;
+}
diff --git a/chrome/browser/extensions/extension_bookmark_manager_api.h b/chrome/browser/extensions/extension_bookmark_manager_api.h
new file mode 100644
index 0000000..2ab6be6c
--- /dev/null
+++ b/chrome/browser/extensions/extension_bookmark_manager_api.h
@@ -0,0 +1,47 @@
+// Copyright (c) 2010 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_EXTENSIONS_EXTENSION_BOOKMARK_MANAGER_API_H_
+#define CHROME_BROWSER_EXTENSIONS_EXTENSION_BOOKMARK_MANAGER_API_H_
+
+#include "chrome/browser/extensions/extension_function.h"
+
+class CopyBookmarkManagerFunction : public AsyncExtensionFunction {
+ public:
+ // Override BookmarkManagerFunction.
+ virtual bool RunImpl();
+
+ private:
+ DECLARE_EXTENSION_FUNCTION_NAME("experimental.bookmarkManager.copy");
+};
+
+class CutBookmarkManagerFunction : public AsyncExtensionFunction {
+ public:
+ // Override BookmarkManagerFunction.
+ virtual bool RunImpl();
+
+ private:
+ DECLARE_EXTENSION_FUNCTION_NAME("experimental.bookmarkManager.cut");
+};
+
+class PasteBookmarkManagerFunction : public AsyncExtensionFunction {
+ public:
+ // Override BookmarkManagerFunction.
+ virtual bool RunImpl();
+
+ private:
+ DECLARE_EXTENSION_FUNCTION_NAME("experimental.bookmarkManager.paste");
+};
+
+class BookmarkManagerGetStringsFunction : public AsyncExtensionFunction {
+ public:
+ // Override BookmarkManagerFunction.
+ virtual bool RunImpl();
+
+ private:
+ DECLARE_EXTENSION_FUNCTION_NAME("experimental.bookmarkManager.getStrings");
+};
+
+
+#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_BOOKMARK_MANAGER_API_H_
diff --git a/chrome/browser/extensions/extension_bookmark_manager_apitest.cc b/chrome/browser/extensions/extension_bookmark_manager_apitest.cc
new file mode 100644
index 0000000..27495c1
--- /dev/null
+++ b/chrome/browser/extensions/extension_bookmark_manager_apitest.cc
@@ -0,0 +1,14 @@
+// Copyright (c) 2010 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.
+
+#include "base/command_line.h"
+#include "chrome/browser/extensions/extension_apitest.h"
+#include "chrome/common/chrome_switches.h"
+
+IN_PROC_BROWSER_TEST_F(ExtensionApiTest, BookmarkManager) {
+ CommandLine::ForCurrentProcess()->AppendSwitch(
+ switches::kEnableExperimentalExtensionApis);
+
+ ASSERT_TRUE(RunExtensionTest("bookmark_manager")) << message_;
+}
diff --git a/chrome/browser/extensions/extension_function_dispatcher.cc b/chrome/browser/extensions/extension_function_dispatcher.cc
index 82e9d63..ba3e80e 100644
--- a/chrome/browser/extensions/extension_function_dispatcher.cc
+++ b/chrome/browser/extensions/extension_function_dispatcher.cc
@@ -10,6 +10,7 @@
#include "chrome/browser/browser.h"
#include "chrome/browser/browser_window.h"
#include "chrome/browser/extensions/execute_code_in_tab_function.h"
+#include "chrome/browser/extensions/extension_bookmark_manager_api.h"
#include "chrome/browser/extensions/extension_bookmarks_module.h"
#include "chrome/browser/extensions/extension_bookmarks_module_constants.h"
#include "chrome/browser/extensions/extension_browser_actions_api.h"
@@ -131,6 +132,12 @@ void FactoryRegistry::ResetFunctions() {
RegisterFunction<MoveBookmarkFunction>();
RegisterFunction<UpdateBookmarkFunction>();
+ // BookmarkManager
+ RegisterFunction<CopyBookmarkManagerFunction>();
+ RegisterFunction<CutBookmarkManagerFunction>();
+ RegisterFunction<PasteBookmarkManagerFunction>();
+ RegisterFunction<BookmarkManagerGetStringsFunction>();
+
// History
RegisterFunction<AddUrlHistoryFunction>();
RegisterFunction<DeleteAllHistoryFunction>();
diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi
index 8db1c16..2257aa5 100755
--- a/chrome/chrome_browser.gypi
+++ b/chrome/chrome_browser.gypi
@@ -691,6 +691,8 @@
'browser/extensions/extension_bookmarks_module.h',
'browser/extensions/extension_bookmarks_module_constants.cc',
'browser/extensions/extension_bookmarks_module_constants.h',
+ 'browser/extensions/extension_bookmark_manager_api.cc',
+ 'browser/extensions/extension_bookmark_manager_api.h',
'browser/extensions/extension_browser_actions_api.cc',
'browser/extensions/extension_browser_actions_api.h',
'browser/extensions/extension_creator.cc',
diff --git a/chrome/chrome_tests.gypi b/chrome/chrome_tests.gypi
index 6d7115f..27e6abc 100755
--- a/chrome/chrome_tests.gypi
+++ b/chrome/chrome_tests.gypi
@@ -1105,6 +1105,7 @@
'browser/extensions/extension_apitest.cc',
'browser/extensions/extension_apitest.h',
'browser/extensions/extension_bookmarks_apitest.cc',
+ 'browser/extensions/extension_bookmark_manager_apitest.cc',
'browser/extensions/extension_browsertest.cc',
'browser/extensions/extension_browsertest.h',
'browser/extensions/extension_browsertests_misc.cc',
diff --git a/chrome/common/extensions/api/extension_api.json b/chrome/common/extensions/api/extension_api.json
index bae2a0d..1daeb09 100755
--- a/chrome/common/extensions/api/extension_api.json
+++ b/chrome/common/extensions/api/extension_api.json
@@ -1729,13 +1729,81 @@
]
},
{
+ "namespace": "experimental.bookmarkManager",
+ "nodoc": true,
+ "types": [],
+ "functions": [
+ {
+ "name": "copy",
+ "type": "function",
+ "description": "Copies the given bookmarks into the clipboard",
+ "nodoc": "true",
+ "parameters": [
+ {
+ "name": "idList",
+ "description": "An array of string-valued ids",
+ "type": "array",
+ "items": {"type": "string"},
+ "minItems": 1
+ },
+ {"type": "function", "name": "callback", "optional": true, "parameters": []}
+ ]
+ },
+ {
+ "name": "cut",
+ "type": "function",
+ "description": "Cuts the given bookmarks into the clipboard",
+ "nodoc": "true",
+ "parameters": [
+ {
+ "name": "idList",
+ "description": "An array of string-valued ids",
+ "type": "array",
+ "items": {"type": "string"},
+ "minItems": 1
+ },
+ {"type": "function", "name": "callback", "optional": true, "parameters": []}
+ ]
+ },
+ {
+ "name": "paste",
+ "type": "function",
+ "description": "Pastes bookmarks from the clipboard into the parent folder",
+ "nodoc": "true",
+ "parameters": [
+ {"type": "string", "name": "parentId"},
+ {"type": "function", "name": "callback", "optional": true, "parameters": []}
+ ]
+ },
+ {
+ "name": "getStrings",
+ "type": "function",
+ "description": "Gets the i18n strings for the bookmark manager",
+ "nodoc": "true",
+ "parameters": [
+ {
+ "type": "function",
+ "name": "callback",
+ "parameters": [
+ {
+ "type": "object",
+ "properties": {},
+ "additionalProperties": {"type": "string"}
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
"namespace": "devtools",
"types": [],
"functions": [
{
"name": "getTabEvents",
"type": "function",
- "description": "EXPERIMENTAL support for timeline API",
+ "description": "Experimental support for timeline API",
"nodoc": "true",
"parameters": [
{
diff --git a/chrome/renderer/resources/renderer_extension_bindings.js b/chrome/renderer/resources/renderer_extension_bindings.js
index c8d2557..870d43e 100644
--- a/chrome/renderer/resources/renderer_extension_bindings.js
+++ b/chrome/renderer/resources/renderer_extension_bindings.js
@@ -241,9 +241,9 @@ var chrome = chrome || {};
// that should prevent it from getting stale).
var privileged = [
// Entire namespaces.
- "bookmarks", "browserAction", "devtools", "experimental.extension",
- "experimental.history", "experimental.popup", "pageAction", "pageActions",
- "tabs", "test", "toolstrip", "windows",
+ "bookmarks", "browserAction", "devtools", "experimental.bookmarkManager",
+ "experimental.extension", "experimental.history", "experimental.popup",
+ "pageAction", "pageActions", "tabs", "test", "toolstrip", "windows",
// Functions/events/properties within the extension namespace.
"extension.getBackgroundPage", "extension.getExtensionTabs",
diff --git a/chrome/test/data/extensions/api_test/bookmark_manager/manifest.json b/chrome/test/data/extensions/api_test/bookmark_manager/manifest.json
new file mode 100644
index 0000000..6625282
--- /dev/null
+++ b/chrome/test/data/extensions/api_test/bookmark_manager/manifest.json
@@ -0,0 +1,7 @@
+{
+ "name": "chrome.experimental.bookmarkManager",
+ "version": "0.1",
+ "description": "end-to-end browser test for chrome.experimental.bookmarkManager API",
+ "background_page": "test.html",
+ "permissions": ["experimental"]
+}
diff --git a/chrome/test/data/extensions/api_test/bookmark_manager/test.html b/chrome/test/data/extensions/api_test/bookmark_manager/test.html
new file mode 100644
index 0000000..46f4d74
--- /dev/null
+++ b/chrome/test/data/extensions/api_test/bookmark_manager/test.html
@@ -0,0 +1 @@
+<script src="test.js"></script>
diff --git a/chrome/test/data/extensions/api_test/bookmark_manager/test.js b/chrome/test/data/extensions/api_test/bookmark_manager/test.js
new file mode 100644
index 0000000..33f928d
--- /dev/null
+++ b/chrome/test/data/extensions/api_test/bookmark_manager/test.js
@@ -0,0 +1,15 @@
+// Bookmark Manager API test for Chrome.
+// browser_tests.exe --gtest_filter=ExtensionApiTest.BookmarkManager
+
+var pass = chrome.test.callbackPass;
+var fail = chrome.test.callbackFail;
+var assertEq = chrome.test.assertEq;
+
+chrome.test.runTests([
+ function getStrings() {
+ chrome.experimental.bookmarkManager.getStrings(pass(function(strings) {
+ assertEq('string', typeof strings['title']);
+ assertEq('string', typeof strings['search_button']);
+ }));
+ }
+]);