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

Unified Diff: chrome/test/chrome_plugin/test_chrome_plugin.cc

Issue 6576020: Remove Gears from Chrome (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: windows fixes Created 9 years, 9 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 | « chrome/test/chrome_plugin/test_chrome_plugin.h ('k') | chrome/test/chrome_plugin/test_chrome_plugin.def » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/test/chrome_plugin/test_chrome_plugin.cc
diff --git a/chrome/test/chrome_plugin/test_chrome_plugin.cc b/chrome/test/chrome_plugin/test_chrome_plugin.cc
deleted file mode 100644
index 751a9c244f7e5e082e9053ef71bba34d0ff97818..0000000000000000000000000000000000000000
--- a/chrome/test/chrome_plugin/test_chrome_plugin.cc
+++ /dev/null
@@ -1,383 +0,0 @@
-// Copyright (c) 2006-2008 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/test/chrome_plugin/test_chrome_plugin.h"
-
-#include "base/at_exit.h"
-#include "base/basictypes.h"
-#include "base/logging.h"
-#include "base/message_loop.h"
-#include "base/string_util.h"
-#include "chrome/common/chrome_plugin_api.h"
-#include "googleurl/src/gurl.h"
-
-static CPID g_cpid;
-static CPBrowserFuncs g_cpbrowser_funcs;
-static CPRequestFuncs g_cprequest_funcs;
-static CPResponseFuncs g_cpresponse_funcs;
-static TestFuncParams::BrowserFuncs g_cptest_funcs;
-
-// Create a global AtExitManager so that our code can use code from base that
-// uses Singletons, for example. We don't care about static constructors here.
-static base::AtExitManager global_at_exit_manager;
-
-const TestResponsePayload* FindPayload(const char* url) {
- for (size_t i = 0; i < arraysize(kChromeTestPluginPayloads); ++i) {
- if (strcmp(kChromeTestPluginPayloads[i].url, url) == 0)
- return &kChromeTestPluginPayloads[i];
- }
- return NULL;
-}
-
-std::string GetPayloadHeaders(const TestResponsePayload* payload) {
- return StringPrintf(
- "HTTP/1.1 200 OK%c"
- "Content-type: %s%c"
- "%c", 0, payload->mime_type, 0, 0);
-}
-
-void STDCALL InvokeLaterCallback(void* data) {
- Task* task = static_cast<Task*>(data);
- task->Run();
- delete task;
-}
-
-// ResponseStream: Manages the streaming of the payload data.
-
-class ResponseStream : public base::RefCounted<ResponseStream> {
- public:
- ResponseStream(const TestResponsePayload* payload, CPRequest* request);
-
- void Init();
- int GetResponseInfo(CPResponseInfoType type, void* buf, uint32 buf_size);
- int ReadData(void* buf, uint32 buf_size);
-
- private:
- friend class base::RefCounted<ResponseStream>;
-
- ~ResponseStream() {
- request_->pdata = NULL;
- }
-
- // Called asynchronously via InvokeLater.
- void ResponseStarted();
- int ReadCompleted(void* buf, uint32 buf_size);
-
- enum ReadyStates {
- READY_INVALID = 0,
- READY_WAITING = 1,
- READY_GOT_HEADERS = 2,
- READY_GOT_DATA = 3,
- };
- const TestResponsePayload* payload_;
- uint32 offset_;
- int ready_state_;
- CPRequest* request_;
-};
-
-ResponseStream::ResponseStream(const TestResponsePayload* payload,
- CPRequest* request)
- : payload_(payload), offset_(0), ready_state_(READY_INVALID),
- request_(request) {
-}
-
-void ResponseStream::Init() {
- if (payload_->async) {
- // simulate an asynchronous start complete
- ready_state_ = READY_WAITING;
- g_cptest_funcs.invoke_later(
- InvokeLaterCallback,
- // downcast to Task before void, since we upcast from void to Task.
- static_cast<Task*>(
- NewRunnableMethod(this, &ResponseStream::ResponseStarted)),
- 500);
- } else {
- ready_state_ = READY_GOT_DATA;
- }
-}
-
-int ResponseStream::GetResponseInfo(CPResponseInfoType type, void* buf,
- uint32 buf_size) {
- if (ready_state_ < READY_GOT_HEADERS)
- return CPERR_FAILURE;
-
- switch (type) {
- case CPRESPONSEINFO_HTTP_STATUS:
- if (buf)
- memcpy(buf, &payload_->status, buf_size);
- break;
- case CPRESPONSEINFO_HTTP_RAW_HEADERS: {
- std::string headers = GetPayloadHeaders(payload_);
- if (buf_size < headers.size()+1)
- return static_cast<int>(headers.size()+1);
- if (buf)
- memcpy(buf, headers.c_str(), headers.size()+1);
- break;
- }
- default:
- return CPERR_INVALID_VERSION;
- }
-
- return CPERR_SUCCESS;
-}
-
-int ResponseStream::ReadData(void* buf, uint32 buf_size) {
- if (ready_state_ < READY_GOT_DATA) {
- // simulate an asynchronous read complete
- g_cptest_funcs.invoke_later(
- InvokeLaterCallback,
- // downcast to Task before void, since we upcast from void to Task.
- static_cast<Task*>(
- NewRunnableMethod(this, &ResponseStream::ReadCompleted,
- buf, buf_size)),
- 500);
- return CPERR_IO_PENDING;
- }
-
- // synchronously complete the read
- return ReadCompleted(buf, buf_size);
-}
-
-void ResponseStream::ResponseStarted() {
- ready_state_ = READY_GOT_HEADERS;
- g_cpresponse_funcs.start_completed(request_, CPERR_SUCCESS);
-}
-
-int ResponseStream::ReadCompleted(void* buf, uint32 buf_size) {
- uint32 size = static_cast<uint32>(strlen(payload_->body));
- uint32 avail = size - offset_;
- uint32 count = buf_size;
- if (count > avail)
- count = avail;
-
- if (count) {
- memcpy(buf, payload_->body + offset_, count);
- }
-
- offset_ += count;
-
- if (ready_state_ < READY_GOT_DATA) {
- ready_state_ = READY_GOT_DATA;
- g_cpresponse_funcs.read_completed(request_, static_cast<int>(count));
- }
-
- return count;
-}
-
-// CPP Funcs
-
-CPError STDCALL CPP_Shutdown() {
- return CPERR_SUCCESS;
-}
-
-CPBool STDCALL CPP_ShouldInterceptRequest(CPRequest* request) {
- DCHECK(base::strncasecmp(request->url, kChromeTestPluginProtocol,
- arraysize(kChromeTestPluginProtocol) - 1) == 0);
- return FindPayload(request->url) != NULL;
-}
-
-CPError STDCALL CPR_StartRequest(CPRequest* request) {
- const TestResponsePayload* payload = FindPayload(request->url);
- DCHECK(payload);
- ResponseStream* stream = new ResponseStream(payload, request);
- stream->AddRef(); // Released in CPR_EndRequest
- stream->Init();
- request->pdata = stream;
- return payload->async ? CPERR_IO_PENDING : CPERR_SUCCESS;
-}
-
-void STDCALL CPR_EndRequest(CPRequest* request, CPError reason) {
- ResponseStream* stream = static_cast<ResponseStream*>(request->pdata);
- request->pdata = NULL;
- stream->Release(); // balances AddRef in CPR_StartRequest
-}
-
-void STDCALL CPR_SetExtraRequestHeaders(CPRequest* request,
- const char* headers) {
- // doesn't affect us
-}
-
-void STDCALL CPR_SetRequestLoadFlags(CPRequest* request, uint32 flags) {
- // doesn't affect us
-}
-
-void STDCALL CPR_AppendDataToUpload(CPRequest* request, const char* bytes,
- int bytes_len) {
- // doesn't affect us
-}
-
-CPError STDCALL CPR_AppendFileToUpload(CPRequest* request, const char* filepath,
- uint64 offset, uint64 length) {
- // doesn't affect us
- return CPERR_FAILURE;
-}
-
-int STDCALL CPR_GetResponseInfo(CPRequest* request, CPResponseInfoType type,
- void* buf, uint32 buf_size) {
- ResponseStream* stream = static_cast<ResponseStream*>(request->pdata);
- return stream->GetResponseInfo(type, buf, buf_size);
-}
-
-int STDCALL CPR_Read(CPRequest* request, void* buf, uint32 buf_size) {
- ResponseStream* stream = static_cast<ResponseStream*>(request->pdata);
- return stream->ReadData(buf, buf_size);
-}
-
-// RequestResponse: manages the retrieval of response data from the host
-
-class RequestResponse {
- public:
- explicit RequestResponse(const std::string& raw_headers)
- : raw_headers_(raw_headers), offset_(0) {}
- void StartReading(CPRequest* request);
- void ReadCompleted(CPRequest* request, int bytes_read);
-
- private:
- std::string raw_headers_;
- std::string body_;
- int offset_;
-};
-
-void RequestResponse::StartReading(CPRequest* request) {
- int rv = 0;
- const uint32 kReadSize = 4096;
- do {
- body_.resize(offset_ + kReadSize);
- rv = g_cprequest_funcs.read(request, &body_[offset_], kReadSize);
- if (rv > 0)
- offset_ += rv;
- } while (rv > 0);
-
- if (rv != CPERR_IO_PENDING) {
- // Either an error occurred, or we are done.
- ReadCompleted(request, rv);
- }
-}
-
-void RequestResponse::ReadCompleted(CPRequest* request, int bytes_read) {
- if (bytes_read > 0) {
- offset_ += bytes_read;
- StartReading(request);
- return;
- }
-
- body_.resize(offset_);
- bool success = (bytes_read == 0);
- g_cptest_funcs.test_complete(request, success, raw_headers_, body_);
- g_cprequest_funcs.end_request(request, CPERR_CANCELLED);
- delete this;
-}
-
-void STDCALL CPRR_ReceivedRedirect(CPRequest* request, const char* new_url) {
-}
-
-void STDCALL CPRR_StartCompleted(CPRequest* request, CPError result) {
- DCHECK(!request->pdata);
-
- std::string raw_headers;
- int size = g_cprequest_funcs.get_response_info(
- request, CPRESPONSEINFO_HTTP_RAW_HEADERS, NULL, 0);
- int rv = size < 0 ? size : g_cprequest_funcs.get_response_info(
- request, CPRESPONSEINFO_HTTP_RAW_HEADERS,
- WriteInto(&raw_headers, size+1), size);
- if (rv != CPERR_SUCCESS) {
- g_cptest_funcs.test_complete(request, false, std::string(), std::string());
- g_cprequest_funcs.end_request(request, CPERR_CANCELLED);
- return;
- }
-
- RequestResponse* response = new RequestResponse(raw_headers);
- request->pdata = response;
- response->StartReading(request);
-}
-
-void STDCALL CPRR_ReadCompleted(CPRequest* request, int bytes_read) {
- RequestResponse* response =
- reinterpret_cast<RequestResponse*>(request->pdata);
- response->ReadCompleted(request, bytes_read);
-}
-
-int STDCALL CPT_MakeRequest(const char* method, const GURL& url) {
- CPRequest* request = NULL;
- if (g_cpbrowser_funcs.create_request(g_cpid, NULL, method, url.spec().c_str(),
- &request) != CPERR_SUCCESS ||
- !request) {
- return CPERR_FAILURE;
- }
-
- g_cprequest_funcs.set_request_load_flags(request,
- CPREQUESTLOAD_DISABLE_INTERCEPT);
-
- if (strcmp(method, "POST") == 0) {
- g_cprequest_funcs.set_extra_request_headers(
- request, "Content-Type: text/plain");
- g_cprequest_funcs.append_data_to_upload(
- request, kChromeTestPluginPostData,
- arraysize(kChromeTestPluginPostData) - 1);
- }
-
- int rv = g_cprequest_funcs.start_request(request);
- if (rv == CPERR_SUCCESS) {
- CPRR_StartCompleted(request, CPERR_SUCCESS);
- } else if (rv != CPERR_IO_PENDING) {
- g_cprequest_funcs.end_request(request, CPERR_CANCELLED);
- return CPERR_FAILURE;
- }
-
- return CPERR_SUCCESS;
-}
-
-// DLL entry points
-
-CPError STDCALL CP_Initialize(CPID id, const CPBrowserFuncs* bfuncs,
- CPPluginFuncs* pfuncs) {
- if (bfuncs == NULL || pfuncs == NULL)
- return CPERR_FAILURE;
-
- if (CP_GET_MAJOR_VERSION(bfuncs->version) > CP_MAJOR_VERSION)
- return CPERR_INVALID_VERSION;
-
- if (bfuncs->size < sizeof(CPBrowserFuncs) ||
- pfuncs->size < sizeof(CPPluginFuncs))
- return CPERR_INVALID_VERSION;
-
- pfuncs->version = CP_VERSION;
- pfuncs->shutdown = CPP_Shutdown;
- pfuncs->should_intercept_request = CPP_ShouldInterceptRequest;
-
- static CPRequestFuncs request_funcs;
- request_funcs.start_request = CPR_StartRequest;
- request_funcs.end_request = CPR_EndRequest;
- request_funcs.set_extra_request_headers = CPR_SetExtraRequestHeaders;
- request_funcs.set_request_load_flags = CPR_SetRequestLoadFlags;
- request_funcs.append_data_to_upload = CPR_AppendDataToUpload;
- request_funcs.get_response_info = CPR_GetResponseInfo;
- request_funcs.read = CPR_Read;
- request_funcs.append_file_to_upload = CPR_AppendFileToUpload;
- pfuncs->request_funcs = &request_funcs;
-
- static CPResponseFuncs response_funcs;
- response_funcs.received_redirect = CPRR_ReceivedRedirect;
- response_funcs.start_completed = CPRR_StartCompleted;
- response_funcs.read_completed = CPRR_ReadCompleted;
- pfuncs->response_funcs = &response_funcs;
-
- g_cpid = id;
- g_cpbrowser_funcs = *bfuncs;
- g_cprequest_funcs = *bfuncs->request_funcs;
- g_cpresponse_funcs = *bfuncs->response_funcs;
- g_cpbrowser_funcs = *bfuncs;
-
- const char* protocols[] = {kChromeTestPluginProtocol};
- g_cpbrowser_funcs.enable_request_intercept(g_cpid, protocols, 1);
- return CPERR_SUCCESS;
-}
-
-int STDCALL CP_Test(void* vparam) {
- TestFuncParams* param = reinterpret_cast<TestFuncParams*>(vparam);
- param->pfuncs.test_make_request = CPT_MakeRequest;
-
- g_cptest_funcs = param->bfuncs;
- return CPERR_SUCCESS;
-}
« no previous file with comments | « chrome/test/chrome_plugin/test_chrome_plugin.h ('k') | chrome/test/chrome_plugin/test_chrome_plugin.def » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698