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

Unified 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 side-by-side diff with in-line comments
Download patch
Index: chrome/test/data/extensions/platform_apps/ad_view/ad_network/test_sdk.js
diff --git a/chrome/test/data/extensions/platform_apps/ad_view/ad_network/test_sdk.js b/chrome/test/data/extensions/platform_apps/ad_view/ad_network/test_sdk.js
new file mode 100644
index 0000000000000000000000000000000000000000..89dec51caef28f9333057e82f0f38ad79ac592b2
--- /dev/null
+++ b/chrome/test/data/extensions/platform_apps/ad_view/ad_network/test_sdk.js
@@ -0,0 +1,130 @@
+(function( window ) {
+ "use strict";
+
+ var document = window.document;
+
+ var ad_urls = [
+ 'ads/image315.png',
+ 'ads/image316.png',
+ 'ads/image317.png',
+ 'ads/image318.png',
+ 'ads/image319.png',
+ ];
+
+ // Pick a random ad url
+ function getAdUrl(index) {
+ if (typeof index === "undefined")
+ index = Math.floor(Math.random() * ad_urls.length);
+ var ad_path = ad_urls[index];
+ var prefix_index = location.href.lastIndexOf("/");
+ 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
+ }
+
+ //
+ // Send a message to the embedding app
+ //
+ var message_sequence_number = 0;
+
+ function sendAppMessage(source, message, publisher_data, message_data) {
+ source.postMessage({
+ 'sequence_number': message_sequence_number,
+ 'message': message,
+ 'publisher_data': publisher_data,
+ 'data': message_data,
+ }, "*");
+
+ message_sequence_number++;
+ }
+
+ //
+ // When the img for an ad is loaded into its iframe
+ //
+ function onAdLoaded(source, publisher_data) {
+ // Resize containing iframe to size of image
+ var iframe = document.getElementById("ad-frame");
+ var img = iframe.contentWindow.document.getElementsByTagName("IMG")[0];
+
+ iframe.style.width = img.width + "px";
+ iframe.style.height = img.height + "px";
+
+ // Size of ad = size of document body + margins
+ 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.
+ return parseFloat(value.substr(0, value.indexOf("px")));
+ }
+
+ var style = document.defaultView.getComputedStyle(document.body, '');
+ var elemHeight = sint(style.getPropertyValue('height'));
+ var elemVerticalMargin =
+ sint(style.getPropertyValue('margin-top')) +
+ sint(style.getPropertyValue('margin-bottom'));
+
+ var elemWidth = sint(style.getPropertyValue('width'));
+ var elemHorizontalMargin =
+ sint(style.getPropertyValue('margin-left')) +
+ sint(style.getPropertyValue('margin-right'));
+
+ var adRect = {
+ height: (elemHeight + elemVerticalMargin) + "px",
+ width: (elemWidth + elemHorizontalMargin) + "px",
+ };
+
+ sendAppMessage(source, "ad-displayed", publisher_data, {
+ 'ad_size': {
+ width: adRect.width,
+ height: adRect.height
+ }});
+
+ img.onclick = function() {
+ sendAppMessage(source, "ad-clicked", publisher_data);
+ };
+ }
+
+ //
+ // display a random ad in the ad iframe
+ //
+ function displayAd(source, publisher_data, ad_index) {
+ // Remove temporary message since we are about to display an add
+ var tempDiv = document.getElementById("temp-display");
+ if (tempDiv) {
+ tempDiv.parentNode.removeChild(tempDiv);
+ }
+
+ // Load image in iframe
+ var iframe = document.getElementById("ad-frame");
+ if (iframe.contentWindow.document.body.firstChild == null) {
+ var img = iframe.contentWindow.document.createElement("img");
+ iframe.contentWindow.document.body.appendChild(img);
+ }
+ var img = iframe.contentWindow.document.body.firstChild;
+ img.onload = function() { onAdLoaded(source, publisher_data); };
+ img.src = getAdUrl(ad_index);
+ iframe.style.visibility = "visible";
+ }
+
+ function processAppMessage(source, data) {
+ if (data.message == "display-ad") {
+ displayAd(source, data.publisher_data);
+ }
+ else if (data.message == "display-first-ad") {
+ displayAd(source, data.publisher_data, 0/*ad_index*/);
+ }
+ else if (data.message == "onloadcommit") {
+ sendAppMessage(source, "onloadcommit-ack");
+ }
+ }
+
+ function onPostMessage(eventMessage) {
+ processAppMessage(eventMessage.source, eventMessage.data);
+ }
+
+ function onDocumentReady() {
+ document.getElementById("url").textContent = window.location;
+ }
+
+ //
+ // Add global event listeners.
+ //
+ window.addEventListener("message", onPostMessage, false);
+ document.addEventListener('DOMContentLoaded', onDocumentReady, false);
+
+})(window);

Powered by Google App Engine
This is Rietveld 408576698