Home | History | Annotate | Download | only in TestWebKitAPI
      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 "PlatformUtilities.h"
     27 
     28 #include <wtf/OwnArrayPtr.h>
     29 #include <wtf/PassOwnArrayPtr.h>
     30 
     31 namespace TestWebKitAPI {
     32 namespace Util {
     33 
     34 WKContextRef createContextForInjectedBundleTest(const std::string& testName, WKTypeRef userData)
     35 {
     36     WKRetainPtr<WKStringRef> injectedBundlePath(AdoptWK, createInjectedBundlePath());
     37     WKContextRef context = WKContextCreateWithInjectedBundlePath(injectedBundlePath.get());
     38 
     39     WKRetainPtr<WKMutableDictionaryRef> initializationDictionary(AdoptWK, WKMutableDictionaryCreate());
     40 
     41     WKRetainPtr<WKStringRef> testNameKey(AdoptWK, WKStringCreateWithUTF8CString("TestName"));
     42     WKRetainPtr<WKStringRef> testNameString(AdoptWK, WKStringCreateWithUTF8CString(testName.c_str()));
     43     WKDictionaryAddItem(initializationDictionary.get(), testNameKey.get(), testNameString.get());
     44 
     45     WKRetainPtr<WKStringRef> userDataKey(AdoptWK, WKStringCreateWithUTF8CString("UserData"));
     46     WKDictionaryAddItem(initializationDictionary.get(), userDataKey.get(), userData);
     47 
     48     WKContextSetInitializationUserDataForInjectedBundle(context, initializationDictionary.get());
     49 
     50     return context;
     51 }
     52 
     53 std::string toSTD(WKStringRef string)
     54 {
     55     size_t bufferSize = WKStringGetMaximumUTF8CStringSize(string);
     56     OwnArrayPtr<char> buffer = adoptArrayPtr(new char[bufferSize]);
     57     size_t stringLength = WKStringGetUTF8CString(string, buffer.get(), bufferSize);
     58     return std::string(buffer.get(), stringLength - 1);
     59 }
     60 
     61 WKRetainPtr<WKStringRef> toWK(const char* utf8String)
     62 {
     63     return WKRetainPtr<WKStringRef>(AdoptWK, WKStringCreateWithUTF8CString(utf8String));
     64 }
     65 
     66 } // namespace Util
     67 } // namespace TestWebKitAPI
     68