summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/extensions
diff options
context:
space:
mode:
authorvandebo@chromium.org <vandebo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-11 21:45:25 +0000
committervandebo@chromium.org <vandebo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-11 21:45:25 +0000
commitbc49ea18f1564a7e60335217d1d668fab6bdffbf (patch)
tree48c39b2e8baafb7972340ec7251ef36a97867da3 /chrome/renderer/extensions
parentcba5b5da09ae6aca0601e5ec88d12199cce4fb0a (diff)
downloadchromium_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')
-rw-r--r--chrome/renderer/extensions/extension_dispatcher.cc6
-rw-r--r--chrome/renderer/extensions/media_gallery_custom_bindings.cc57
-rw-r--r--chrome/renderer/extensions/media_gallery_custom_bindings.h34
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_
+