Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5645)

Unified Diff: chrome/browser/resources/chat_manager/js/chatbridgehook.js

Issue 2860002: Forward video chats to central roster. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 10 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/resources/chat_manager/js/chatbridgeeventtypes.js ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/resources/chat_manager/js/chatbridgehook.js
===================================================================
--- chrome/browser/resources/chat_manager/js/chatbridgehook.js (revision 48406)
+++ chrome/browser/resources/chat_manager/js/chatbridgehook.js (working copy)
@@ -16,8 +16,43 @@
var divRosterHandler;
/**
+ * Triggered on a user initiated chat request. Forward to extension to be
+ * processed by the Chrome central roster.
+ * @param {MessageEvent} event the new chat event.
+ */
+function forwardChatEvent(event) {
+ var eventType = event.type;
+ switch (event.type) {
+ case ChatBridgeEventTypes.NEW_VIDEO_CHAT:
+ eventType = ChatBridgeEventTypes.START_VIDEO;
+ break;
+ case ChatBridgeEventTypes.NEW_VOICE_CHAT:
+ eventType = ChatBridgeEventTypes.START_VOICE;
+ break;
+ }
+ var chatJid = event.data;
+ if (!centralJidBroadcasterPort) {
+ chrome.extension.sendRequest({msg: eventType, jid: chatJid});
+ } else {
+ dispatchChatEvent(eventType, chatJid);
+ }
+}
+
+/**
* Manage two-way communication with the central roster. Updated jid's are
* forwarded to the background, while chats are forwarded to the page.
+ * @param {string} chatType the chat event type.
+ * @param {string} chatJid the jid to route the chat event to.
+ */
+function dispatchChatEvent(chatType, chatJid) {
+ var showChatEvent = document.createEvent('MessageEvent');
+ showChatEvent.initMessageEvent(chatType, true, true, chatJid);
+ divRosterHandler.dispatchEvent(showChatEvent);
+}
+
+/**
+ * Manage two-way communication with the central roster. Updated jid's are
+ * forwarded to the background, while chats are forwarded to the page.
* @param {MessageEvent} event the new central roster jid event.
*/
function centralRosterHandler(event) {
@@ -26,9 +61,7 @@
{name: 'centralJidBroadcaster'});
centralJidBroadcasterPort.onMessage.addListener(function(msg) {
var chatJid = msg.jid;
- var showChatEvent = document.createEvent('MessageEvent');
- showChatEvent.initMessageEvent(msg.chatType, true, true, chatJid);
- divRosterHandler.dispatchEvent(showChatEvent);
+ dispatchChatEvent(msg.chatType, chatJid);
});
}
var centralRosterJid = event.data;
@@ -57,6 +90,12 @@
// Search for communication channel div.
divRosterHandler = document.getElementById('roster_comm_link');
if (divRosterHandler) {
+ divRosterHandler.addEventListener(ChatBridgeEventTypes.SHOW_CHAT,
+ forwardChatEvent, false);
+ divRosterHandler.addEventListener(ChatBridgeEventTypes.NEW_VIDEO_CHAT,
+ forwardChatEvent, false);
+ divRosterHandler.addEventListener(ChatBridgeEventTypes.NEW_VOICE_CHAT,
+ forwardChatEvent, false);
divRosterHandler.addEventListener(ChatBridgeEventTypes.CENTRAL_USER_SET,
centralRosterHandler, false);
divRosterHandler.addEventListener(ChatBridgeEventTypes.CENTRAL_USER_WATCHER,
« no previous file with comments | « chrome/browser/resources/chat_manager/js/chatbridgeeventtypes.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698