blob: 45dcf36564821fa95848bf6b9a381d410090d1d9 [file] [log] [blame]
// Copyright (c) 2013 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 CONTENT_CHILD_NPAPI_URL_FETCHER_H_
#define CONTENT_CHILD_NPAPI_URL_FETCHER_H_
#include <string>
#include "base/memory/scoped_ptr.h"
#include "url/gurl.h"
#include "webkit/child/resource_loader_bridge.h"
namespace webkit_glue {
class MultipartResponseDelegate;
class ResourceLoaderBridge;
}
namespace content {
class PluginStreamUrl;
// Fetches URLS for a plugin using ResourceDispatcher.
class PluginURLFetcher : public webkit_glue::ResourceLoaderBridge::Peer {
public:
PluginURLFetcher(PluginStreamUrl* plugin_stream,
const GURL& url,
const GURL& first_party_for_cookies,
const std::string& method,
const char* buf,
unsigned int len,
const GURL& referrer,
bool notify_redirects,
bool is_plugin_src_load,
int origin_pid,
int render_view_id,
unsigned long resource_id);
virtual ~PluginURLFetcher();
// Cancels the current request.
void Cancel();
// Called with the plugin's reply to NPP_URLRedirectNotify.
void URLRedirectResponse(bool allow);
bool pending_failure_notification() { return pending_failure_notification_; }
private:
// webkit_glue::ResourceLoaderBridge::Peer implementation:
virtual void OnUploadProgress(uint64 position, uint64 size) OVERRIDE;
virtual bool OnReceivedRedirect(const GURL& new_url,
const webkit_glue::ResourceResponseInfo& info,
bool* has_new_first_party_for_cookies,
GURL* new_first_party_for_cookies) OVERRIDE;
virtual void OnReceivedResponse(
const webkit_glue::ResourceResponseInfo& info) OVERRIDE;
virtual void OnDownloadedData(int len, int encoded_data_length) OVERRIDE;
virtual void OnReceivedData(const char* data,
int data_length,
int encoded_data_length) OVERRIDE;
virtual void OnCompletedRequest(
int error_code,
bool was_ignored_by_handler,
const std::string& security_info,
const base::TimeTicks& completion_time) OVERRIDE;
PluginStreamUrl* plugin_stream_;
GURL url_;
GURL first_party_for_cookies_;
std::string method_;
GURL referrer_;
bool notify_redirects_;
bool is_plugin_src_load_;
unsigned long resource_id_;
int64 data_offset_;
bool pending_failure_notification_;
scoped_ptr<webkit_glue::MultipartResponseDelegate> multipart_delegate_;
scoped_ptr<webkit_glue::ResourceLoaderBridge> bridge_;
DISALLOW_COPY_AND_ASSIGN(PluginURLFetcher);
};
} // namespace content
#endif // CONTENT_CHILD_NPAPI_URL_FETCHER_H_