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

Unified Diff: content/renderer/npapi/webplugin_impl.cc

Issue 1662013002: Remove some dead NPAPI code after r363119. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: remove unused functions Created 4 years, 11 months 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/renderer/npapi/webplugin_impl.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/npapi/webplugin_impl.cc
diff --git a/content/renderer/npapi/webplugin_impl.cc b/content/renderer/npapi/webplugin_impl.cc
index 7a6b05951137ed7a4ca2d91861d4fffd65c2e8bf..9a7714d336316a53cbd99cc00e322a4cbbae0d2e 100644
--- a/content/renderer/npapi/webplugin_impl.cc
+++ b/content/renderer/npapi/webplugin_impl.cc
@@ -47,7 +47,6 @@
#include "third_party/WebKit/public/platform/WebURL.h"
#include "third_party/WebKit/public/platform/WebURLError.h"
#include "third_party/WebKit/public/platform/WebURLLoader.h"
-#include "third_party/WebKit/public/platform/WebURLLoaderClient.h"
#include "third_party/WebKit/public/platform/WebURLResponse.h"
#include "third_party/WebKit/public/web/WebConsoleMessage.h"
#include "third_party/WebKit/public/web/WebDocument.h"
@@ -83,7 +82,6 @@ using blink::WebString;
using blink::WebURL;
using blink::WebURLError;
using blink::WebURLLoader;
-using blink::WebURLLoaderClient;
using blink::WebURLLoaderOptions;
using blink::WebURLRequest;
using blink::WebURLResponse;
@@ -92,148 +90,8 @@ using blink::WebView;
namespace content {
-namespace {
-
-// This class handles individual multipart responses. It is instantiated when
-// we receive HTTP status code 206 in the HTTP response. This indicates
-// that the response could have multiple parts each separated by a boundary
-// specified in the response header.
-class MultiPartResponseClient : public WebURLLoaderClient {
- public:
- explicit MultiPartResponseClient(WebPluginResourceClient* resource_client)
- : byte_range_lower_bound_(0), resource_client_(resource_client) {}
-
- void willFollowRedirect(WebURLLoader*,
- WebURLRequest&,
- const WebURLResponse&) override {}
- void didSendData(WebURLLoader*,
- unsigned long long,
- unsigned long long) override {}
-
- // Called when the multipart parser encounters an embedded multipart
- // response.
- void didReceiveResponse(WebURLLoader*,
- const WebURLResponse& response) override {
- int64_t byte_range_upper_bound, instance_size;
- if (!MultipartResponseDelegate::ReadContentRanges(
- response,
- &byte_range_lower_bound_,
- &byte_range_upper_bound,
- &instance_size)) {
- NOTREACHED();
- }
- }
-
- // Receives individual part data from a multipart response.
- void didReceiveData(WebURLLoader*,
- const char* data,
- int data_length,
- int encoded_data_length) override {
- // TODO(ananta)
- // We should defer further loads on multipart resources on the same lines
- // as regular resources requested by plugins to prevent reentrancy.
- resource_client_->DidReceiveData(
- data, data_length, byte_range_lower_bound_);
- byte_range_lower_bound_ += data_length;
- }
-
- void didFinishLoading(WebURLLoader*,
- double finishTime,
- int64_t total_encoded_data_length) override {}
- void didFail(WebURLLoader*, const WebURLError&) override {}
-
- private:
- // The lower bound of the byte range.
- int64_t byte_range_lower_bound_;
- // The handler for the data.
- WebPluginResourceClient* resource_client_;
-};
-
-class HeaderFlattener : public WebHTTPHeaderVisitor {
- public:
- explicit HeaderFlattener(std::string* buf) : buf_(buf) {
- }
-
- void visitHeader(const WebString& name, const WebString& value) override {
- // TODO(darin): Should we really exclude headers with an empty value?
- if (!name.isEmpty() && !value.isEmpty()) {
- buf_->append(name.utf8());
- buf_->append(": ");
- buf_->append(value.utf8());
- buf_->append("\n");
- }
- }
-
- private:
- std::string* buf_;
-};
-
-std::string GetAllHeaders(const WebURLResponse& response) {
- // TODO(darin): It is possible for httpStatusText to be empty and still have
- // an interesting response, so this check seems wrong.
- std::string result;
- const WebString& status = response.httpStatusText();
- if (status.isEmpty())
- return result;
-
- // TODO(darin): Shouldn't we also report HTTP version numbers?
- result = base::StringPrintf("HTTP %d ", response.httpStatusCode());
- result.append(status.utf8());
- result.append("\n");
-
- HeaderFlattener flattener(&result);
- response.visitHTTPHeaderFields(&flattener);
-
- return result;
-}
-
-struct ResponseInfo {
- GURL url;
- std::string mime_type;
- uint32_t last_modified;
- uint32_t expected_length;
-};
-
-void GetResponseInfo(const WebURLResponse& response,
- ResponseInfo* response_info) {
- response_info->url = response.url();
- response_info->mime_type = response.mimeType().utf8();
-
- // Measured in seconds since 12:00 midnight GMT, January 1, 1970.
- response_info->last_modified =
- static_cast<uint32_t>(response.lastModifiedDate());
-
- // If the length comes in as -1, then it indicates that it was not
- // read off the HTTP headers. We replicate Safari webkit behavior here,
- // which is to set it to 0.
- response_info->expected_length =
- static_cast<uint32_t>(std::max(response.expectedContentLength(), 0LL));
-
- WebString content_encoding =
- response.httpHeaderField(WebString::fromUTF8("Content-Encoding"));
- if (!content_encoding.isNull() &&
- !base::EqualsASCII(base::StringPiece16(content_encoding), "identity")) {
- // Don't send the compressed content length to the plugin, which only
- // cares about the decoded length.
- response_info->expected_length = 0;
- }
-}
-
-} // namespace
-
// blink::WebPlugin ----------------------------------------------------------
-struct WebPluginImpl::ClientInfo {
- unsigned long id;
- WebPluginResourceClient* client;
- blink::WebURLRequest request;
- bool pending_failure_notification;
- linked_ptr<blink::WebURLLoader> loader;
- bool notify_redirects;
- bool is_plugin_src_load;
- int64_t data_offset;
-};
-
bool WebPluginImpl::initialize(WebPluginContainer* container) {
if (!render_view_.get()) {
LOG(ERROR) << "No RenderView";
@@ -427,51 +285,6 @@ bool WebPluginImpl::isPlaceholder() {
return false;
}
-WebPluginImpl::LoaderClient::LoaderClient(WebPluginImpl* parent)
- : parent_(parent) {}
-
-void WebPluginImpl::LoaderClient::willFollowRedirect(
- blink::WebURLLoader* loader, blink::WebURLRequest& new_request,
- const blink::WebURLResponse& redirect_response) {
- parent_->willFollowRedirect(loader, new_request, redirect_response);
-}
-
-void WebPluginImpl::LoaderClient::didSendData(
- blink::WebURLLoader* loader, unsigned long long bytesSent,
- unsigned long long totalBytesToBeSent) {
- parent_->didSendData(loader, bytesSent, totalBytesToBeSent);
-}
-
-void WebPluginImpl::LoaderClient::didReceiveResponse(
- blink::WebURLLoader* loader, const blink::WebURLResponse& response) {
- parent_->didReceiveResponse(loader, response);
-}
-
-void WebPluginImpl::LoaderClient::didDownloadData(
- blink::WebURLLoader* loader, int dataLength, int encodedDataLength) {
-}
-
-void WebPluginImpl::LoaderClient::didReceiveData(
- blink::WebURLLoader* loader, const char* data,
- int dataLength, int encodedDataLength) {
- parent_->didReceiveData(loader, data, dataLength, encodedDataLength);
-}
-
-void WebPluginImpl::LoaderClient::didReceiveCachedMetadata(
- blink::WebURLLoader* loader, const char* data, int dataLength) {
-}
-
-void WebPluginImpl::LoaderClient::didFinishLoading(
- blink::WebURLLoader* loader, double finishTime,
- int64_t total_encoded_data_length) {
- parent_->didFinishLoading(loader, finishTime);
-}
-
-void WebPluginImpl::LoaderClient::didFail(
- blink::WebURLLoader* loader, const blink::WebURLError& error) {
- parent_->didFail(loader, error);
-}
-
// -----------------------------------------------------------------------------
WebPluginImpl::WebPluginImpl(
@@ -495,8 +308,7 @@ WebPluginImpl::WebPluginImpl(
ignore_response_error_(false),
file_path_(file_path),
mime_type_(base::ToLowerASCII(base::UTF16ToASCII(
- base::StringPiece16(params.mimeType)))),
- loader_client_(this) {
+ base::StringPiece16(params.mimeType)))) {
DCHECK_EQ(params.attributeNames.size(), params.attributeValues.size());
for (size_t i = 0; i < params.attributeNames.size(); ++i) {
@@ -555,19 +367,6 @@ GURL WebPluginImpl::CompleteURL(const char* url) {
return webframe_->document().completeURL(WebString::fromUTF8(url));
}
-void WebPluginImpl::CancelResource(unsigned long id) {
- for (size_t i = 0; i < clients_.size(); ++i) {
- if (clients_[i].id == id) {
- if (clients_[i].loader.get()) {
- clients_[i].loader->setDefersLoading(false);
- clients_[i].loader->cancel();
- RemoveClient(i);
- }
- return;
- }
- }
-}
-
bool WebPluginImpl::SetPostData(WebURLRequest* request,
const char* buf,
uint32_t length) {
@@ -746,23 +545,6 @@ std::string WebPluginImpl::GetCookies(const GURL& url,
cookie_jar->cookies(url, first_party_for_cookies)));
}
-void WebPluginImpl::URLRedirectResponse(bool allow, int resource_id) {
- for (size_t i = 0; i < clients_.size(); ++i) {
- if (clients_[i].id == static_cast<unsigned long>(resource_id)) {
- if (clients_[i].loader.get()) {
- if (allow) {
- clients_[i].loader->setDefersLoading(false);
- } else {
- clients_[i].loader->cancel();
- if (clients_[i].client)
- clients_[i].client->DidFail(clients_[i].id);
- }
- }
- break;
- }
- }
-}
-
#if defined(OS_MACOSX)
WebPluginAcceleratedSurface* WebPluginImpl::GetAcceleratedSurface(
gfx::GpuPreference gpu_preference) {
@@ -825,179 +607,6 @@ void WebPluginImpl::InvalidateRect(const gfx::Rect& rect) {
container_->invalidateRect(rect);
}
-WebPluginResourceClient* WebPluginImpl::GetClientFromLoader(
- WebURLLoader* loader) {
- ClientInfo* client_info = GetClientInfoFromLoader(loader);
- if (client_info)
- return client_info->client;
- return NULL;
-}
-
-WebPluginImpl::ClientInfo* WebPluginImpl::GetClientInfoFromLoader(
- WebURLLoader* loader) {
- for (size_t i = 0; i < clients_.size(); ++i) {
- if (clients_[i].loader.get() == loader)
- return &clients_[i];
- }
-
- NOTREACHED();
- return 0;
-}
-
-void WebPluginImpl::willFollowRedirect(WebURLLoader* loader,
- WebURLRequest& new_request,
- const WebURLResponse& response) {
- // TODO(jam): THIS LOGIC IS COPIED IN PluginURLFetcher::OnReceivedRedirect
- // until kDirectNPAPIRequests is the default and we can remove this old path.
- WebPluginImpl::ClientInfo* client_info = GetClientInfoFromLoader(loader);
- if (client_info) {
- if (net::HttpResponseHeaders::IsRedirectResponseCode(
- response.httpStatusCode())) {
- // If the plugin does not participate in url redirect notifications then
- // just block cross origin 307 POST redirects.
- if (!client_info->notify_redirects) {
- if (response.httpStatusCode() == 307 &&
- base::LowerCaseEqualsASCII(
- new_request.httpMethod().utf8(), "post")) {
- GURL original_request_url(response.url());
- GURL response_url(new_request.url());
- if (original_request_url.GetOrigin() != response_url.GetOrigin()) {
- loader->setDefersLoading(true);
- loader->cancel();
- client_info->client->DidFail(client_info->id);
- return;
- }
- }
- } else {
- loader->setDefersLoading(true);
- }
- }
- client_info->client->WillSendRequest(new_request.url(),
- response.httpStatusCode());
- }
-}
-
-void WebPluginImpl::didSendData(WebURLLoader* loader,
- unsigned long long bytes_sent,
- unsigned long long total_bytes_to_be_sent) {
-}
-
-void WebPluginImpl::didReceiveResponse(WebURLLoader* loader,
- const WebURLResponse& response) {
- // TODO(jam): THIS LOGIC IS COPIED IN PluginURLFetcher::OnReceivedResponse
- // until kDirectNPAPIRequests is the default and we can remove this old path.
-
- WebPluginResourceClient* client = GetClientFromLoader(loader);
- if (!client)
- return;
-
- ResponseInfo response_info;
- GetResponseInfo(response, &response_info);
- ClientInfo* client_info = GetClientInfoFromLoader(loader);
- if (!client_info)
- return;
-
- // Calling into a plugin could result in reentrancy if the plugin yields
- // control to the OS like entering a modal loop etc. Prevent this by
- // stopping further loading until the plugin notifies us that it is ready to
- // accept data
- loader->setDefersLoading(true);
-
- client->DidReceiveResponse(
- response_info.mime_type,
- GetAllHeaders(response),
- response_info.expected_length,
- response_info.last_modified,
- true);
-
- // Bug http://b/issue?id=925559. The flash plugin would not handle the HTTP
- // error codes in the stream header and as a result, was unaware of the
- // fate of the HTTP requests issued via NPN_GetURLNotify. Webkit and FF
- // destroy the stream and invoke the NPP_DestroyStream function on the
- // plugin if the HTTP request fails.
- const GURL& url = response.url();
- if (url.SchemeIs(url::kHttpScheme) || url.SchemeIs(url::kHttpsScheme)) {
- if (response.httpStatusCode() < 100 || response.httpStatusCode() >= 400) {
- // The plugin instance could be in the process of deletion here.
- // Verify if the WebPluginResourceClient instance still exists before
- // use.
- ClientInfo* client_info = GetClientInfoFromLoader(loader);
- if (client_info) {
- client_info->pending_failure_notification = true;
- }
- }
- }
-}
-
-void WebPluginImpl::didReceiveData(WebURLLoader* loader,
- const char *buffer,
- int data_length,
- int encoded_data_length) {
- WebPluginResourceClient* client = GetClientFromLoader(loader);
- if (!client)
- return;
-
- MultiPartResponseHandlerMap::iterator index =
- multi_part_response_map_.find(client);
- if (index != multi_part_response_map_.end()) {
- MultipartResponseDelegate* multi_part_handler = (*index).second;
- DCHECK(multi_part_handler != NULL);
- multi_part_handler->OnReceivedData(buffer,
- data_length,
- encoded_data_length);
- } else {
- loader->setDefersLoading(true);
- ClientInfo* client_info = GetClientInfoFromLoader(loader);
- client->DidReceiveData(buffer, data_length, client_info->data_offset);
- client_info->data_offset += data_length;
- }
-}
-
-void WebPluginImpl::didFinishLoading(WebURLLoader* loader, double finishTime) {
- ClientInfo* client_info = GetClientInfoFromLoader(loader);
- if (client_info && client_info->client) {
- MultiPartResponseHandlerMap::iterator index =
- multi_part_response_map_.find(client_info->client);
- if (index != multi_part_response_map_.end()) {
- delete (*index).second;
- multi_part_response_map_.erase(index);
- DidStopLoading();
- }
- loader->setDefersLoading(true);
- WebPluginResourceClient* resource_client = client_info->client;
- // The ClientInfo can get deleted in the call to DidFinishLoading below.
- // It is not safe to access this structure after that.
- client_info->client = NULL;
- resource_client->DidFinishLoading(client_info->id);
- }
-}
-
-void WebPluginImpl::didFail(WebURLLoader* loader,
- const WebURLError& error) {
- ClientInfo* client_info = GetClientInfoFromLoader(loader);
- if (client_info && client_info->client) {
- loader->setDefersLoading(true);
- WebPluginResourceClient* resource_client = client_info->client;
- // The ClientInfo can get deleted in the call to DidFail below.
- // It is not safe to access this structure after that.
- client_info->client = NULL;
- resource_client->DidFail(client_info->id);
- }
-}
-
-void WebPluginImpl::RemoveClient(size_t i) {
- clients_.erase(clients_.begin() + i);
-}
-
-void WebPluginImpl::RemoveClient(WebURLLoader* loader) {
- for (size_t i = 0; i < clients_.size(); ++i) {
- if (clients_[i].loader.get() == loader) {
- RemoveClient(i);
- return;
- }
- }
-}
-
void WebPluginImpl::SetContainer(WebPluginContainer* container) {
if (!container)
TearDownPluginInstance(NULL);
@@ -1036,59 +645,10 @@ void WebPluginImpl::DidStopLoading() {
}
}
-void WebPluginImpl::SetDeferResourceLoading(unsigned long resource_id,
- bool defer) {
- std::vector<ClientInfo>::iterator client_index = clients_.begin();
- while (client_index != clients_.end()) {
- ClientInfo& client_info = *client_index;
-
- if (client_info.id == resource_id) {
- client_info.loader->setDefersLoading(defer);
-
- // If we determined that the request had failed via the HTTP headers
- // in the response then we send out a failure notification to the
- // plugin process, as certain plugins don't handle HTTP failure codes
- // correctly.
- if (!defer && client_info.client &&
- client_info.pending_failure_notification) {
- // The ClientInfo and the iterator can become invalid due to the call
- // to DidFail below.
- WebPluginResourceClient* resource_client = client_info.client;
- client_info.loader->cancel();
- clients_.erase(client_index++);
- resource_client->DidFail(resource_id);
- }
- break;
- }
- client_index++;
- }
-}
-
bool WebPluginImpl::IsOffTheRecord() {
return false;
}
-bool WebPluginImpl::HandleHttpMultipartResponse(
- const WebURLResponse& response, WebPluginResourceClient* client) {
- std::string multipart_boundary;
- if (!MultipartResponseDelegate::ReadMultipartBoundary(
- response, &multipart_boundary)) {
- return false;
- }
-
- DidStartLoading();
-
- MultiPartResponseClient* multi_part_response_client =
- new MultiPartResponseClient(client);
-
- MultipartResponseDelegate* multi_part_response_handler =
- new MultipartResponseDelegate(multi_part_response_client, NULL,
- response,
- multipart_boundary);
- multi_part_response_map_[client] = multi_part_response_handler;
- return true;
-}
-
bool WebPluginImpl::ReinitializePluginForResponse(
WebURLLoader* loader) {
WebFrame* webframe = webframe_;
@@ -1169,23 +729,6 @@ void WebPluginImpl::TearDownPluginInstance(
container_->clearScriptObjects();
}
- // Cancel any pending requests because otherwise this deleted object will
- // be called by the ResourceDispatcher.
- std::vector<ClientInfo>::iterator client_index = clients_.begin();
- while (client_index != clients_.end()) {
- ClientInfo& client_info = *client_index;
-
- if (loader_to_ignore == client_info.loader) {
- client_index++;
- continue;
- }
-
- if (client_info.loader.get())
- client_info.loader->cancel();
-
- client_index = clients_.erase(client_index);
- }
-
// This needs to be called now and not in the destructor since the
// webframe_ might not be valid anymore.
webframe_ = NULL;
« no previous file with comments | « content/renderer/npapi/webplugin_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698