Add form delegate method that's invoked right before sending a submit event to a...
[WebKit-https.git] / Tools / TestWebKitAPI / mac / PlatformUtilitiesMac.mm
1 /*
2  * Copyright (C) 2010 Apple Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23  * THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 #include "config.h"
27 #include "PlatformUtilities.h"
28
29 #include <WebKit2/WKRetainPtr.h>
30 #include <WebKit2/WKStringCF.h>
31 #include <WebKit2/WKURLCF.h>
32 #include <WebKit2/WKURLResponseNS.h>
33 #include <wtf/OwnArrayPtr.h>
34 #include <wtf/RetainPtr.h>
35
36 namespace TestWebKitAPI {
37 namespace Util {
38
39 void run(bool* done)
40 {
41     while (!*done)
42         [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantPast]];
43 }
44
45 void sleep(double seconds)
46 {
47     usleep(seconds * 1000000);
48 }
49
50 WKStringRef createInjectedBundlePath()
51 {
52     NSString *nsString = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"InjectedBundleTestWebKitAPI.bundle"];
53     return WKStringCreateWithCFString((CFStringRef)nsString);
54 }
55
56 WKURLRef createURLForResource(const char* resource, const char* extension)
57 {
58     NSURL *nsURL = [[NSBundle mainBundle] URLForResource:[NSString stringWithUTF8String:resource] withExtension:[NSString stringWithUTF8String:extension] subdirectory:@"TestWebKitAPI.resources"];
59     return WKURLCreateWithCFURL((CFURLRef)nsURL);
60 }
61
62 WKURLRef URLForNonExistentResource()
63 {
64     NSURL *nsURL = [NSURL URLWithString:@"file:///does-not-exist.html"];
65     return WKURLCreateWithCFURL((CFURLRef)nsURL);
66 }
67
68 WKRetainPtr<WKStringRef> MIMETypeForWKURLResponse(WKURLResponseRef wkResponse)
69 {
70     RetainPtr<NSURLResponse> response(AdoptNS, WKURLResponseCopyNSURLResponse(wkResponse));
71     return adoptWK(WKStringCreateWithCFString((CFStringRef)[response.get() MIMEType]));
72 }
73
74 bool isKeyDown(WKNativeEventPtr event)
75 {
76     return [event type] == NSKeyDown;
77 }
78
79 std::string toSTD(NSString *string)
80 {
81     if (!string)
82         return std::string();
83
84     size_t bufferSize = [string lengthOfBytesUsingEncoding:NSUTF8StringEncoding];
85     OwnArrayPtr<char> buffer = adoptArrayPtr(new char[bufferSize]);
86     NSUInteger stringLength;
87     [string getBytes:buffer.get() maxLength:bufferSize usedLength:&stringLength encoding:NSUTF8StringEncoding options:0 range:NSMakeRange(0, [string length]) remainingRange:0];
88     return std::string(buffer.get(), stringLength);
89 }
90
91 } // namespace Util
92 } // namespace TestWebKitAPI