mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
tests: Fix CorsTest.Iframe failures (see issue #3348)
Run test initialization after the server has started.
This commit is contained in:
@@ -253,13 +253,16 @@ struct TestSetup {
|
|||||||
return GetResource(request->GetURL(), request->GetMethod());
|
return GetResource(request->GetURL(), request->GetMethod());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Optional initialization after the test server is started.
|
||||||
|
virtual void Initialize() {}
|
||||||
|
|
||||||
// Validate expected initial state.
|
// Validate expected initial state.
|
||||||
void Validate() const { DCHECK(!resources.empty()); }
|
void Validate() const { DCHECK(!resources.empty()); }
|
||||||
|
|
||||||
std::string GetMainURL() const { return resources.front()->GetPathURL(); }
|
std::string GetMainURL() const { return resources.front()->GetPathURL(); }
|
||||||
|
|
||||||
// Returns true if the server will be used.
|
// Returns true if the server will be used.
|
||||||
bool NeedsServer() const {
|
virtual bool NeedsServer() const {
|
||||||
ResourceList::const_iterator it = resources.begin();
|
ResourceList::const_iterator it = resources.begin();
|
||||||
for (; it != resources.end(); ++it) {
|
for (; it != resources.end(); ++it) {
|
||||||
Resource* resource = *it;
|
Resource* resource = *it;
|
||||||
@@ -346,9 +349,7 @@ class TestServerObserver : public test_server::ObserverHelper {
|
|||||||
|
|
||||||
class CorsTestHandler : public RoutingTestHandler {
|
class CorsTestHandler : public RoutingTestHandler {
|
||||||
public:
|
public:
|
||||||
explicit CorsTestHandler(TestSetup* setup) : setup_(setup) {
|
explicit CorsTestHandler(TestSetup* setup) : setup_(setup) {}
|
||||||
setup_->Validate();
|
|
||||||
}
|
|
||||||
|
|
||||||
void RunTest() override {
|
void RunTest() override {
|
||||||
StartServer(base::BindOnce(&CorsTestHandler::TriggerCreateBrowser, this));
|
StartServer(base::BindOnce(&CorsTestHandler::TriggerCreateBrowser, this));
|
||||||
@@ -489,6 +490,9 @@ class CorsTestHandler : public RoutingTestHandler {
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
void TriggerCreateBrowser() {
|
void TriggerCreateBrowser() {
|
||||||
|
setup_->Initialize();
|
||||||
|
setup_->Validate();
|
||||||
|
|
||||||
main_url_ = setup_->GetMainURL();
|
main_url_ = setup_->GetMainURL();
|
||||||
CreateBrowser(main_url_);
|
CreateBrowser(main_url_);
|
||||||
}
|
}
|
||||||
@@ -824,21 +828,48 @@ void SetupIframeRequest(CookieTestSetup* setup,
|
|||||||
setup->AddResource(iframe_resource);
|
setup->AddResource(iframe_resource);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct IframeTestSetup : CookieTestSetup {
|
||||||
|
IframeTestSetup(const std::string& test_name,
|
||||||
|
HandlerType main_handler,
|
||||||
|
HandlerType iframe_handler,
|
||||||
|
const std::string& sandbox_attribs)
|
||||||
|
: test_name_(test_name),
|
||||||
|
main_handler_(main_handler),
|
||||||
|
iframe_handler_(iframe_handler),
|
||||||
|
sandbox_attribs_(sandbox_attribs) {}
|
||||||
|
|
||||||
|
bool NeedsServer() const override {
|
||||||
|
return main_handler_ == HandlerType::SERVER ||
|
||||||
|
iframe_handler_ == HandlerType::SERVER;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Initialize() override {
|
||||||
|
SetupIframeRequest(this, test_name_, main_handler_, &resource_main_,
|
||||||
|
iframe_handler_, &resource_iframe_, sandbox_attribs_);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
const std::string test_name_;
|
||||||
|
const HandlerType main_handler_;
|
||||||
|
const HandlerType iframe_handler_;
|
||||||
|
const std::string sandbox_attribs_;
|
||||||
|
|
||||||
|
CookieResource resource_main_;
|
||||||
|
CookieResource resource_iframe_;
|
||||||
|
};
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
// Test iframe sandbox attributes with different origin combinations.
|
// Test iframe sandbox attributes with different origin combinations.
|
||||||
#define CORS_TEST_IFRAME(test_name, handler_main, handler_iframe, \
|
#define CORS_TEST_IFRAME(test_name, handler_main, handler_iframe, \
|
||||||
sandbox_attribs) \
|
sandbox_attribs) \
|
||||||
TEST(CorsTest, Iframe##test_name) { \
|
TEST(CorsTest, Iframe##test_name) { \
|
||||||
CookieTestSetup setup; \
|
IframeTestSetup setup("CorsTest.Iframe" #test_name, \
|
||||||
CookieResource resource_main, resource_iframe; \
|
HandlerType::handler_main, \
|
||||||
SetupIframeRequest(&setup, "CorsTest.Iframe" #test_name, \
|
HandlerType::handler_iframe, sandbox_attribs); \
|
||||||
HandlerType::handler_main, &resource_main, \
|
CefRefPtr<CorsTestHandler> handler = new CorsTestHandler(&setup); \
|
||||||
HandlerType::handler_iframe, &resource_iframe, \
|
handler->ExecuteTest(); \
|
||||||
sandbox_attribs); \
|
ReleaseAndWaitForDestructor(handler); \
|
||||||
CefRefPtr<CorsTestHandler> handler = new CorsTestHandler(&setup); \
|
|
||||||
handler->ExecuteTest(); \
|
|
||||||
ReleaseAndWaitForDestructor(handler); \
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test all origin combinations (same and cross-origin).
|
// Test all origin combinations (same and cross-origin).
|
||||||
|
Reference in New Issue
Block a user