diff options
Diffstat (limited to 'Tools/DumpRenderTree/efl/DumpRenderTreeView.cpp')
-rw-r--r-- | Tools/DumpRenderTree/efl/DumpRenderTreeView.cpp | 236 |
1 files changed, 0 insertions, 236 deletions
diff --git a/Tools/DumpRenderTree/efl/DumpRenderTreeView.cpp b/Tools/DumpRenderTree/efl/DumpRenderTreeView.cpp deleted file mode 100644 index f7b425c6e..000000000 --- a/Tools/DumpRenderTree/efl/DumpRenderTreeView.cpp +++ /dev/null @@ -1,236 +0,0 @@ -/* - * Copyright (C) 2011 ProFUSION Embedded Systems - * Copyright (C) 2011 Samsung Electronics - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Red istributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#define __STDC_FORMAT_MACROS -#include "config.h" -#include "DumpRenderTreeView.h" - -#include "DumpRenderTree.h" -#include "DumpRenderTreeChrome.h" -#include "DumpRenderTreeEfl.h" -#include "TestRunner.h" -#include <EWebKit.h> -#include <Ecore.h> -#include <Eina.h> -#include <Evas.h> -#include <cstdio> -#include <cstdlib> -#include <inttypes.h> -#include <wtf/NotFound.h> -#include <wtf/text/CString.h> -#include <wtf/text/WTFString.h> - -using namespace std; - -static Ewk_View_Smart_Class gParentSmartClass = EWK_VIEW_SMART_CLASS_INIT_NULL; - -static WTF::String urlSuitableForTestResult(const WTF::String& uriString) -{ - if (uriString.isEmpty() || !uriString.startsWith("file://")) - return uriString; - - const size_t index = uriString.reverseFind('/'); - return (index == WTF::notFound) ? uriString : uriString.substring(index + 1); -} - -static void onConsoleMessage(Ewk_View_Smart_Data* smartData, const char* message, unsigned lineNumber, const char*) -{ - Evas_Object* evasObject = smartData->self; - if (evas_object_data_get(evasObject, "ignore-console-messages")) - return; - - // Tests expect only the filename part of local URIs - WTF::String newMessage = WTF::String::fromUTF8(message); - if (!newMessage.isEmpty()) { - const size_t fileProtocol = newMessage.find("file://"); - if (fileProtocol != WTF::notFound) - newMessage = newMessage.left(fileProtocol) + urlSuitableForTestResult(newMessage.substring(fileProtocol)); - } - - // Ignore simple translation-related messages and unnecessary messages - if (newMessage.contains("Localized string") || newMessage.contains("Protocol Error: the message is for non-existing domain 'Profiler'")) - return; - - printf("CONSOLE MESSAGE: "); - if (lineNumber) - printf("line %u: ", lineNumber); - printf("%s\n", newMessage.utf8().data()); -} - -static void onJavaScriptAlert(Ewk_View_Smart_Data*, Evas_Object*, const char* message) -{ - printf("ALERT: %s\n", message); - fflush(stdout); -} - -static Eina_Bool onJavaScriptConfirm(Ewk_View_Smart_Data*, Evas_Object*, const char* message) -{ - printf("CONFIRM: %s\n", message); - return EINA_TRUE; -} - -static Eina_Bool onBeforeUnloadConfirm(Ewk_View_Smart_Data*, Evas_Object*, const char* message) -{ - printf("CONFIRM NAVIGATION: %s\n", message); - return !gTestRunner->shouldStayOnPageAfterHandlingBeforeUnload(); -} - -static Eina_Bool onJavaScriptPrompt(Ewk_View_Smart_Data*, Evas_Object*, const char* message, const char* defaultValue, const char** value) -{ - printf("PROMPT: %s, default text: %s\n", message, defaultValue); - *value = eina_stringshare_add(defaultValue); - return EINA_TRUE; -} - -static Evas_Object* onWindowCreate(Ewk_View_Smart_Data*, Eina_Bool, const Ewk_Window_Features*) -{ - return gTestRunner->canOpenWindows() ? browser->createNewWindow() : 0; -} - -static Eina_Bool onWindowCloseDelayed(void* data) -{ - Evas_Object* view = static_cast<Evas_Object*>(data); - browser->removeWindow(view); - return EINA_FALSE; -} - -static void onWindowClose(Ewk_View_Smart_Data* smartData) -{ - Evas_Object* view = smartData->self; - ecore_idler_add(onWindowCloseDelayed, view); -} - -static uint64_t onExceededDatabaseQuota(Ewk_View_Smart_Data* smartData, Evas_Object* frame, const char* databaseName, uint64_t currentSize, uint64_t expectedSize) -{ - if (!gTestRunner->dumpDatabaseCallbacks()) - return 0; - - Ewk_Security_Origin* origin = ewk_frame_security_origin_get(frame); - printf("UI DELEGATE DATABASE CALLBACK: exceededDatabaseQuotaForSecurityOrigin:{%s, %s, %i} database:%s\n", - ewk_security_origin_protocol_get(origin), - ewk_security_origin_host_get(origin), - ewk_security_origin_port_get(origin), - databaseName); - ewk_security_origin_free(origin); - - return 5 * 1024 * 1024; -} - -static int64_t onExceededApplicationCacheQuota(Ewk_View_Smart_Data*, Ewk_Security_Origin *origin, int64_t defaultOriginQuota, int64_t totalSpaceNeeded) -{ - if (gTestRunner->dumpApplicationCacheDelegateCallbacks()) { - // For example, numbers from 30000 - 39999 will output as 30000. - // Rounding up or down does not really matter for these tests. It's - // sufficient to just get a range of 10000 to determine if we were - // above or below a threshold. - int64_t truncatedSpaceNeeded = (totalSpaceNeeded / 10000) * 10000; - printf("UI DELEGATE APPLICATION CACHE CALLBACK: exceededApplicationCacheOriginQuotaForSecurityOrigin:{%s, %s, %i} totalSpaceNeeded:~%" PRId64 "\n", - ewk_security_origin_protocol_get(origin), - ewk_security_origin_host_get(origin), - ewk_security_origin_port_get(origin), - truncatedSpaceNeeded); - } - - if (gTestRunner->disallowIncreaseForApplicationCacheQuota()) - return 0; - - return defaultOriginQuota; -} - -static bool shouldUseTiledBackingStore() -{ - const char* useTiledBackingStore = getenv("DRT_USE_TILED_BACKING_STORE"); - return useTiledBackingStore && *useTiledBackingStore == '1'; -} - -static bool chooseAndInitializeAppropriateSmartClass(Ewk_View_Smart_Class* api) -{ - return !shouldUseTiledBackingStore() ? ewk_view_single_smart_set(api) : ewk_view_tiled_smart_set(api); -} - -// Taken from the file "WebKit/Tools/DumpRenderTree/chromium/WebViewHost.cpp". -static inline const char* navigationTypeToString(const Ewk_Navigation_Type type) -{ - switch (type) { - case EWK_NAVIGATION_TYPE_LINK_CLICKED: - return "link clicked"; - case EWK_NAVIGATION_TYPE_FORM_SUBMITTED: - return "form submitted"; - case EWK_NAVIGATION_TYPE_BACK_FORWARD: - return "back/forward"; - case EWK_NAVIGATION_TYPE_RELOAD: - return "reload"; - case EWK_NAVIGATION_TYPE_FORM_RESUBMITTED: - return "form resubmitted"; - case EWK_NAVIGATION_TYPE_OTHER: - return "other"; - } - return "illegal value"; -} - -static Eina_Bool onNavigationPolicyDecision(Ewk_View_Smart_Data*, Ewk_Frame_Resource_Request* request, Ewk_Navigation_Type navigationType) -{ - if (!policyDelegateEnabled) - return true; - - printf("Policy delegate: attempt to load %s with navigation type '%s'\n", urlSuitableForTestResult(request->url).utf8().data(), - navigationTypeToString(navigationType)); - - if (gTestRunner) - gTestRunner->notifyDone(); - - return policyDelegatePermissive; -} - -static Eina_Bool onFocusCanCycle(Ewk_View_Smart_Data*, Ewk_Focus_Direction) -{ - // This is the behavior of Mac and Chromium ports and is expected by some test cases. - return true; -} - -Evas_Object* drtViewAdd(Evas* evas) -{ - static Ewk_View_Smart_Class api = EWK_VIEW_SMART_CLASS_INIT_NAME_VERSION("DRT_View"); - - if (!chooseAndInitializeAppropriateSmartClass(&api)) - return 0; - - if (EINA_UNLIKELY(!gParentSmartClass.sc.add)) - ewk_view_base_smart_set(&gParentSmartClass); - - api.add_console_message = onConsoleMessage; - api.run_javascript_alert = onJavaScriptAlert; - api.run_javascript_confirm = onJavaScriptConfirm; - api.run_before_unload_confirm = onBeforeUnloadConfirm; - api.run_javascript_prompt = onJavaScriptPrompt; - api.window_create = onWindowCreate; - api.window_close = onWindowClose; - api.exceeded_application_cache_quota = onExceededApplicationCacheQuota; - api.exceeded_database_quota = onExceededDatabaseQuota; - api.navigation_policy_decision = onNavigationPolicyDecision; - api.focus_can_cycle = onFocusCanCycle; - - return evas_object_smart_add(evas, evas_smart_class_new(&api.sc)); -} |