summaryrefslogtreecommitdiff
path: root/chrome/zeitgeist.js
blob: 82bcb0109c764f98d36f0fe98196c52ee0e5f5c0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
var plugin = document.embeds[0];
var tabInfo = {};
var tabIdTimeouts = {};
var currentTabs = {};

function onTabCreated (tab) {
	chrome.tabs.executeScript(tab.id, {file: "content_script.js"});
}

function onTabRemoved (tabid) {
	sendLeaveEvent(tabid);
}

function onTabUpdated (tabid, changeInfo, tab) {
	if (!changeInfo.url) return;
	window.clearTimeout(tabIdTimeouts[tabid])
	tabIdTimeouts[tabid] = window.setTimeout(function(){
		console.log("sending event for " + tab.url);
		chrome.tabs.executeScript(tabid, {file: "content_script.js"});},
		5000);
}

function onBookmarkCreated (bookmarkid, bookmark) {
	if (!bookmark.url) return; // bookmark folder
	var url = bookmark.url;
	var title = bookmark.title;
	var mimetype = "text/html"; // FIXME: really? use XHR to get it?
	plugin.insertEvent(url, url, mimetype, title, plugin.ACCESS_EVENT, plugin.BOOKMARK);
}

function sendAccessEvent (documentInfo, tabid) {
	var url = documentInfo.url;
	var origin = documentInfo.origin;
	var domain = documentInfo.domain;
	if (domain == null)
	{
		var s = url.split("/");
		s[s.length-1] = '';
		domain = s.join("/");
	}
	var mimetype = documentInfo.mimeType;
	var title = documentInfo.title;
  plugin.insertEvent(url,
                     domain,
                     mimetype ? mimetype : "text/html",
                     title);
  console.log("save thumbnail for "+currentTabs[tabid]+": "+url);
  chrome.tabs.captureVisibleTab(currentTabs[tabid], {format:"jpeg", quality:5}, function(dataUrl) {
      plugin.saveSnapshot(url, dataUrl);
  });

	documentInfo.sentAccess = true;
	tabInfo[tabid] = documentInfo;
}

function sendLeaveEvent (tabid) {
	var documentInfo = tabInfo[tabid];
	if (documentInfo == null || documentInfo.sentAccess != true) return;

	var url = documentInfo.url;
	var origin = documentInfo.origin;
	var domain = documentInfo.domain;
	if (domain == null)
	{
		var s = url.split("/");
		s[s.length-1] = '';
		domain = s.join("/");
	}
	var mimetype = documentInfo.mimeType;
	var title = documentInfo.title;
	plugin.insertEvent(url,
	                   domain,
	                   mimetype ? mimetype : "text/html",
	                   title,
	                   plugin.LEAVE_EVENT);

	tabInfo[tabid] = null;
}

// this works in chrome 7,8,9
function onExtensionRequest (request, sender, sendResponse) {
	var id = sender.tab.id;
	sendLeaveEvent(id);
	sendAccessEvent(request, id);
}

var is_chromium = /chromium/.test( navigator.userAgent.toLowerCase() );
if (!is_chromium) plugin.setActor("application://google-chrome.desktop");
else plugin.setActor("application://chromium-browser.desktop");

chrome.extension.onRequest.addListener (onExtensionRequest);
//chrome.bookmarks.onCreated.addListener (onBookmarkCreated);
chrome.tabs.onUpdated.addListener (onTabUpdated);
chrome.tabs.onCreated.addListener(
  function (tab) {
    currentTabs[tab.id] = tab.windowId;
  }
);

chrome.tabs.onRemoved.addListener(
  function (tabid) {
    delete currentTabs[tabid];
  }
);
//chrome.tabs.onCreated.addListener (onTabCreated);
//chrome.tabs.onRemoved.addListener (onTabRemoved);

chrome.windows.getAll({"populate" : true}, function (windows) {
    for (var i = 0; i < windows.length; i++) {
        var tabs = windows[i].tabs;
        for (var j = 0; j < tabs.length; j++) {
            chrome.tabs.executeScript(tabs[j].id, {file: "content_script.js"});
        }
    }
});