From 21092fd8cdd7b3f3b319483ec17d5f38ab1d7229 Mon Sep 17 00:00:00 2001 From: Scott Jaderholm Date: Sat, 28 Jan 2012 13:32:06 -0500 Subject: [PATCH] youtube-player.js: page-mode for controlling the youtube html5 player --- defaults/preferences/default-modules.js | 1 + modules/page-modes/youtube-player.js | 51 +++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 modules/page-modes/youtube-player.js diff --git a/defaults/preferences/default-modules.js b/defaults/preferences/default-modules.js index e680297..4796355 100644 --- a/defaults/preferences/default-modules.js +++ b/defaults/preferences/default-modules.js @@ -50,3 +50,4 @@ pref("conkeror.load.page-modes/google-maps", 1); pref("conkeror.load.page-modes/dailymotion", 1); pref("conkeror.load.page-modes/xkcd", 1); pref("conkeror.load.page-modes/stackexchange", 1); +pref("conkeror.load.page-modes/youtube-player", 1); diff --git a/modules/page-modes/youtube-player.js b/modules/page-modes/youtube-player.js new file mode 100644 index 0000000..ca3cda7 --- /dev/null +++ b/modules/page-modes/youtube-player.js @@ -0,0 +1,51 @@ +/** + * (C) Copyright 2012 Scott Jaderholm + * + * Use, modification, and distribution are subject to the terms specified in the + * COPYING file. +**/ + +in_module(null); + +require("content-buffer.js"); + +define_keymap("youtube_player_keymap", $display_name = "youtube-player"); + +function youtube_player_click_command (selector, error_message) { + return function (I) { + var buf = I.buffer; + var elem = buf.document.querySelector(selector); + if (elem) + dom_node_click(elem, 1, 1); + else + I.minibuffer.message(error_message + ", ensure html5 is enabled for youtube by visiting http://youtube.com/html5"); + }; +} + +interactive("youtube-player-play-or-pause", + "Click the Youtube html5 player play/pause button.", + youtube_player_click_command("button.html5-pause-button, button.html5-play-button", + "No play or pause button found")); + +interactive("youtube-player-mute", + "Click the Youtube html5 player mute button.", + youtube_player_click_command("button.html5-volume-button", + "No mute button found")); + +interactive("youtube-player-fullscreen", + "Click the Youtube html5 player fullscreen button.", + youtube_player_click_command("button.html5-fullscreen-button", + "No fullscreen button found")); + +define_key(youtube_player_keymap, "C-c return", "youtube-player-play-or-pause"); +define_key(youtube_player_keymap, "C-c C-m", "youtube-player-mute"); +define_key(youtube_player_keymap, "C-c C-f", "youtube-player-fullscreen"); + +define_keymaps_page_mode("youtube-player-mode", + build_url_regexp($domain = "youtube", $allow_www = true), + { normal: youtube_player_keymap }, + $display_name = "Youtube-Player"); + +page_mode_activate(youtube_player_mode); + +provide("youtube-player"); -- 2.11.4.GIT