Changeset 262321 in webkit
- Timestamp:
- May 29, 2020 3:35:27 PM (4 years ago)
- Location:
- trunk
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r262318 r262321 1 2020-05-29 Jan-Michael Brummer <jan.brummer@tabos.org> 2 3 [GTK][WPE] API for WebView audio mute support 4 https://bugs.webkit.org/show_bug.cgi?id=176119 5 6 Reviewed by Michael Catanzaro. 7 8 Test implemented in TestWebKitWebView. 9 10 * UIProcess/API/glib/WebKitWebView.cpp: 11 (webkitWebViewSetProperty): 12 (webkitWebViewGetProperty): 13 (webkit_web_view_class_init): 14 (webkit_web_view_set_is_muted): 15 (webkit_web_view_is_muted): 16 * UIProcess/API/gtk/WebKitWebView.h: 17 * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt: 18 * UIProcess/API/wpe/WebKitWebView.h: 19 * UIProcess/API/wpe/docs/wpe-1.0-sections.txt: 20 * UIProcess/WebPageProxy.h: 21 (WebKit::WebPageProxy::isAudioMuted const): 22 1 23 2020-05-29 Darin Adler <darin@apple.com> 2 24 -
trunk/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp
r261781 r262321 200 200 PROP_AUTOMATION_PRESENTATION_TYPE, 201 201 PROP_EDITABLE, 202 PROP_PAGE_ID 202 PROP_PAGE_ID, 203 PROP_IS_MUTED 203 204 }; 204 205 … … 835 836 webkit_web_view_set_editable(webView, g_value_get_boolean(value)); 836 837 break; 838 case PROP_IS_MUTED: 839 webkit_web_view_set_is_muted(webView, g_value_get_boolean(value)); 840 break; 837 841 default: 838 842 G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, paramSpec); … … 897 901 g_value_set_uint64(value, webkit_web_view_get_page_id(webView)); 898 902 break; 903 case PROP_IS_MUTED: 904 g_value_set_boolean(value, webkit_web_view_get_is_muted(webView)); 905 break; 899 906 default: 900 907 G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, paramSpec); … … 1265 1272 0, G_MAXUINT64, 0, 1266 1273 WEBKIT_PARAM_READABLE)); 1274 1275 /** 1276 * WebKitWebView:is-muted: 1277 * 1278 * Whether the #WebKitWebView audio is muted. When %TRUE, audio is silenced. 1279 * It may still be playing, i.e. #WebKitWebView:is-playing-audio may be %TRUE. 1280 * 1281 * Since: 2.30 1282 */ 1283 g_object_class_install_property( 1284 gObjectClass, 1285 PROP_IS_MUTED, 1286 g_param_spec_boolean( 1287 "is-muted", 1288 "Is Muted", 1289 _("Whether the view audio is muted"), 1290 FALSE, 1291 WEBKIT_PARAM_READWRITE)); 1267 1292 1268 1293 /** … … 3165 3190 3166 3191 return getPage(webView).isPlayingAudio(); 3192 } 3193 3194 /** 3195 * webkit_web_view_set_is_muted: 3196 * @web_view: a #WebKitWebView 3197 * @muted: mute flag 3198 * 3199 * Sets the mute state of @web_view. 3200 * 3201 * Since: 2.30 3202 */ 3203 void webkit_web_view_set_is_muted(WebKitWebView* webView, gboolean muted) 3204 { 3205 g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); 3206 3207 if (webkit_web_view_get_is_muted (webView) == muted) 3208 return; 3209 3210 getPage(webView).setMuted(muted ? WebCore::MediaProducer::AudioIsMuted : WebCore::MediaProducer::NoneMuted); 3211 g_object_notify(G_OBJECT(webView), "is-muted"); 3212 } 3213 3214 /** 3215 * webkit_web_view_get_is_muted: 3216 * @web_view: a #WebKitWebView 3217 * 3218 * Gets the mute state of @web_view. 3219 * 3220 * Returns: %TRUE if @web_view audio is muted or %FALSE is audio is not muted. 3221 * 3222 * Since: 2.30 3223 */ 3224 gboolean webkit_web_view_get_is_muted(WebKitWebView* webView) 3225 { 3226 g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), FALSE); 3227 3228 return getPage(webView).isAudioMuted(); 3167 3229 } 3168 3230 -
trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebView.h
r253749 r262321 351 351 webkit_web_view_is_playing_audio (WebKitWebView *web_view); 352 352 353 WEBKIT_API void 354 webkit_web_view_set_is_muted (WebKitWebView *web_view, 355 gboolean muted); 356 357 WEBKIT_API gboolean 358 webkit_web_view_get_is_muted (WebKitWebView *web_view); 359 353 360 WEBKIT_API guint64 354 361 webkit_web_view_get_page_id (WebKitWebView *web_view); -
trunk/Source/WebKit/UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt
r261986 r262321 241 241 webkit_web_view_is_loading 242 242 webkit_web_view_is_playing_audio 243 webkit_web_view_set_is_muted 244 webkit_web_view_get_is_muted 243 245 webkit_web_view_get_estimated_load_progress 244 246 webkit_web_view_get_custom_charset -
trunk/Source/WebKit/UIProcess/API/wpe/WebKitWebView.h
r254828 r262321 340 340 webkit_web_view_is_playing_audio (WebKitWebView *web_view); 341 341 342 WEBKIT_API void 343 webkit_web_view_set_is_muted (WebKitWebView *web_view, 344 gboolean muted); 345 346 WEBKIT_API gboolean 347 webkit_web_view_get_is_muted (WebKitWebView *web_view); 348 342 349 WEBKIT_API guint64 343 350 webkit_web_view_get_page_id (WebKitWebView *web_view); -
trunk/Source/WebKit/UIProcess/API/wpe/docs/wpe-1.0-sections.txt
r261986 r262321 216 216 webkit_web_view_is_loading 217 217 webkit_web_view_is_playing_audio 218 webkit_web_view_set_is_muted 219 webkit_web_view_get_is_muted 218 220 webkit_web_view_get_estimated_load_progress 219 221 webkit_web_view_get_custom_charset -
trunk/Source/WebKit/UIProcess/WebPageProxy.h
r262184 r262321 1309 1309 void setMediaVolume(float); 1310 1310 void setMuted(WebCore::MediaProducer::MutedStateFlags); 1311 bool isAudioMuted() const { return m_mutedState & WebCore::MediaProducer::AudioIsMuted; }; 1311 1312 void setMayStartMediaWhenInWindow(bool); 1312 1313 bool mayStartMediaWhenInWindow() const { return m_mayStartMediaWhenInWindow; } -
trunk/Tools/ChangeLog
r262318 r262321 1 2020-05-29 Jan-Michael Brummer <jan.brummer@tabos.org> 2 3 [GTK][WPE] API for WebView audio mute support 4 https://bugs.webkit.org/show_bug.cgi?id=176119 5 6 Reviewed by Michael Catanzaro. 7 8 * MiniBrowser/gtk/BrowserTab.c: 9 (audioClicked): 10 (audioMutedChanged): 11 (browserTabConstructed): 12 * TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebView.cpp: 13 (testWebViewIsAudioMuted): 14 (beforeAll): 15 1 16 2020-05-29 Darin Adler <darin@apple.com> 2 17 -
trunk/Tools/MiniBrowser/gtk/BrowserTab.c
r261912 r262321 58 58 GtkWidget *titleLabel; 59 59 GtkWidget *titleSpinner; 60 GtkWidget *titleAudioButton; 60 61 GtkWidget *titleCloseButton; 61 62 }; … … 366 367 } 367 368 369 static void audioClicked(GtkButton *button, gpointer userData) 370 { 371 BrowserTab *tab = BROWSER_TAB(userData); 372 gboolean muted = webkit_web_view_get_is_muted(tab->webView); 373 374 webkit_web_view_set_is_muted(tab->webView, !muted); 375 } 376 377 static void audioMutedChanged(WebKitWebView *webView, GParamSpec *pspec, gpointer userData) 378 { 379 BrowserTab *tab = BROWSER_TAB(userData); 380 gboolean muted = webkit_web_view_get_is_muted(tab->webView); 381 GtkWidget *image = gtk_image_new_from_icon_name(muted ? "audio-volume-muted-symbolic" : "audio-volume-high-symbolic", GTK_ICON_SIZE_MENU); 382 383 gtk_button_set_image(GTK_BUTTON(tab->titleAudioButton), image); 384 } 385 368 386 static void browserTabSetProperty(GObject *object, guint propId, const GValue *value, GParamSpec *pspec) 369 387 { … … 468 486 gtk_widget_show(hbox); 469 487 488 tab->titleAudioButton = gtk_button_new(); 489 g_signal_connect(tab->titleAudioButton, "clicked", G_CALLBACK(audioClicked), tab); 490 gtk_button_set_relief(GTK_BUTTON(tab->titleAudioButton), GTK_RELIEF_NONE); 491 gtk_widget_set_focus_on_click(tab->titleAudioButton, FALSE); 492 493 GtkWidget *image = gtk_image_new_from_icon_name("audio-volume-high-symbolic", GTK_ICON_SIZE_MENU); 494 gtk_button_set_image(GTK_BUTTON(tab->titleAudioButton), image); 495 gtk_widget_show(image); 496 497 gtk_box_pack_start(GTK_BOX(tab->titleBox), tab->titleAudioButton, FALSE, FALSE, 0); 498 470 499 tab->titleCloseButton = gtk_button_new(); 471 500 g_signal_connect_swapped(tab->titleCloseButton, "clicked", G_CALLBACK(gtk_widget_destroy), tab); … … 473 502 gtk_widget_set_focus_on_click(tab->titleCloseButton, FALSE); 474 503 475 GtkWidget *image = gtk_image_new_from_icon_name("window-close-symbolic", GTK_ICON_SIZE_MENU);504 image = gtk_image_new_from_icon_name("window-close-symbolic", GTK_ICON_SIZE_MENU); 476 505 gtk_container_add(GTK_CONTAINER(tab->titleCloseButton), image); 477 506 gtk_widget_show(image); … … 487 516 g_signal_connect(tab->webView, "permission-request", G_CALLBACK(decidePermissionRequest), tab); 488 517 g_signal_connect(tab->webView, "run-color-chooser", G_CALLBACK(runColorChooserCallback), tab); 518 519 g_object_bind_property(tab->webView, "is-playing-audio", tab->titleAudioButton, "visible", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE); 520 g_signal_connect(tab->webView, "notify::is-muted", G_CALLBACK(audioMutedChanged), tab); 489 521 #endif 490 522 -
trunk/Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebView.cpp
r246790 r262321 1134 1134 } 1135 1135 1136 static void testWebViewIsAudioMuted(WebViewTest* test, gconstpointer) 1137 { 1138 g_assert_false(webkit_web_view_get_is_muted(test->m_webView)); 1139 webkit_web_view_set_is_muted(test->m_webView, TRUE); 1140 g_assert_true(webkit_web_view_get_is_muted(test->m_webView)); 1141 webkit_web_view_set_is_muted(test->m_webView, FALSE); 1142 g_assert_false(webkit_web_view_get_is_muted(test->m_webView)); 1143 } 1144 1136 1145 static void testWebViewBackgroundColor(WebViewTest* test, gconstpointer) 1137 1146 { … … 1390 1399 FrameDisplayedTest::add("WebKitWebView", "frame-displayed", testWebViewFrameDisplayed); 1391 1400 #endif 1401 WebViewTest::add("WebKitWebView", "is-audio-muted", testWebViewIsAudioMuted); 1392 1402 } 1393 1403
Note: See TracChangeset
for help on using the changeset viewer.