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

Side by Side Diff: chrome/browser/resources/chat_manager/js/gmailbridgehook.js

Issue 3455024: Notify all rosters on opening and closing chats,... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 2 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Port used for: 5 // Port used for:
6 // 1. forwarding central user requests from the gmail page to the background. 6 // 1. forwarding central user requests from the gmail page to the background.
7 // 2. forwarding the central user from the background to the gmail page. 7 // 2. forwarding the central user from the background to the gmail page.
8 var centralJidListenerGmailPort; 8 var centralJidListenerGmailPort;
9 9
10 // The gmail page div used to funnel events through. 10 // The gmail page div used to funnel events through.
11 var divGmailHandler; 11 var divGmailHandler;
12 12
13 // The current central roster Jid. 13 // The current central roster Jid.
14 // Requested and cached as early as possible. 14 // Requested and cached as early as possible.
15 var centralRosterJid; 15 var centralRosterJid;
16 16
17 /** 17 /**
18 * Triggered on a user initiated chat request. Forward to extension to be 18 * Triggered on a user initiated chat request. Forward to extension to be
19 * processed by the Chrome central roster. 19 * processed by the Chrome central roster.
20 * @param {MessageEvent} event the new chat event. 20 * @param {MessageEvent} event the new chat event.
21 */ 21 */
22 function forwardChatEvent(event) { 22 function forwardChatEvent(event) {
23 var chatJid = event.data; 23 var chatJid = event.data;
24 chrome.extension.sendRequest({msg: event.type, jid: chatJid}); 24 chrome.extension.sendRequest({msg: event.type, jid: chatJid});
25 } 25 }
26 26
27 /** 27 /**
28 * @param {string} eventType the event type.
29 * @param {string} chatJid the jid to route the chat event to.
30 * TODO(seh): Move into a common JS file and reference from chatbridgehook.js.
31 */
32 function dispatchChatEvent(eventType, chatJid) {
33 var chatEvent = document.createEvent('MessageEvent');
34 chatEvent.initMessageEvent(eventType, true, true, chatJid);
35 divGmailHandler.dispatchEvent(chatEvent);
36 }
37
38 /**
28 * Forward central roster Jid to page. 39 * Forward central roster Jid to page.
29 * @param {string} jid the central roster Jid. 40 * @param {string} jid the central roster Jid.
30 */ 41 */
31 function dispatchCentralJid(jid) { 42 function dispatchCentralJid(jid) {
32 var outgoingChatEvent = document.createEvent('MessageEvent'); 43 dispatchChatEvent(ChatBridgeEventTypes.CENTRAL_USER_UPDATE, jid);
33 outgoingChatEvent.initMessageEvent(
34 ChatBridgeEventTypes.CENTRAL_USER_UPDATE,
35 true, true, jid);
36 divGmailHandler.dispatchEvent(outgoingChatEvent);
37 } 44 }
38 45
39 /** 46 /**
40 * Setup central roster jid listener. 47 * Setup central roster jid listener.
41 * @param {MessageEvent} event the event. 48 * @param {MessageEvent} event the event.
42 */ 49 */
43 function setupCentralRosterJidListener(event) { 50 function setupCentralRosterJidListener(event) {
44 if (!centralJidListenerGmailPort) { 51 if (!centralJidListenerGmailPort) {
45 if (centralRosterJid) { 52 if (centralRosterJid) {
46 dispatchCentralJid(centralRosterJid); 53 dispatchCentralJid(centralRosterJid);
47 } 54 }
48 centralJidListenerGmailPort = chrome.extension.connect( 55 centralJidListenerGmailPort = chrome.extension.connect(
49 {name: 'centralJidListener'}); 56 {name: 'centralJidListener'});
50 centralJidListenerGmailPort.onMessage.addListener(function(msg) { 57 centralJidListenerGmailPort.onMessage.addListener(function(msg) {
51 centralRosterJid = msg.jid; 58 if (msg.eventType == ChatBridgeEventTypes.CENTRAL_USER_UPDATE) {
52 dispatchCentralJid(centralRosterJid); 59 centralRosterJid = msg.jid;
60 }
61 dispatchChatEvent(msg.eventType, msg.jid);
53 }); 62 });
54 } 63 }
55 } 64 }
56 65
57 /** 66 /**
58 * When the page loads, search for the communication channel div. 67 * When the page loads, search for the communication channel div.
59 */ 68 */
60 function onPageLoaded() { 69 function onPageLoaded() {
61 divGmailHandler = document.getElementById('mainElement'); 70 divGmailHandler = document.getElementById('mainElement');
62 if (divGmailHandler) { 71 if (divGmailHandler) {
(...skipping 19 matching lines...) Expand all
82 91
83 // The initial centralRosterJid is sent in setupCentralRosterJidListener, 92 // The initial centralRosterJid is sent in setupCentralRosterJidListener,
84 // but if it's already been called, send it here. 93 // but if it's already been called, send it here.
85 if (centralJidListenerGmailPort && centralRosterJid) { 94 if (centralJidListenerGmailPort && centralRosterJid) {
86 dispatchCentralJid(centralRosterJid); 95 dispatchCentralJid(centralRosterJid);
87 } 96 }
88 } 97 }
89 ); 98 );
90 99
91 window.addEventListener("load", onPageLoaded, false); 100 window.addEventListener("load", onPageLoaded, false);
OLDNEW
« no previous file with comments | « chrome/browser/resources/chat_manager/js/chatbridgehook.js ('k') | chrome/browser/resources/chat_manager/manifest.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698