diff options
author | vandebo@chromium.org <vandebo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-11 21:45:25 +0000 |
---|---|---|
committer | vandebo@chromium.org <vandebo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-11 21:45:25 +0000 |
commit | bc49ea18f1564a7e60335217d1d668fab6bdffbf (patch) | |
tree | 48c39b2e8baafb7972340ec7251ef36a97867da3 /chrome/renderer/extensions | |
parent | cba5b5da09ae6aca0601e5ec88d12199cce4fb0a (diff) | |
download | chromium_src-bc49ea18f1564a7e60335217d1d668fab6bdffbf.zip chromium_src-bc49ea18f1564a7e60335217d1d668fab6bdffbf.tar.gz chromium_src-bc49ea18f1564a7e60335217d1d668fab6bdffbf.tar.bz2 |
Initial extension bindings for Media Gallery API.
BUG=110823
TEST=NONE
Review URL: https://chromiumcodereview.appspot.com/10256015
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@136677 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/extensions')
3 files changed, 97 insertions, 0 deletions
diff --git a/chrome/renderer/extensions/extension_dispatcher.cc b/chrome/renderer/extensions/extension_dispatcher.cc index 2d61902..1d96259 100644 --- a/chrome/renderer/extensions/extension_dispatcher.cc +++ b/chrome/renderer/extensions/extension_dispatcher.cc @@ -31,6 +31,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" @@ -77,6 +78,7 @@ using extensions::FileBrowserHandlerCustomBindings; using extensions::FileBrowserPrivateCustomBindings; using extensions::I18NCustomBindings; using extensions::MiscellaneousBindings; +using extensions::MediaGalleryCustomBindings; using extensions::PageActionsCustomBindings; using extensions::PageCaptureCustomBindings; using extensions::SendRequestNatives; @@ -469,6 +471,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_usb", scoped_ptr<NativeHandler>(new ExperimentalUsbCustomBindings())); module_system->RegisterNativeHandler("file_browser_handler", @@ -518,6 +522,8 @@ void ExtensionDispatcher::PopulateSourceMap() { source_map_.RegisterSource("declarativeWebRequest", IDR_DECLARATIVE_WEBREQUEST_CUSTOM_BINDINGS_JS); source_map_.RegisterSource("devtools", IDR_DEVTOOLS_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.runtime", 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..e87b9e40 --- /dev/null +++ b/chrome/renderer/extensions/media_gallery_custom_bindings.cc @@ -0,0 +1,57 @@ +// 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) { + RouteFunction( + "GetMediaFileSystemObject", + base::Bind(&MediaGalleryCustomBindings::GetMediaFileSystemObject, + base::Unretained(this))); + RouteFunction( + "ExtractEmbeddedThumbnails", + base::Bind(&MediaGalleryCustomBindings::ExtractEmbeddedThumbnails, + base::Unretained(this))); +} + +v8::Handle<v8::Value> MediaGalleryCustomBindings::GetMediaFileSystemObject( + const v8::Arguments& args) { + if (args.Length() != 1) { + NOTREACHED(); + return v8::Undefined(); + } + if (!args[0]->IsString()) { + NOTREACHED(); + return v8::Undefined(); + } + + std::string file_system_url; + file_system_url = *v8::String::Utf8Value(args[1]->ToString()); + if (file_system_url.empty()) + return v8::Undefined(); + + // TODO(vandebo) Create and return a FileSystem object. + return v8::Undefined(); +} + +v8::Handle<v8::Value> MediaGalleryCustomBindings::ExtractEmbeddedThumbnails( + const v8::Arguments& args) { + if (args.Length() != 1) { + NOTREACHED() << "Bad arguments"; + return v8::Undefined(); + } + // TODO(vandebo) Check that the object is a FileEntry. + + // TODO(vandebo) Create and return a Directory entry object. + return v8::Null(); +} + +} // 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..4e3744e --- /dev/null +++ b/chrome/renderer/extensions/media_gallery_custom_bindings.h @@ -0,0 +1,34 @@ +// 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: + // FileSystemObject GetMediaFileSystem(string file_system_url): construct + // a file system object from a file system url. + v8::Handle<v8::Value> GetMediaFileSystemObject(const v8::Arguments& args); + + // DirectoryReader GetMediaFileSystem(FileEntry): synchronously return a + // directory reader for a virtual directory. The directory will contain + // all of the thumbnails embedded in the passed file. + v8::Handle<v8::Value> ExtractEmbeddedThumbnails(const v8::Arguments& args); + + DISALLOW_COPY_AND_ASSIGN(MediaGalleryCustomBindings); +}; + +} // extensions + +#endif // CHROME_RENDERER_EXTENSIONS_MEDIA_GALLERY_CUSTOM_BINDINGS_H_ + |