diff options
author | vandebo@chromium.org <vandebo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-21 23:17:34 +0000 |
---|---|---|
committer | vandebo@chromium.org <vandebo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-21 23:17:34 +0000 |
commit | 48f67668c7362e2532636fe241a3f631a0c9945c (patch) | |
tree | cf7d06b9ea02bcade2f2760f4cb9b20746e61cda | |
parent | 2251675efc18a26d71e6d1e8dfaaf8524d01f7b2 (diff) | |
download | chromium_src-48f67668c7362e2532636fe241a3f631a0c9945c.zip chromium_src-48f67668c7362e2532636fe241a3f631a0c9945c.tar.gz chromium_src-48f67668c7362e2532636fe241a3f631a0c9945c.tar.bz2 |
Initial extension bindings for Media Gallery API.
BUG=NONE
TEST=NONE
Review URL: https://chromiumcodereview.appspot.com/9358076
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@128089 0039d316-1c4b-4281-b951-d872f2087c98
19 files changed, 371 insertions, 1 deletions
diff --git a/chrome/browser/extensions/api/media_gallery/media_gallery_api.cc b/chrome/browser/extensions/api/media_gallery/media_gallery_api.cc new file mode 100644 index 0000000..81d9d27 --- /dev/null +++ b/chrome/browser/extensions/api/media_gallery/media_gallery_api.cc @@ -0,0 +1,44 @@ +// 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. + +// Implements the Chrome Extensions Cookies API. + +#include "chrome/browser/extensions/api/media_gallery/media_gallery_api.h" + +#include "base/values.h" + +namespace extensions { + +GetMediaGalleriesFunction::~GetMediaGalleriesFunction() {} + +bool GetMediaGalleriesFunction::RunImpl() { + // TODO(vandebo) Get the list of galleries. + result_.reset(new ListValue); + return true; +} + +OpenMediaGalleryManagerFunction::~OpenMediaGalleryManagerFunction() {} + +bool OpenMediaGalleryManagerFunction::RunImpl() { + // TODO(vandebo) Open a new tab/ui surface with config UI. + return true; +} + +AssembleMediaFileFunction::~AssembleMediaFileFunction() {} + +bool AssembleMediaFileFunction::RunImpl() { + // TODO(vandebo) Update the metadata and return the new file. + result_.reset(Value::CreateNullValue()); + return true; +} + +ParseMediaFileMetadataFunction::~ParseMediaFileMetadataFunction() {} + +bool ParseMediaFileMetadataFunction::RunImpl() { + // TODO(vandebo) Try to parse the file. + result_.reset(Value::CreateNullValue()); + return true; +} + +} // namespace extensions diff --git a/chrome/browser/extensions/api/media_gallery/media_gallery_api.h b/chrome/browser/extensions/api/media_gallery/media_gallery_api.h new file mode 100644 index 0000000..eab8b56 --- /dev/null +++ b/chrome/browser/extensions/api/media_gallery/media_gallery_api.h @@ -0,0 +1,50 @@ +// 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. + +// Defines the Chrome Extensions Cookies API functions for accessing internet +// cookies, as specified in the extension API JSON. + +#ifndef CHROME_BROWSER_EXTENSIONS_API_MEDIA_GALLERY_MEDIA_GALLERY_API_H_ +#define CHROME_BROWSER_EXTENSIONS_API_MEDIA_GALLERY_MEDIA_GALLERY_API_H_ +#pragma once + +#include "chrome/browser/extensions/extension_function.h" + +namespace extensions { + +class GetMediaGalleriesFunction : public SyncExtensionFunction { + public: + virtual ~GetMediaGalleriesFunction(); + virtual bool RunImpl() OVERRIDE; + DECLARE_EXTENSION_FUNCTION_NAME( + "experimental.mediaGalleries.getMediaGalleries") +}; + +class OpenMediaGalleryManagerFunction : public SyncExtensionFunction { + public: + virtual ~OpenMediaGalleryManagerFunction(); + virtual bool RunImpl() OVERRIDE; + DECLARE_EXTENSION_FUNCTION_NAME( + "experimental.mediaGalleries.openMediaGalleryManager") +}; + +class AssembleMediaFileFunction : public SyncExtensionFunction { + public: + virtual ~AssembleMediaFileFunction(); + virtual bool RunImpl() OVERRIDE; + DECLARE_EXTENSION_FUNCTION_NAME( + "experimental.mediaGalleries.assembleMediaFile") +}; + +class ParseMediaFileMetadataFunction : public SyncExtensionFunction { + public: + virtual ~ParseMediaFileMetadataFunction(); + virtual bool RunImpl() OVERRIDE; + DECLARE_EXTENSION_FUNCTION_NAME( + "experimental.mediaGalleries.parseMediaFileMetadata") +}; + +} // namespace extensions + +#endif // CHROME_BROWSER_EXTENSIONS_API_MEDIA_GALLERY_MEDIA_GALLERY_API_H_ diff --git a/chrome/browser/extensions/api/media_gallery/media_gallery_apitest.cc b/chrome/browser/extensions/api/media_gallery/media_gallery_apitest.cc new file mode 100644 index 0000000..31ba636 --- /dev/null +++ b/chrome/browser/extensions/api/media_gallery/media_gallery_apitest.cc @@ -0,0 +1,23 @@ +// 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. + +#include "base/command_line.h" +#include "chrome/browser/extensions/extension_apitest.h" +#include "chrome/common/chrome_switches.h" + +namespace { + +class ExperimentalExtensionApiTest : public ExtensionApiTest { + public: + virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { + ExtensionApiTest::SetUpCommandLine(command_line); + command_line->AppendSwitch(switches::kEnableExperimentalExtensionApis); + } +}; + +} // namespace + +IN_PROC_BROWSER_TEST_F(ExperimentalExtensionApiTest, MediaGallery) { + ASSERT_TRUE(RunExtensionTest("media_gallery")) << message_; +} diff --git a/chrome/browser/extensions/extension_function_registry.cc b/chrome/browser/extensions/extension_function_registry.cc index 3b1d025..21fb72d 100644 --- a/chrome/browser/extensions/extension_function_registry.cc +++ b/chrome/browser/extensions/extension_function_registry.cc @@ -13,6 +13,7 @@ #include "chrome/browser/extensions/api/declarative/declarative_api.h" #include "chrome/browser/extensions/api/extension_action/extension_browser_actions_api.h" #include "chrome/browser/extensions/api/extension_action/extension_page_actions_api.h" +#include "chrome/browser/extensions/api/media_gallery/media_gallery_api.h" #include "chrome/browser/extensions/api/offscreen_tabs/offscreen_tabs_api.h" #include "chrome/browser/extensions/api/permissions/permissions_api.h" #include "chrome/browser/extensions/api/serial/serial_api.h" @@ -481,6 +482,12 @@ void ExtensionFunctionRegistry::ResetFunctions() { RegisterFunction<ToDataUrlOffscreenTabFunction>(); RegisterFunction<UpdateOffscreenTabFunction>(); + // Media Gallery + RegisterFunction<extensions::GetMediaGalleriesFunction>(); + RegisterFunction<extensions::OpenMediaGalleryManagerFunction>(); + RegisterFunction<extensions::AssembleMediaFileFunction>(); + RegisterFunction<extensions::ParseMediaFileMetadataFunction>(); + // Generated APIs extensions::api::GeneratedFunctionRegistry::RegisterAll(this); } diff --git a/chrome/chrome_browser_extensions.gypi b/chrome/chrome_browser_extensions.gypi index b2844b8..2d7351d 100644 --- a/chrome/chrome_browser_extensions.gypi +++ b/chrome/chrome_browser_extensions.gypi @@ -90,6 +90,8 @@ 'browser/extensions/api/extension_action/extension_page_actions_api.h', 'browser/extensions/api/extension_action/extension_page_actions_api_constants.cc', 'browser/extensions/api/extension_action/extension_page_actions_api_constants.h', + 'browser/extensions/api/media_gallery/media_gallery_api.cc', + 'browser/extensions/api/media_gallery/media_gallery_api.h', 'browser/extensions/api/offscreen_tabs/offscreen_tabs_api.cc', 'browser/extensions/api/offscreen_tabs/offscreen_tabs_api.h', 'browser/extensions/api/offscreen_tabs/offscreen_tabs_constants.cc', diff --git a/chrome/chrome_renderer.gypi b/chrome/chrome_renderer.gypi index 5959cdd..69291db 100644 --- a/chrome/chrome_renderer.gypi +++ b/chrome/chrome_renderer.gypi @@ -93,6 +93,8 @@ 'renderer/extensions/file_browser_private_custom_bindings.h', 'renderer/extensions/i18n_custom_bindings.cc', 'renderer/extensions/i18n_custom_bindings.h', + 'renderer/extensions/media_gallery_custom_bindings.cc', + 'renderer/extensions/media_gallery_custom_bindings.h', 'renderer/extensions/miscellaneous_bindings.cc', 'renderer/extensions/miscellaneous_bindings.h', 'renderer/extensions/page_actions_custom_bindings.cc', diff --git a/chrome/chrome_tests.gypi b/chrome/chrome_tests.gypi index 9300e13..c83ffc9 100644 --- a/chrome/chrome_tests.gypi +++ b/chrome/chrome_tests.gypi @@ -2640,6 +2640,7 @@ 'browser/extensions/api/dns/dns_apitest.cc', 'browser/extensions/api/extension_action/browser_action_apitest.cc', 'browser/extensions/api/extension_action/page_action_apitest.cc', + 'browser/extensions/api/media_gallery/media_gallery_apitest.cc', 'browser/extensions/api/offscreen_tabs/offscreen_tabs_apitest.cc', 'browser/extensions/api/permissions/permissions_apitest.cc', 'browser/extensions/api/proxy/proxy_apitest.cc', diff --git a/chrome/common/common_resources.grd b/chrome/common/common_resources.grd index 7819341..9a247e5 100644 --- a/chrome/common/common_resources.grd +++ b/chrome/common/common_resources.grd @@ -36,6 +36,7 @@ <include name="IDR_EXTENSION_API_JSON_EXPERIMENTAL_INPUT_VIRTUALKEYBOARD" file="extensions\api\experimental.input.virtualKeyboard.json" type="BINDATA" /> <include name="IDR_EXTENSION_API_JSON_EXPERIMENTAL_KEYBINDING" file="extensions\api\experimental.keybinding.json" type="BINDATA" /> <include name="IDR_EXTENSION_API_JSON_EXPERIMENTAL_MANAGED_MODE" file="extensions\api\experimental.managedMode.json" type="BINDATA" /> + <include name="IDR_EXTENSION_API_JSON_EXPERIMENTAL_MEDIAGALLERIES" file="extensions\api\experimental.mediaGalleries.json" type="BINDATA" /> <include name="IDR_EXTENSION_API_JSON_EXPERIMENTAL_OFFSCREENTABS" file="extensions\api\experimental.offscreenTabs.json" type="BINDATA" /> <include name="IDR_EXTENSION_API_JSON_EXPERIMENTAL_PROCESSES" file="extensions\api\experimental.processes.json" type="BINDATA" /> <include name="IDR_EXTENSION_API_JSON_EXPERIMENTAL_RLZ" file="extensions\api\experimental.rlz.json" type="BINDATA" /> diff --git a/chrome/common/extensions/api/experimental.mediaGalleries.json b/chrome/common/extensions/api/experimental.mediaGalleries.json new file mode 100644 index 0000000..77121dd --- /dev/null +++ b/chrome/common/extensions/api/experimental.mediaGalleries.json @@ -0,0 +1,98 @@ +[ + { + "namespace": "experimental.mediaGalleries", + "nodoc": true, + "types": [ + { + "id": "MediaGallery", + "type": "object", + "description": "A class representing a media gallery on the user's machines." + }, + { + "id": "MediaFileMetadata", + "type": "object", + "description": "A class representing a metadata for a media file." + } + ], + "functions": [ + { + "name": "getMediaGalleries", + "type": "function", + "description": "Get the media galleries configured in this user agent.", + "parameters": [ + { + "type": "function", + "name": "callback", + "parameters": [ + { + "name": "galleries", + "type": "array", + "items": { "$ref": "MediaGallery"} + } + ] + } + ] + }, + { + "name": "openMediaGalleryManager", + "type": "function", + "description": "Open the user agent’s UI to configure galleries. Calling openMediaGalleryManager will trigger a permission prompt for any origin that has not yet been granted permission.", + "parameters": [] + }, + { + "name": "assembleMediaFile", + "type": "function", + "description": "Create a new MediaFile setting the metadata in the Blob to the supplied values, overriding any existing metadata in the media file. If user agent does not recognize the Blob as a supported file format, it will return null in the callback.", + "parameters": [ + { + "type": "object", + "description": "A Blob", + "name": "mediaFileContents" + }, + { + "$ref": "MediaFileMetadata", + "name": "metadata" + }, + { + "type": "function", + "name": "callback", + "parameters": [ + { + "name": "mediaFile", + "choices": [ + { "type": "Blob" }, + { "type": "null" } + ] + } + ] + } + ] + }, + { + "name": "parseMediaFileMetadata", + "type": "function", + "description": "Parse the metadata in a given Blob. If the user agent does not recognize the Blob as a supported file format, it will return null in the callback.", + "parameters": [ + { + "type": "object", + "description": "A Blob", + "name": "mediaFile" + }, + { + "type": "function", + "name": "callback", + "parameters": [ + { + "name": "metadata", + "choices": [ + {"$ref": "MediaFileMetadata"}, + { "type": "null" } + ] + } + ] + } + ] + } + ] + } +] diff --git a/chrome/common/extensions/api/extension_api.cc b/chrome/common/extensions/api/extension_api.cc index 7c55165..30bf4fc 100644 --- a/chrome/common/extensions/api/extension_api.cc +++ b/chrome/common/extensions/api/extension_api.cc @@ -110,6 +110,7 @@ ExtensionAPI::ExtensionAPI() { IDR_EXTENSION_API_JSON_EXPERIMENTAL_INPUT_VIRTUALKEYBOARD, IDR_EXTENSION_API_JSON_EXPERIMENTAL_KEYBINDING, IDR_EXTENSION_API_JSON_EXPERIMENTAL_MANAGED_MODE, + IDR_EXTENSION_API_JSON_EXPERIMENTAL_MEDIAGALLERIES, IDR_EXTENSION_API_JSON_EXPERIMENTAL_OFFSCREENTABS, IDR_EXTENSION_API_JSON_EXPERIMENTAL_PROCESSES, IDR_EXTENSION_API_JSON_EXPERIMENTAL_RLZ, diff --git a/chrome/common/extensions/docs/js/api_page_generator.js b/chrome/common/extensions/docs/js/api_page_generator.js index b73f037..720bf77 100644 --- a/chrome/common/extensions/docs/js/api_page_generator.js +++ b/chrome/common/extensions/docs/js/api_page_generator.js @@ -42,6 +42,7 @@ var MODULE_SCHEMAS = [ '../api/experimental.input.virtualKeyboard.json', '../api/experimental.keybinding.json', '../api/experimental.managedMode.json', + '../api/experimental.mediaGalleries.json', '../api/experimental.offscreenTabs.json', '../api/experimental.processes.json', '../api/experimental.rlz.json', diff --git a/chrome/renderer/extensions/extension_dispatcher.cc b/chrome/renderer/extensions/extension_dispatcher.cc index 1833d64..b573baf 100644 --- a/chrome/renderer/extensions/extension_dispatcher.cc +++ b/chrome/renderer/extensions/extension_dispatcher.cc @@ -28,6 +28,7 @@ #include "chrome/renderer/extensions/file_browser_handler_custom_bindings.h" #include "chrome/renderer/extensions/file_browser_private_custom_bindings.h" #include "chrome/renderer/extensions/i18n_custom_bindings.h" +#include "chrome/renderer/extensions/media_gallery_custom_bindings.h" #include "chrome/renderer/extensions/miscellaneous_bindings.h" #include "chrome/renderer/extensions/page_actions_custom_bindings.h" #include "chrome/renderer/extensions/page_capture_custom_bindings.h" @@ -64,6 +65,7 @@ using extensions::FileBrowserHandlerCustomBindings; using extensions::FileBrowserPrivateCustomBindings; using extensions::I18NCustomBindings; using extensions::MiscellaneousBindings; +using extensions::MediaGalleryCustomBindings; using extensions::PageActionsCustomBindings; using extensions::PageCaptureCustomBindings; using extensions::SchemaGeneratedBindings; @@ -357,6 +359,8 @@ void ExtensionDispatcher::RegisterNativeHandlers(ModuleSystem* module_system, module_system->RegisterNativeHandler("extension", scoped_ptr<NativeHandler>( new ExtensionCustomBindings(this))); + module_system->RegisterNativeHandler("experimental_mediaGalleries", + scoped_ptr<NativeHandler>(new MediaGalleryCustomBindings())); module_system->RegisterNativeHandler("experimental_socket", scoped_ptr<NativeHandler>(new ExperimentalSocketCustomBindings())); module_system->RegisterNativeHandler("file_browser_handler", @@ -402,6 +406,8 @@ void ExtensionDispatcher::PopulateSourceMap() { source_map_.RegisterSource("devtools", IDR_DEVTOOLS_CUSTOM_BINDINGS_JS); source_map_.RegisterSource("experimental.declarative", IDR_EXPERIMENTAL_DECLARATIVE_CUSTOM_BINDINGS_JS); + source_map_.RegisterSource("experimental.mediaGalleries", + IDR_MEDIA_GALLERY_CUSTOM_BINDINGS_JS); source_map_.RegisterSource("experimental.offscreen", IDR_EXPERIMENTAL_OFFSCREENTABS_CUSTOM_BINDINGS_JS); source_map_.RegisterSource("experimental.socket", diff --git a/chrome/renderer/extensions/media_gallery_custom_bindings.cc b/chrome/renderer/extensions/media_gallery_custom_bindings.cc new file mode 100644 index 0000000..d5d6807 --- /dev/null +++ b/chrome/renderer/extensions/media_gallery_custom_bindings.cc @@ -0,0 +1,38 @@ +// 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. + +#include "chrome/renderer/extensions/media_gallery_custom_bindings.h" + +#include "content/public/renderer/render_view.h" +#include "grit/renderer_resources.h" +#include "v8/include/v8.h" + +namespace extensions { + +MediaGalleryCustomBindings::MediaGalleryCustomBindings() + : ChromeV8Extension(NULL) { + RouteStaticFunction("CreateMediaGalleryObject", &CreateMediaGalleryObject); +} + +// static +v8::Handle<v8::Value> MediaGalleryCustomBindings::CreateMediaGalleryObject( + const v8::Arguments& args) { + if (args.Length() != 3 || !args[0]->IsUint32() || args[1]->IsNull() || + !args[1]->IsString() || !args[2]->IsUint32()) { + NOTREACHED() << "Bad arguments"; + return v8::Undefined(); + } + + std::string name; + name = *v8::String::Utf8Value(args[1]->ToString()); + if (name.empty()) + return v8::Undefined(); + + // TODO(vandebo) Create and return a MediaGallery object. + // int id = args[0]->Uint32Value(); + // int flags = args[2]->Uint32Value(); + return v8::Undefined(); +} + +} // namespace extensions diff --git a/chrome/renderer/extensions/media_gallery_custom_bindings.h b/chrome/renderer/extensions/media_gallery_custom_bindings.h new file mode 100644 index 0000000..2889512 --- /dev/null +++ b/chrome/renderer/extensions/media_gallery_custom_bindings.h @@ -0,0 +1,28 @@ +// 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_RENDERER_EXTENSIONS_MEDIA_GALLERY_CUSTOM_BINDINGS_H_ +#define CHROME_RENDERER_EXTENSIONS_MEDIA_GALLERY_CUSTOM_BINDINGS_H_ +#pragma once + +#include "chrome/renderer/extensions/chrome_v8_extension.h" + +namespace extensions { + +// Implements custom bindings for the media gallery API. +class MediaGalleryCustomBindings : public ChromeV8Extension { + public: + MediaGalleryCustomBindings(); + + private: + static v8::Handle<v8::Value> CreateMediaGalleryObject( + const v8::Arguments& args); + + DISALLOW_COPY_AND_ASSIGN(MediaGalleryCustomBindings); +}; + +} // extensions + +#endif // CHROME_RENDERER_EXTENSIONS_MEDIA_GALLERY_CUSTOM_BINDINGS_H_ + diff --git a/chrome/renderer/renderer_resources.grd b/chrome/renderer/renderer_resources.grd index 21d6949..9e4a9ae 100644 --- a/chrome/renderer/renderer_resources.grd +++ b/chrome/renderer/renderer_resources.grd @@ -40,6 +40,7 @@ without changes to the corresponding grd file. fb9 --> <include name="IDR_FILE_BROWSER_PRIVATE_CUSTOM_BINDINGS_JS" file="resources\extensions\file_browser_private_custom_bindings.js" type="BINDATA" /> <include name="IDR_I18N_CUSTOM_BINDINGS_JS" file="resources\extensions\i18n_custom_bindings.js" type="BINDATA" /> <include name="IDR_INPUT_IME_CUSTOM_BINDINGS_JS" file="resources\extensions\input.ime_custom_bindings.js" type="BINDATA" /> + <include name="IDR_MEDIA_GALLERY_CUSTOM_BINDINGS_JS" file="resources\extensions\experimental.media_galleries_custom_bindings.js" type="BINDATA" /> <include name="IDR_OMNIBOX_CUSTOM_BINDINGS_JS" file="resources\extensions\omnibox_custom_bindings.js" type="BINDATA" /> <include name="IDR_PAGE_ACTIONS_CUSTOM_BINDINGS_JS" file="resources\extensions\page_actions_custom_bindings.js" type="BINDATA" /> <include name="IDR_PAGE_ACTION_CUSTOM_BINDINGS_JS" file="resources\extensions\page_action_custom_bindings.js" type="BINDATA" /> diff --git a/chrome/renderer/resources/extensions/experimental.media_galleries_custom_bindings.js b/chrome/renderer/resources/extensions/experimental.media_galleries_custom_bindings.js new file mode 100644 index 0000000..bc146a1 --- /dev/null +++ b/chrome/renderer/resources/extensions/experimental.media_galleries_custom_bindings.js @@ -0,0 +1,29 @@ +// 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. + +// Custom bindings for the Media Gallery API. + +var mediaGalleriesNatives = requireNative('experimental_mediaGalleries'); +var CreateMediaGalleryObject = mediaGalleriesNatives.CreateMediaGalleryObject; + +var chromeHidden = requireNative('chrome_hidden').GetChromeHidden(); + +chromeHidden.registerCustomHook('experimental.mediaGalleries', + function(bindingsAPI, extensionId) { + var apiFunctions = bindingsAPI.apiFunctions; + + apiFunctions.setCustomCallback('getMediaGalleries', + function(name, request, response) { + var result = []; + var resp = response ? chromeHidden.JSON.parse(response) : []; + for (var i = 0; i < resp.length; i++) { + result.push(CreateMediaGalleryObject(resp[i].id, resp[i].name, + resp[i].flags)); + + } + if (request.callback) + request.callback(result); + request.callback = null; + }); +}); diff --git a/chrome/test/data/extensions/api_test/README.txt b/chrome/test/data/extensions/api_test/README.txt index 06088f1..957526a 100644 --- a/chrome/test/data/extensions/api_test/README.txt +++ b/chrome/test/data/extensions/api_test/README.txt @@ -11,7 +11,7 @@ To write a new test: (1) Add a new browser_test which is a subclass of ExtensionApiTest. This test should call RunExtensionTest("extension_name") to kick off the test. See -extension_bookmarks_apitest.cc for an example. +bookmark_extension_apitest.cc for an example. (2) Create an extension of in this directory of the same name as the extension that your test referred to ("extension_name" above). This test should load diff --git a/chrome/test/data/extensions/api_test/media_gallery/manifest.json b/chrome/test/data/extensions/api_test/media_gallery/manifest.json new file mode 100644 index 0000000..8f3e263 --- /dev/null +++ b/chrome/test/data/extensions/api_test/media_gallery/manifest.json @@ -0,0 +1,10 @@ +{ + "name": "chrome.experimental.mediaGalleries", + "version": "0.1", + "manifest_version": 2, + "description": "end-to-end browser test for chrome.experimental.mediaGalleries API", + "background": { + "scripts": ["test.js"] + }, + "permissions": ["experimental"] +} diff --git a/chrome/test/data/extensions/api_test/media_gallery/test.js b/chrome/test/data/extensions/api_test/media_gallery/test.js new file mode 100644 index 0000000..2759c4e --- /dev/null +++ b/chrome/test/data/extensions/api_test/media_gallery/test.js @@ -0,0 +1,28 @@ +// 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. + +var mediaGalleries = chrome.experimental.mediaGalleries; +var emptyListCallback = function(results) { + chrome.test.assertEq(results, []); +}; +var nullCallback = function(results) { + chrome.test.assertEq(results, null); +}; + +chrome.test.runTests([ + function getGalleries() { + mediaGalleries.getMediaGalleries( + chrome.test.callbackPass(emptyListCallback)); + }, + + function assembleMediaFile() { + mediaGalleries.assembleMediaFile( + {}, {}, chrome.test.callbackPass(nullCallback)); + }, + + function parseMediaFileMetadata() { + mediaGalleries.parseMediaFileMetadata( + {}, chrome.test.callbackPass(nullCallback)); + }, +]); |