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

Side by Side Diff: chrome/test/data/extensions/platform_apps/ad_view/ad_network/test_sdk.js

Issue 12463015: Enable <adview> tag for packaged apps. (Closed) Base URL: https://git.chromium.org/chromium/src.git@master
Patch Set: Rebasing Created 7 years, 9 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 (function( window ) {
2 "use strict";
3
4 var document = window.document;
5
6 var ad_urls = [
7 'ads/image315.png',
8 'ads/image316.png',
9 'ads/image317.png',
10 'ads/image318.png',
11 'ads/image319.png',
12 ];
13
14 // Pick a random ad url
15 function getAdUrl(index) {
16 if (typeof index === "undefined")
17 index = Math.floor(Math.random() * ad_urls.length);
18 var ad_path = ad_urls[index];
19 var prefix_index = location.href.lastIndexOf("/");
20 return location.href.substr(0, prefix_index) + "/" + ad_path;
asargent_no_longer_on_chrome 2013/03/11 19:10:14 FYI, we are usually careful about using randomness
rpaquay 2013/03/12 19:56:48 We actually don't need the randomness for tests, s
21 }
22
23 //
24 // Send a message to the embedding app
25 //
26 var message_sequence_number = 0;
27
28 function sendAppMessage(source, message, publisher_data, message_data) {
29 source.postMessage({
30 'sequence_number': message_sequence_number,
31 'message': message,
32 'publisher_data': publisher_data,
33 'data': message_data,
34 }, "*");
35
36 message_sequence_number++;
37 }
38
39 //
40 // When the img for an ad is loaded into its iframe
41 //
42 function onAdLoaded(source, publisher_data) {
43 // Resize containing iframe to size of image
44 var iframe = document.getElementById("ad-frame");
45 var img = iframe.contentWindow.document.getElementsByTagName("IMG")[0];
46
47 iframe.style.width = img.width + "px";
48 iframe.style.height = img.height + "px";
49
50 // Size of ad = size of document body + margins
51 function sint(value) {
asargent_no_longer_on_chrome 2013/03/11 19:10:14 nits: can you use a more meaningful function name
rpaquay 2013/03/12 19:56:48 Done.
52 return parseFloat(value.substr(0, value.indexOf("px")));
53 }
54
55 var style = document.defaultView.getComputedStyle(document.body, '');
56 var elemHeight = sint(style.getPropertyValue('height'));
57 var elemVerticalMargin =
58 sint(style.getPropertyValue('margin-top')) +
59 sint(style.getPropertyValue('margin-bottom'));
60
61 var elemWidth = sint(style.getPropertyValue('width'));
62 var elemHorizontalMargin =
63 sint(style.getPropertyValue('margin-left')) +
64 sint(style.getPropertyValue('margin-right'));
65
66 var adRect = {
67 height: (elemHeight + elemVerticalMargin) + "px",
68 width: (elemWidth + elemHorizontalMargin) + "px",
69 };
70
71 sendAppMessage(source, "ad-displayed", publisher_data, {
72 'ad_size': {
73 width: adRect.width,
74 height: adRect.height
75 }});
76
77 img.onclick = function() {
78 sendAppMessage(source, "ad-clicked", publisher_data);
79 };
80 }
81
82 //
83 // display a random ad in the ad iframe
84 //
85 function displayAd(source, publisher_data, ad_index) {
86 // Remove temporary message since we are about to display an add
87 var tempDiv = document.getElementById("temp-display");
88 if (tempDiv) {
89 tempDiv.parentNode.removeChild(tempDiv);
90 }
91
92 // Load image in iframe
93 var iframe = document.getElementById("ad-frame");
94 if (iframe.contentWindow.document.body.firstChild == null) {
95 var img = iframe.contentWindow.document.createElement("img");
96 iframe.contentWindow.document.body.appendChild(img);
97 }
98 var img = iframe.contentWindow.document.body.firstChild;
99 img.onload = function() { onAdLoaded(source, publisher_data); };
100 img.src = getAdUrl(ad_index);
101 iframe.style.visibility = "visible";
102 }
103
104 function processAppMessage(source, data) {
105 if (data.message == "display-ad") {
106 displayAd(source, data.publisher_data);
107 }
108 else if (data.message == "display-first-ad") {
109 displayAd(source, data.publisher_data, 0/*ad_index*/);
110 }
111 else if (data.message == "onloadcommit") {
112 sendAppMessage(source, "onloadcommit-ack");
113 }
114 }
115
116 function onPostMessage(eventMessage) {
117 processAppMessage(eventMessage.source, eventMessage.data);
118 }
119
120 function onDocumentReady() {
121 document.getElementById("url").textContent = window.location;
122 }
123
124 //
125 // Add global event listeners.
126 //
127 window.addEventListener("message", onPostMessage, false);
128 document.addEventListener('DOMContentLoaded', onDocumentReady, false);
129
130 })(window);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698