mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-04-09 08:31:53 +02:00
Add new URLRequestTest.BrowserInvalidURL test (issue #888).
git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@1615 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
parent
769616da5f
commit
14f5464fa5
@ -17,6 +17,7 @@
|
|||||||
#include "base/file_util.h"
|
#include "base/file_util.h"
|
||||||
#include "base/files/scoped_temp_dir.h"
|
#include "base/files/scoped_temp_dir.h"
|
||||||
#include "base/strings/stringprintf.h"
|
#include "base/strings/stringprintf.h"
|
||||||
|
#include "base/synchronization/waitable_event.h"
|
||||||
#include "testing/gtest/include/gtest/gtest.h"
|
#include "testing/gtest/include/gtest/gtest.h"
|
||||||
|
|
||||||
// Include after base/bind.h to avoid name collisions with cef_tuple.h.
|
// Include after base/bind.h to avoid name collisions with cef_tuple.h.
|
||||||
@ -1094,3 +1095,89 @@ REQ_TEST(RendererGETRedirect, REQTEST_GET_REDIRECT, false);
|
|||||||
REQ_TEST(RendererPOST, REQTEST_POST, false);
|
REQ_TEST(RendererPOST, REQTEST_POST, false);
|
||||||
REQ_TEST(RendererPOSTWithProgress, REQTEST_POST_WITHPROGRESS, false);
|
REQ_TEST(RendererPOSTWithProgress, REQTEST_POST_WITHPROGRESS, false);
|
||||||
REQ_TEST(RendererHEAD, REQTEST_HEAD, false);
|
REQ_TEST(RendererHEAD, REQTEST_HEAD, false);
|
||||||
|
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
class InvalidURLTestClient : public CefURLRequestClient {
|
||||||
|
public:
|
||||||
|
InvalidURLTestClient()
|
||||||
|
: event_(false, false) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void RunTest() {
|
||||||
|
CefPostTask(TID_UI,
|
||||||
|
NewCefRunnableMethod(this, &InvalidURLTestClient::RunOnUIThread));
|
||||||
|
|
||||||
|
// Wait for the test to complete.
|
||||||
|
event_.Wait();
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual void OnRequestComplete(CefRefPtr<CefURLRequest> client) OVERRIDE {
|
||||||
|
EXPECT_EQ(UR_FAILED, client->GetRequestStatus());
|
||||||
|
|
||||||
|
// Let the call stack unwind before signaling completion.
|
||||||
|
CefPostTask(TID_UI,
|
||||||
|
NewCefRunnableMethod(this, &InvalidURLTestClient::CompleteOnUIThread));
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual void OnUploadProgress(CefRefPtr<CefURLRequest> request,
|
||||||
|
uint64 current,
|
||||||
|
uint64 total) OVERRIDE {
|
||||||
|
EXPECT_TRUE(false); // Not reached.
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual void OnDownloadProgress(CefRefPtr<CefURLRequest> request,
|
||||||
|
uint64 current,
|
||||||
|
uint64 total) OVERRIDE {
|
||||||
|
EXPECT_TRUE(false); // Not reached.
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual void OnDownloadData(CefRefPtr<CefURLRequest> request,
|
||||||
|
const void* data,
|
||||||
|
size_t data_length) OVERRIDE {
|
||||||
|
EXPECT_TRUE(false); // Not reached.
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual bool GetAuthCredentials(
|
||||||
|
bool isProxy,
|
||||||
|
const CefString& host,
|
||||||
|
int port,
|
||||||
|
const CefString& realm,
|
||||||
|
const CefString& scheme,
|
||||||
|
CefRefPtr<CefAuthCallback> callback) OVERRIDE {
|
||||||
|
EXPECT_TRUE(false); // Not reached.
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
void RunOnUIThread() {
|
||||||
|
EXPECT_UI_THREAD();
|
||||||
|
CefRefPtr<CefRequest> request = CefRequest::Create();
|
||||||
|
request->SetMethod("GET");
|
||||||
|
request->SetURL("foo://invalidurl");
|
||||||
|
|
||||||
|
CefURLRequest::Create(request, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CompleteOnUIThread() {
|
||||||
|
EXPECT_UI_THREAD();
|
||||||
|
// Signal that the test is complete.
|
||||||
|
event_.Signal();
|
||||||
|
}
|
||||||
|
|
||||||
|
base::WaitableEvent event_;
|
||||||
|
|
||||||
|
IMPLEMENT_REFCOUNTING(InvalidURLTestClient);
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
|
||||||
|
// Verify that failed requests do not leak references.
|
||||||
|
TEST(URLRequestTest, BrowserInvalidURL) {
|
||||||
|
CefRefPtr<InvalidURLTestClient> client = new InvalidURLTestClient();
|
||||||
|
client->RunTest();
|
||||||
|
|
||||||
|
// Verify that there's only one reference to the client.
|
||||||
|
EXPECT_EQ(1, client->GetRefCt());
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user