106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen/* 206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * Copyright (C) 2010 Apple Inc. All rights reserved. 306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * 406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * Redistribution and use in source and binary forms, with or without 506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * modification, are permitted provided that the following conditions 606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * are met: 706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * 1. Redistributions of source code must retain the above copyright 806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * notice, this list of conditions and the following disclaimer. 906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * 2. Redistributions in binary form must reproduce the above copyright 1006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * notice, this list of conditions and the following disclaimer in the 1106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * documentation and/or other materials provided with the distribution. 1206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * 1306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' 1406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 1506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 1606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS 1706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 1806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 1906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 2006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 2106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 2206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 2306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * THE POSSIBILITY OF SUCH DAMAGE. 2406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen */ 2506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 2606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#ifndef TestInvocation_h 2706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#define TestInvocation_h 2806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 2981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#include <string> 3006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#include <WebKit2/WKRetainPtr.h> 31ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block#include <wtf/Noncopyable.h> 3206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 3306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsennamespace WTR { 3406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 35ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochclass TestInvocation { 36ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch WTF_MAKE_NONCOPYABLE(TestInvocation); 3706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenpublic: 3881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch TestInvocation(const std::string& pathOrURL); 3906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen ~TestInvocation(); 4006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 4181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch void setIsPixelTest(const std::string& expectedPixelHash); 4281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 4306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen void invoke(); 44db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block void didReceiveMessageFromInjectedBundle(WKStringRef messageName, WKTypeRef messageBody); 45e14391e94c850b8bd03680c23b38978db68687a8John Reck WKRetainPtr<WKTypeRef> didReceiveSynchronousMessageFromInjectedBundle(WKStringRef messageName, WKTypeRef messageBody); 4606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 4706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenprivate: 4806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen void dump(const char*); 492bde8e466a4451c7319e3a072d118917957d6554Steve Block void dumpPixelsAndCompareWithExpected(WKImageRef); 5081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 5106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen WKRetainPtr<WKURLRef> m_url; 5281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch std::string m_pathOrURL; 5381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 5481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch bool m_dumpPixels; 5581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch std::string m_expectedPixelHash; 5606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 5706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen // Invocation state 58ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block bool m_gotInitialResponse; 59ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block bool m_gotFinalMessage; 6081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch bool m_gotRepaint; 61ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block bool m_error; 6206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}; 6306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 6406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen} // namespace WTR 6506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 6606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#endif // TestInvocation_h 67