Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(168)

Unified Diff: content/child/npapi/plugin_host.cc

Issue 1426923007: Remove PluginLoadObserver and related logic, it was only used for NPAPI. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/child/BUILD.gn ('k') | content/child/npapi/plugin_instance.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/child/npapi/plugin_host.cc
diff --git a/content/child/npapi/plugin_host.cc b/content/child/npapi/plugin_host.cc
index ea7d0a00274b87a020d6fdb09fdfe9da46430c69..4f3006e0faf31a1b1ec0fced12df43aba4da9aa1 100644
--- a/content/child/npapi/plugin_host.cc
+++ b/content/child/npapi/plugin_host.cc
@@ -16,7 +16,6 @@
#include "build/build_config.h"
#include "content/child/npapi/plugin_instance.h"
#include "content/child/npapi/plugin_lib.h"
-#include "content/child/npapi/plugin_stream_url.h"
#include "content/child/npapi/webplugin_delegate.h"
#include "content/public/common/content_client.h"
#include "content/public/common/content_switches.h"
@@ -339,174 +338,28 @@ void NPN_ReloadPlugins(NPBool reload_pages) {
// Requests a range of bytes for a seekable stream.
NPError NPN_RequestRead(NPStream* stream, NPByteRange* range_list) {
- if (!stream || !range_list)
- return NPERR_GENERIC_ERROR;
-
- scoped_refptr<PluginInstance> plugin(
- reinterpret_cast<PluginInstance*>(stream->ndata));
- if (!plugin.get())
- return NPERR_GENERIC_ERROR;
-
- plugin->RequestRead(stream, range_list);
- return NPERR_NO_ERROR;
-}
-
-// Generic form of GetURL for common code between GetURL and GetURLNotify.
-static NPError GetURLNotify(NPP id,
- const char* url,
- const char* target,
- bool notify,
- void* notify_data) {
- if (!url)
- return NPERR_INVALID_URL;
-
- scoped_refptr<PluginInstance> plugin(FindInstance(id));
- if (!plugin.get()) {
- return NPERR_GENERIC_ERROR;
- }
-
- plugin->RequestURL(url, "GET", target, NULL, 0, notify, notify_data);
- return NPERR_NO_ERROR;
+ return NPERR_GENERIC_ERROR;
}
-// Requests creation of a new stream with the contents of the
-// specified URL; gets notification of the result.
NPError NPN_GetURLNotify(NPP id,
const char* url,
const char* target,
void* notify_data) {
- // This is identical to NPN_GetURL, but after finishing, the
- // browser will call NPP_URLNotify to inform the plugin that
- // it has completed.
-
- // According to the NPAPI documentation, if target == _self
- // or a parent to _self, the browser should return NPERR_INVALID_PARAM,
- // because it can't notify the plugin once deleted. This is
- // absolutely false; firefox doesn't do this, and Flash relies on
- // being able to use this.
-
- // Also according to the NPAPI documentation, we should return
- // NPERR_INVALID_URL if the url requested is not valid. However,
- // this would require that we synchronously start fetching the
- // URL. That just isn't practical. As such, there really is
- // no way to return this error. From looking at the Firefox
- // implementation, it doesn't look like Firefox does this either.
-
- return GetURLNotify(id, url, target, true, notify_data);
+ return NPERR_GENERIC_ERROR;
}
NPError NPN_GetURL(NPP id, const char* url, const char* target) {
- // Notes:
- // Request from the Plugin to fetch content either for the plugin
- // or to be placed into a browser window.
- //
- // If target == null, the browser fetches content and streams to plugin.
- // otherwise, the browser loads content into an existing browser frame.
- // If the target is the window/frame containing the plugin, the plugin
- // may be destroyed.
- // If the target is _blank, a mailto: or news: url open content in a new
- // browser window
- // If the target is _self, no other instance of the plugin is created. The
- // plugin continues to operate in its own window
-
- return GetURLNotify(id, url, target, false, 0);
-}
-
-// Generic form of PostURL for common code between PostURL and PostURLNotify.
-static NPError PostURLNotify(NPP id,
- const char* url,
- const char* target,
- uint32_t len,
- const char* buf,
- NPBool file,
- bool notify,
- void* notify_data) {
- if (!url)
- return NPERR_INVALID_URL;
-
- scoped_refptr<PluginInstance> plugin(FindInstance(id));
- if (!plugin.get()) {
- NOTREACHED();
- return NPERR_GENERIC_ERROR;
- }
-
- std::string post_file_contents;
-
- if (file) {
- // Post data to be uploaded from a file. This can be handled in two
- // ways.
- // 1. Read entire file and send the contents as if it was a post data
- // specified in the argument
- // 2. Send just the file details and read them in the browser at the
- // time of sending the request.
- // Approach 2 is more efficient but complicated. Approach 1 has a major
- // drawback of sending potentially large data over two IPC hops. In a way
- // 'large data over IPC' problem exists as it is in case of plugin giving
- // the data directly instead of in a file.
- // Currently we are going with the approach 1 to get the feature working.
- // We can optimize this later with approach 2.
-
- // TODO(joshia): Design a scheme to send a file descriptor instead of
- // entire file contents across.
-
- // Security alert:
- // ---------------
- // Here we are blindly uploading whatever file requested by a plugin.
- // This is risky as someone could exploit a plugin to send private
- // data in arbitrary locations.
- // A malicious (non-sandboxed) plugin has unfeterred access to OS
- // resources and can do this anyway without using browser's HTTP stack.
- // FWIW, Firefox and Safari don't perform any security checks.
-
- if (!buf)
- return NPERR_FILE_NOT_FOUND;
-
- std::string file_path_ascii(buf);
- base::FilePath file_path;
- static const char kFileUrlPrefix[] = "file:";
- if (base::StartsWith(file_path_ascii, kFileUrlPrefix,
- base::CompareCase::INSENSITIVE_ASCII)) {
- GURL file_url(file_path_ascii);
- DCHECK(file_url.SchemeIsFile());
- net::FileURLToFilePath(file_url, &file_path);
- } else {
- file_path = base::FilePath::FromUTF8Unsafe(file_path_ascii);
- }
-
- base::File::Info post_file_info;
- if (!base::GetFileInfo(file_path, &post_file_info) ||
- post_file_info.is_directory)
- return NPERR_FILE_NOT_FOUND;
-
- if (!base::ReadFileToString(file_path, &post_file_contents))
- return NPERR_FILE_NOT_FOUND;
-
- buf = post_file_contents.c_str();
- len = post_file_contents.size();
- }
-
- // The post data sent by a plugin contains both headers
- // and post data. Example:
- // Content-type: text/html
- // Content-length: 200
- //
- // <200 bytes of content here>
- //
- // Unfortunately, our stream needs these broken apart,
- // so we need to parse the data and set headers and data
- // separately.
- plugin->RequestURL(url, "POST", target, buf, len, notify, notify_data);
- return NPERR_NO_ERROR;
+ return NPERR_GENERIC_ERROR;
}
NPError NPN_PostURLNotify(NPP id,
- const char* url,
- const char* target,
- uint32_t len,
- const char* buf,
- NPBool file,
- void* notify_data) {
- return PostURLNotify(id, url, target, len, buf, file, true, notify_data);
+ const char* url,
+ const char* target,
+ uint32_t len,
+ const char* buf,
+ NPBool file,
+ void* notify_data) {
+ return NPERR_GENERIC_ERROR;
}
NPError NPN_PostURL(NPP id,
@@ -515,28 +368,7 @@ NPError NPN_PostURL(NPP id,
uint32_t len,
const char* buf,
NPBool file) {
- // POSTs data to an URL, either from a temp file or a buffer.
- // If file is true, buf contains a temp file (which host will delete after
- // completing), and len contains the length of the filename.
- // If file is false, buf contains the data to send, and len contains the
- // length of the buffer
- //
- // If target is null,
- // server response is returned to the plugin
- // If target is _current, _self, or _top,
- // server response is written to the plugin window and plugin is unloaded.
- // If target is _new or _blank,
- // server response is written to a new browser window
- // If target is an existing frame,
- // server response goes to that frame.
- //
- // For protocols other than FTP
- // file uploads must be line-end converted from \r\n to \n
- //
- // Note: you cannot specify headers (even a blank line) in a memory buffer,
- // use NPN_PostURLNotify
-
- return PostURLNotify(id, url, target, len, buf, file, false, 0);
+ return NPERR_GENERIC_ERROR;
}
NPError NPN_NewStream(NPP id,
@@ -1098,10 +930,6 @@ NPBool NPN_UnfocusInstance(NPP id, NPFocusDirection direction) {
}
void NPN_URLRedirectResponse(NPP instance, void* notify_data, NPBool allow) {
- scoped_refptr<PluginInstance> plugin(FindInstance(instance));
- if (plugin.get()) {
- plugin->URLRedirectResponse(!!allow, notify_data);
- }
}
} // extern "C"
« no previous file with comments | « content/child/BUILD.gn ('k') | content/child/npapi/plugin_instance.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698