1/* 2 * Copyright (C) 2013 Samsung Electronics. 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 28#include "UnitTestUtils/EWK2UnitTestBase.h" 29 30using namespace EWK2UnitTest; 31 32extern EWK2UnitTestEnvironment* environment; 33 34static const char htmlString[] = "<html><head><title>Foo</title></head><body style='background-color: red'><script>document.title=window.getComputedStyle(document.body, null).getPropertyValue('background-color')</script>HELLO</body></html>"; 35static const char userStyleSheet[] = "body { background-color: green !important; }"; 36static const char greenInRGB[] = "rgb(0, 128, 0)"; 37static const char redInRGB[] = "rgb(255, 0, 0)"; 38 39TEST_F(EWK2UnitTestBase, ewk_page_group) 40{ 41 Evas_Smart* smart = evas_smart_class_new(&(ewkViewClass()->sc)); 42 Ewk_Page_Group* pageGroup = ewk_page_group_create("test"); 43 ASSERT_TRUE(pageGroup); 44 45 Evas_Object* newWebView = ewk_view_smart_add(canvas(), smart, ewk_context_default_get(), pageGroup); 46 setWebView(newWebView); 47 48 ASSERT_EQ(pageGroup, ewk_view_page_group_get(newWebView)); 49 ewk_object_unref(pageGroup); 50} 51 52TEST_F(EWK2UnitTestBase, ewk_page_group_settings_get) 53{ 54 Ewk_Page_Group* pageGroup = ewk_view_page_group_get(webView()); 55 Ewk_Settings* settings = ewk_page_group_settings_get(pageGroup); 56 ASSERT_TRUE(settings); 57 ASSERT_EQ(settings, ewk_page_group_settings_get(pageGroup)); 58 59 Evas_Object* newWebView = ewk_view_add(canvas()); 60 Ewk_Page_Group* newPageGroup = ewk_view_page_group_get(newWebView); 61 ASSERT_NE(settings, ewk_page_group_settings_get(newPageGroup)); 62} 63 64TEST_F(EWK2UnitTestBase, ewk_page_group_user_style_sheet_add_before_creating_view) 65{ 66 Evas_Smart* smart = evas_smart_class_new(&(ewkViewClass()->sc)); 67 Ewk_Page_Group* pageGroup = ewk_page_group_create("test"); 68 ASSERT_TRUE(pageGroup); 69 70 // Add a user style sheet to the page group before creating a view. 71 ewk_page_group_user_style_sheet_add(pageGroup, userStyleSheet, 0, 0, 0, true); 72 73 // Create a new web view with this page group. 74 Evas_Object* newWebView = ewk_view_smart_add(canvas(), smart, ewk_context_default_get(), pageGroup); 75 setWebView(newWebView); 76 77 ewk_object_unref(pageGroup); 78 ewk_view_theme_set(webView(), environment->defaultTheme()); 79 evas_object_resize(webView(), environment->defaultWidth(), environment->defaultHeight()); 80 evas_object_show(webView()); 81 evas_object_focus_set(webView(), true); 82 83 ewk_view_html_string_load(webView(), htmlString, 0, 0); 84 ASSERT_TRUE(waitUntilTitleChangedTo(greenInRGB)); 85} 86 87TEST_F(EWK2UnitTestBase, ewk_page_group_user_style_sheet_add_after_creating_view) 88{ 89 // Add a user style sheet to the page group after creating a view. 90 Ewk_Page_Group* pageGroup = ewk_view_page_group_get(webView()); 91 ASSERT_TRUE(pageGroup); 92 ewk_page_group_user_style_sheet_add(pageGroup, userStyleSheet, 0, 0, 0, true); 93 94 ewk_view_html_string_load(webView(), htmlString, 0, 0); 95 ASSERT_TRUE(waitUntilTitleChangedTo(greenInRGB)); 96} 97 98TEST_F(EWK2UnitTestBase, ewk_page_group_user_style_sheets_remove_all) 99{ 100 Evas_Smart* smart = evas_smart_class_new(&(ewkViewClass()->sc)); 101 Ewk_Page_Group* pageGroup = ewk_page_group_create("test"); 102 ASSERT_TRUE(pageGroup); 103 104 // Add a user style sheet to the page group before creating a view. 105 ewk_page_group_user_style_sheet_add(pageGroup, userStyleSheet, 0, 0, 0, true); 106 107 // Create a new web view with this page group. 108 Evas_Object* newWebView = ewk_view_smart_add(canvas(), smart, ewk_context_default_get(), pageGroup); 109 setWebView(newWebView); 110 111 ewk_object_unref(pageGroup); 112 ewk_view_theme_set(webView(), environment->defaultTheme()); 113 evas_object_resize(webView(), environment->defaultWidth(), environment->defaultHeight()); 114 evas_object_show(webView()); 115 evas_object_focus_set(webView(), true); 116 117 ewk_view_html_string_load(webView(), htmlString, 0, 0); 118 119 // Remove all user style sheets in the page group. 120 ewk_page_group_user_style_sheets_remove_all(ewk_view_page_group_get(webView())); 121 ASSERT_TRUE(waitUntilTitleChangedTo(redInRGB)); 122 123 // Add a user style sheet to the page group after creating a view. 124 pageGroup = ewk_view_page_group_get(webView()); 125 ewk_page_group_user_style_sheet_add(pageGroup, userStyleSheet, 0, 0, 0, true); 126 ewk_view_html_string_load(webView(), htmlString, 0, 0); 127 128 // Remove all user style sheets in the page group. 129 ewk_page_group_user_style_sheets_remove_all(ewk_view_page_group_get(webView())); 130 ASSERT_TRUE(waitUntilTitleChangedTo(redInRGB)); 131} 132