Changeset 125978 in webkit
- Timestamp:
- Aug 19, 2012 11:34:24 AM (12 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r125974 r125978 1 2012-08-19 Sheriff Bot <webkit.review.bot@gmail.com> 2 3 Unreviewed, rolling out r125972. 4 http://trac.webkit.org/changeset/125972 5 https://bugs.webkit.org/show_bug.cgi?id=94431 6 7 Breaks AppleMac builds (Requested by pfeldman on #webkit). 8 9 * UIProcess/API/gtk/WebKitWebContext.cpp: 10 * UIProcess/API/gtk/WebKitWebContext.h: 11 * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: 12 * UIProcess/API/gtk/tests/TestWebKitWebContext.cpp: 13 (beforeAll): 14 (afterAll): 15 * UIProcess/API/gtk/tests/WebViewTest.cpp: 16 (WebViewTest::WebViewTest): 17 * UIProcess/API/gtk/tests/WebViewTest.h: 18 * WebProcess/WebProcess.cpp: 19 (WebKit::WebProcess::userPreferredLanguagesChanged): 20 * WebProcess/gtk/WebProcessGtk.cpp: 21 (WebKit::WebProcess::platformInitializeWebProcess): 22 (WebKit::WebProcess::platformTerminate): 23 1 24 2012-08-19 Christophe Dumez <christophe.dumez@intel.com> 2 25 -
trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp
r125972 r125978 33 33 #include "WebKitWebContextPrivate.h" 34 34 #include <WebCore/FileSystem.h> 35 #include <WebCore/Language.h>36 35 #include <wtf/HashMap.h> 37 36 #include <wtf/OwnPtr.h> … … 520 519 } 521 520 522 /**523 * webkit_web_context_set_preferred_languages:524 * @context: a #WebKitWebContext525 * @languages: (element-type utf8): a #GList of language identifiers526 *527 * Set the list of preferred languages, sorted from most desirable528 * to least desirable. The list will be used to build the "Accept-Language"529 * header that will be included in the network requests started by530 * the #WebKitWebContext.531 */532 void webkit_web_context_set_preferred_languages(WebKitWebContext* context, GList* languageList)533 {534 g_return_if_fail(WEBKIT_IS_WEB_CONTEXT(context));535 536 if (!languageList)537 return;538 539 Vector<String> languages;540 for (GList* iter = languageList; iter; iter = g_list_next(iter))541 languages.append(String::fromUTF8(static_cast<char*>(iter->data)).lower().replace("_", "-"));542 543 WebCore::overrideUserPreferredLanguages(languages);544 WebCore::languageDidChange();545 }546 547 521 WebKitDownload* webkitWebContextGetOrCreateDownload(WKDownloadRef wkDownload) 548 522 { -
trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.h
r125972 r125978 147 147 const gchar *languages); 148 148 149 WEBKIT_API void150 webkit_web_context_set_preferred_languages (WebKitWebContext *context,151 GList *languages);152 153 149 G_END_DECLS 154 150 -
trunk/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt
r125972 r125978 38 38 webkit_web_context_get_spell_checking_languages 39 39 webkit_web_context_set_spell_checking_languages 40 webkit_web_context_set_preferred_languages41 40 42 41 <SUBSECTION URI Scheme> -
trunk/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebContext.cpp
r125972 r125978 21 21 22 22 #include "LoadTrackingTest.h" 23 #include "WebKitTestServer.h"24 23 #include <gtk/gtk.h> 25 24 #include <webkit2/webkit2.h> … … 28 27 #include <wtf/gobject/GRefPtr.h> 29 28 #include <wtf/text/StringHash.h> 30 31 static WebKitTestServer* kServer;32 29 33 30 static void testWebContextDefault(Test* test, gconstpointer) … … 169 166 } 170 167 168 static void resourceGetDataCallback(GObject* object, GAsyncResult* result, gpointer userData) 169 { 170 size_t dataSize; 171 GOwnPtr<GError> error; 172 unsigned char* data = webkit_web_resource_get_data_finish(WEBKIT_WEB_RESOURCE(object), result, &dataSize, &error.outPtr()); 173 g_assert(data); 174 175 URISchemeTest* test = static_cast<URISchemeTest*>(userData); 176 test->m_resourceData.set(reinterpret_cast<char*>(data)); 177 test->m_resourceDataSize = dataSize; 178 g_main_loop_quit(test->m_mainLoop); 179 } 180 181 const char* mainResourceData(size_t& mainResourceDataSize) 182 { 183 m_resourceDataSize = 0; 184 m_resourceData.clear(); 185 WebKitWebResource* resource = webkit_web_view_get_main_resource(m_webView); 186 g_assert(resource); 187 188 webkit_web_resource_get_data(resource, 0, resourceGetDataCallback, this); 189 g_main_loop_run(m_mainLoop); 190 191 mainResourceDataSize = m_resourceDataSize; 192 return m_resourceData.get(); 193 } 194 195 GOwnPtr<char> m_resourceData; 196 size_t m_resourceDataSize; 171 197 GRefPtr<WebKitURISchemeRequest> m_uriSchemeRequest; 172 198 HashMap<String, URISchemeHandler> m_handlersMap; … … 241 267 } 242 268 243 static void testWebContextLanguages(WebViewTest* test, gconstpointer)244 {245 static const char* expectedDefaultLanguage = "en";246 test->loadURI(kServer->getURIForPath("/").data());247 test->waitUntilLoadFinished();248 size_t mainResourceDataSize = 0;249 const char* mainResourceData = test->mainResourceData(mainResourceDataSize);250 g_assert_cmpuint(mainResourceDataSize, ==, strlen(expectedDefaultLanguage));251 g_assert(!strncmp(mainResourceData, expectedDefaultLanguage, mainResourceDataSize));252 253 GList* languages = g_list_prepend(0, const_cast<gpointer>(static_cast<const void*>("dE")));254 languages = g_list_prepend(languages, const_cast<gpointer>(static_cast<const void*>("ES_es")));255 languages = g_list_prepend(languages, const_cast<gpointer>(static_cast<const void*>("en")));256 webkit_web_context_set_preferred_languages(webkit_web_context_get_default(), languages);257 g_list_free(languages);258 259 static const char* expectedLanguages = "en, es-es;q=0.90, de;q=0.80";260 test->loadURI(kServer->getURIForPath("/").data());261 test->waitUntilLoadFinished();262 mainResourceDataSize = 0;263 mainResourceData = test->mainResourceData(mainResourceDataSize);264 g_assert_cmpuint(mainResourceDataSize, ==, strlen(expectedLanguages));265 g_assert(!strncmp(mainResourceData, expectedLanguages, mainResourceDataSize));266 }267 268 static void serverCallback(SoupServer* server, SoupMessage* message, const char* path, GHashTable*, SoupClientContext*, gpointer)269 {270 if (message->method != SOUP_METHOD_GET) {271 soup_message_set_status(message, SOUP_STATUS_NOT_IMPLEMENTED);272 return;273 }274 275 soup_message_set_status(message, SOUP_STATUS_OK);276 const char* acceptLanguage = soup_message_headers_get_one(message->request_headers, "Accept-Language");277 soup_message_body_append(message->response_body, SOUP_MEMORY_COPY, acceptLanguage, strlen(acceptLanguage));278 soup_message_body_complete(message->response_body);279 }280 281 269 void beforeAll() 282 270 { 283 kServer = new WebKitTestServer();284 kServer->run(serverCallback);285 286 271 Test::add("WebKitWebContext", "default-context", testWebContextDefault); 287 272 PluginsTest::add("WebKitWebContext", "get-plugins", testWebContextGetPlugins); 288 273 URISchemeTest::add("WebKitWebContext", "uri-scheme", testWebContextURIScheme); 289 274 Test::add("WebKitWebContext", "spell-checker", testWebContextSpellChecker); 290 WebViewTest::add("WebKitWebContext", "languages", testWebContextLanguages);291 275 } 292 276 293 277 void afterAll() 294 278 { 295 delete kServer; 296 } 279 } -
trunk/Source/WebKit2/UIProcess/API/gtk/tests/WebViewTest.cpp
r125972 r125978 30 30 , m_parentWindow(0) 31 31 , m_javascriptResult(0) 32 , m_resourceDataSize(0)33 32 { 34 33 assertObjectIsDeletedWhenTestFinishes(G_OBJECT(m_webView)); … … 199 198 } 200 199 201 static void resourceGetDataCallback(GObject* object, GAsyncResult* result, gpointer userData)202 {203 size_t dataSize;204 GOwnPtr<GError> error;205 unsigned char* data = webkit_web_resource_get_data_finish(WEBKIT_WEB_RESOURCE(object), result, &dataSize, &error.outPtr());206 g_assert(data);207 208 WebViewTest* test = static_cast<WebViewTest*>(userData);209 test->m_resourceData.set(reinterpret_cast<char*>(data));210 test->m_resourceDataSize = dataSize;211 g_main_loop_quit(test->m_mainLoop);212 }213 214 const char* WebViewTest::mainResourceData(size_t& mainResourceDataSize)215 {216 m_resourceDataSize = 0;217 m_resourceData.clear();218 WebKitWebResource* resource = webkit_web_view_get_main_resource(m_webView);219 g_assert(resource);220 221 webkit_web_resource_get_data(resource, 0, resourceGetDataCallback, this);222 g_main_loop_run(m_mainLoop);223 224 mainResourceDataSize = m_resourceDataSize;225 return m_resourceData.get();226 }227 228 200 void WebViewTest::mouseMoveTo(int x, int y, unsigned int mouseModifiers) 229 201 { -
trunk/Source/WebKit2/UIProcess/API/gtk/tests/WebViewTest.h
r125972 r125978 49 49 void showInWindowAndWaitUntilMapped(GtkWindowType = GTK_WINDOW_POPUP); 50 50 void resizeView(int width, int height); 51 const char* mainResourceData(size_t& mainResourceDataSize);52 51 53 52 void mouseMoveTo(int x, int y, unsigned int mouseModifiers = 0); … … 71 70 WebKitJavascriptResult* m_javascriptResult; 72 71 GError** m_javascriptError; 73 GOwnPtr<char> m_resourceData;74 size_t m_resourceDataSize;75 72 76 73 private: -
trunk/Source/WebKit2/WebProcess/WebProcess.cpp
r125972 r125978 316 316 { 317 317 overrideUserPreferredLanguages(languages); 318 languageDidChange();319 318 } 320 319 -
trunk/Source/WebKit2/WebProcess/gtk/WebProcessGtk.cpp
r125972 r125978 32 32 #include "WebProcessCreationParameters.h" 33 33 #include <WebCore/FileSystem.h> 34 #include <WebCore/Language.h>35 34 #include <WebCore/MemoryCache.h> 36 35 #include <WebCore/NotImplemented.h> … … 40 39 #include <wtf/gobject/GOwnPtr.h> 41 40 #include <wtf/gobject/GRefPtr.h> 42 #include <wtf/text/CString.h>43 #include <wtf/text/StringBuilder.h>44 41 45 42 #if !OS(WINDOWS) … … 117 114 } 118 115 119 // This function is based on Epiphany code in ephy-embed-prefs.c. 120 static CString buildAcceptLanguages(Vector<String> languages) 116 void WebProcess::platformInitializeWebProcess(const WebProcessCreationParameters&, CoreIPC::ArgumentDecoder*) 121 117 { 122 // Ignore "C" locale. 123 size_t position = languages.find("c"); 124 if (position != notFound) 125 languages.remove(position); 126 127 // Fallback to "en" if the list is empty. 128 if (languages.isEmpty()) 129 return "en"; 130 131 // Calculate deltas for the quality values. 132 int delta; 133 if (languages.size() < 10) 134 delta = 10; 135 else if (languages.size() < 20) 136 delta = 5; 137 else 138 delta = 1; 139 140 // Set quality values for each language. 141 StringBuilder builder; 142 for (size_t i = 0; i < languages.size(); ++i) { 143 if (i) 144 builder.append(", "); 145 146 builder.append(languages[i]); 147 148 int quality = 100 - i * delta; 149 if (quality > 0 && quality < 100) { 150 char buffer[8]; 151 g_ascii_formatd(buffer, 8, "%.2f", quality / 100.0); 152 builder.append(String::format(";q=%s", buffer)); 153 } 154 } 155 156 return builder.toString().utf8(); 157 } 158 159 static void setSoupSessionAcceptLanguage(Vector<String> languages) 160 { 161 g_object_set(WebCore::ResourceHandle::defaultSession(), "accept-language", buildAcceptLanguages(languages).data(), NULL); 162 } 163 164 static void languageChanged(void*) 165 { 166 setSoupSessionAcceptLanguage(WebCore::userPreferredLanguages()); 167 } 168 169 void WebProcess::platformInitializeWebProcess(const WebProcessCreationParameters& parameters, CoreIPC::ArgumentDecoder*) 170 { 171 if (!parameters.languages.isEmpty()) 172 setSoupSessionAcceptLanguage(parameters.languages); 173 174 WebCore::addLanguageChangeObserver(this, languageChanged); 118 notImplemented(); 175 119 } 176 120 … … 181 125 soup_cache_flush(cache); 182 126 soup_cache_dump(cache); 183 184 WebCore::removeLanguageChangeObserver(this);185 127 } 186 128
Note: See TracChangeset
for help on using the changeset viewer.