diff options
author | arv@chromium.org <arv@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-01-14 01:40:04 +0000 |
---|---|---|
committer | arv@chromium.org <arv@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-01-14 01:40:04 +0000 |
commit | 9dd97bc09671c14367f567cb8d40e2b68be50329 (patch) | |
tree | 6ab7ab9401527aa5edea00facf0b715cfc1fa3c0 | |
parent | 81a860931265c0d3feed110376353a8e3e1d42c4 (diff) | |
download | chromium_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
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"> &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']); + })); + } +]); |