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

Side by Side Diff: chrome/browser/resources/ntp_search/mock/mock.js

Issue 10823052: Refactoring the NTP. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 8 years, 4 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
OLDNEW
(Empty)
1 var __chrome__ = chrome;
2 var chrome = (function(){
3
4 var shouldRegisterData = !!window.chrome && !!window.chrome.send;
5
6 var callbackMap = {
7 'metricsHandler:logEventTime': 1,
8 'metricsHandler:recordInHistogram': 1,
9 'getApps': 'ntp.getAppsCallback',
10 'getRecentlyClosedTabs': 'ntp.setRecentlyClosedTabs',
11 'getMostVisited': 'ntp.setMostVisitedPages'
12 };
13
14 // TODO include automatically in the recorded data
15 var mockedThumbnailUrls = [
16 "http---www.wikipedia.org-",
17 "http---www.deviantart.com-",
18 "http---wefunkradio.com-",
19 "http---youtube.com-",
20 "http---amazon.com-",
21 "http---nytimes.com-",
22 "http---news.ycombinator.com-",
23 "http---cnn.com-",
24 "http---ebay.com-",
25 "http---www.google.com-chrome-intl-en-welcome.html",
26 "https---chrome.google.com-webstore-hl-en"
27 ];
28
29
30 //----------------------------------------------------------------------------
31 // Internals
32 //----------------------------------------------------------------------------
33
34 var dataMap = {};
35 var recordedDataMap = {};
36 var isInitialized = false;
37 var thumbnailUrlList = [];
38
39 function initialize() {
40 if (shouldRegisterData || !namespace('ntp')) {
41 return;
42 }
43 isInitialized = true;
44 namespace('ntp.getThumbnailUrl', mockGetThumbnailUrl);
45 }
46
47 function namespace(str, data) {
48 var ns = str.split('.'), name, object = window;
49 for (var i = 0, l = ns.length; i < l; i++) {
50 name = ns[i];
51 if (data && i == (l - 1)) {
52 object = object[name] = data;
53 } else {
54 object = object[name];
55 }
56 }
57 return object == window ? null : object;
58 }
59
60 function copyArray(arr) {
61 return Array.prototype.slice.call(arr, 0);
62 }
63
64 function interceptCallback(message, callbackNamespace) {
65 var original = namespace(callbackNamespace);
66 namespace(callbackNamespace, function(){
67 recordedDataMap[message] = copyArray(arguments);
68 var result = original.apply(window, arguments);
69 namespace(callbackNamespace, original);
70 return result;
71 });
72 }
73
74 function interceptLoadData() {
75 window.addEventListener('load', function() {
76 recordedDataMap['__loadTimeData__'] = loadTimeData.data_;
77 });
78 }
79
80 function mockGetThumbnailUrl(url) {
81 url = url.replace(/[\:\/\?\=]/g, '-');
82
83 if (thumbnailUrlList.length == 0) {
84 thumbnailUrlList = copyArray(mockedThumbnailUrls);
85 }
86 var mockUrl;
87 var index = thumbnailUrlList.indexOf(url);
88 if (index) {
89 mockUrl = thumbnailUrlList.splice(index, 0);
jeremycho_google 2012/07/31 03:09:16 What is this for? Shouldn't splice(index, 0) alwa
pedrosimonetti2 2012/08/03 18:14:01 Fixed. On 2012/07/31 03:09:16, jeremycho wrote:
90 } else {
91 mockUrl = thumbnailUrlList.shift();
92 }
93
94 mockUrl = 'mock/images/thumb/' + mockUrl + '.png';
95 return mockUrl;
96 }
97
98 function mockLoadData() {
99 if (loadTimeData) {
100 loadTimeData.data = dataMap['__loadTimeData__'];
101 }
102 }
103
104
105 //----------------------------------------------------------------------------
106 // ChromeMock implementation
107 //----------------------------------------------------------------------------
108
109 ChromeMock = {
110
111 mock: function(newDataMap) {
112 if (newDataMap) {
113 dataMap = newDataMap;
114 if (!shouldRegisterData) {
115 mockLoadData();
116 }
117 } else {
118 return recordedDataMap;
119 }
120 },
121
122 send: function() {
123 //console.log(message, arguments.length, arguments);
124 if (!isInitialized) {
125 initialize();
126 }
127
128 var message = arguments[0];
129 var souldCallChromeSend = false;
130
131 var data;
132 var callback;
133 var callbackNamespace;
134
135 if (callbackMap.hasOwnProperty(message)) {
136
137 callbackNamespace = callbackMap[message];
138
139 if (shouldRegisterData) {
140 if (callbackNamespace !== 1) {
141 interceptCallback(message, callbackNamespace);
142 }
143 } else {
144 if (dataMap.hasOwnProperty(message)) {
145 data = dataMap[message];
146 callback = namespace(callbackNamespace);
147 setTimeout(function(){
148 callback.apply(window, data);
149 }, 0);
150 } else {
151 if (callbackNamespace !== 1) {
152 console.warn('No mock registered for message "%s".', message);
153 }
154 }
155 }
156
157 } else {
158 souldCallChromeSend = true;
159 console.warn('No callback data registered for message "%s".', message);
160 }
161
162 souldCallChromeSend = souldCallChromeSend || shouldRegisterData;
jeremycho_google 2012/07/31 03:09:16 should
pedrosimonetti2 2012/08/03 18:14:01 Done.
163 if (souldCallChromeSend) {
164 if (__chrome__ && __chrome__.send) {
165 __chrome__.send(message);
166 }
167 }
168 },
169 };
170
171 //----------------------------------------------------------------------------
172 // ChromeMock initialization
173 //----------------------------------------------------------------------------
174
175 if (shouldRegisterData) {
176 interceptLoadData();
177 }
178
179 return ChromeMock;
180 })();
181
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698