Skip to content

Commit 6bf067d

Browse files
committed
Refactor, pass root element along, instead of document
1 parent 553bdd2 commit 6bf067d

13 files changed

+174
-174
lines changed

src/browser.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ var browser = (function (util, proxies, ayepromise, sanedomparsererror, theWindo
1717
return element;
1818
};
1919

20-
module.executeJavascript = function (doc, options) {
20+
module.executeJavascript = function (element, options) {
2121
var iframe = createHiddenElement(theWindow.document, "iframe", options.width, options.height),
22-
html = doc.documentElement.outerHTML,
22+
html = element.outerHTML,
2323
iframeErrorsMessages = [],
2424
defer = ayepromise.defer(),
2525
timeout = options.executeJsTimeout || 0;
@@ -150,8 +150,8 @@ var browser = (function (util, proxies, ayepromise, sanedomparsererror, theWindo
150150
};
151151
};
152152

153-
module.calculateDocumentContentSize = function (doc, options) {
154-
var html = doc.documentElement.outerHTML,
153+
module.calculateDocumentContentSize = function (element, options) {
154+
var html = element.outerHTML,
155155
defer = ayepromise.defer(),
156156
zoom = options.zoom || 1,
157157
iframe;

src/document2svg.js

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,8 @@ var document2svg = (function (util, browser, documentHelper, mediaQueryHelper, x
6666
}).join(' ');
6767
};
6868

69-
var convertDocumentToSvg = function (doc, size, zoomFactor) {
70-
var xhtml = xmlserializer.serializeToString(doc);
69+
var convertElementToSvg = function (element, size, zoomFactor) {
70+
var xhtml = xmlserializer.serializeToString(element);
7171

7272
browser.validateXHTML(xhtml);
7373

@@ -87,28 +87,28 @@ var document2svg = (function (util, browser, documentHelper, mediaQueryHelper, x
8787
);
8888
};
8989

90-
module.getSvgForDocument = function (doc, size, zoomFactor) {
91-
documentHelper.rewriteTagNameSelectorsToLowerCase(doc);
90+
module.getSvgForDocument = function (element, size, zoomFactor) {
91+
documentHelper.rewriteTagNameSelectorsToLowerCase(element);
9292

9393
return mediaQueryHelper.needsEmWorkaround().then(function (needsWorkaround) {
9494
if (needsWorkaround) {
95-
mediaQueryHelper.workAroundWebKitEmSizeIssue(doc);
95+
mediaQueryHelper.workAroundWebKitEmSizeIssue(element);
9696
}
9797

98-
return convertDocumentToSvg(doc, size, zoomFactor);
98+
return convertElementToSvg(element, size, zoomFactor);
9999
});
100100
};
101101

102-
module.drawDocumentAsSvg = function (doc, options) {
102+
module.drawDocumentAsSvg = function (element, options) {
103103
['hover', 'active', 'focus', 'target'].forEach(function (action) {
104104
if (options[action]) {
105-
documentHelper.fakeUserAction(doc, options[action], action);
105+
documentHelper.fakeUserAction(element, options[action], action);
106106
}
107107
});
108108

109-
return browser.calculateDocumentContentSize(doc, options)
109+
return browser.calculateDocumentContentSize(element, options)
110110
.then(function (size) {
111-
return module.getSvgForDocument(doc, size, options.zoom);
111+
return module.getSvgForDocument(element, size, options.zoom);
112112
});
113113
};
114114

src/documentHelper.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ var documentHelper = (function (documentUtil) {
1414
target: false
1515
};
1616

17-
module.fakeUserAction = function (doc, selector, action) {
18-
var elem = doc.querySelector(selector),
17+
module.fakeUserAction = function (element, selector, action) {
18+
var elem = element.querySelector(selector),
1919
pseudoClass = ':' + action,
2020
fakeActionClass = 'rasterizehtml' + action;
2121
if (! elem) {
@@ -27,7 +27,7 @@ var documentHelper = (function (documentUtil) {
2727
} else {
2828
documentUtil.addClassName(elem, fakeActionClass);
2929
}
30-
documentUtil.rewriteCssSelectorWith(doc, pseudoClass, '.' + fakeActionClass);
30+
documentUtil.rewriteCssSelectorWith(element, pseudoClass, '.' + fakeActionClass);
3131
};
3232

3333
module.persistInputValues = function (doc) {
@@ -57,8 +57,8 @@ var documentHelper = (function (documentUtil) {
5757
});
5858
};
5959

60-
module.rewriteTagNameSelectorsToLowerCase = function (doc) {
61-
documentUtil.lowercaseCssTypeSelectors(doc, documentUtil.findHtmlOnlyNodeNames(doc));
60+
module.rewriteTagNameSelectorsToLowerCase = function (element) {
61+
documentUtil.lowercaseCssTypeSelectors(element, documentUtil.findHtmlOnlyNodeNames(element));
6262
};
6363

6464
return module;

src/documentUtil.js

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,10 @@ var documentUtil = (function () {
5757
'(?=\\W|$)'; // followed either by a non-alphabetic character or the end of the string
5858
};
5959

60-
var replaceSimpleSelectorsBy = function (doc, simpleSelectorList, caseInsensitiveReplaceFunc) {
60+
var replaceSimpleSelectorsBy = function (element, simpleSelectorList, caseInsensitiveReplaceFunc) {
6161
var selectorRegex = matchingSimpleSelectorsRegex(simpleSelectorList);
6262

63-
asArray(doc.querySelectorAll('style')).forEach(function (styleElement) {
63+
asArray(element.querySelectorAll('style')).forEach(function (styleElement) {
6464
var matchingRules = asArray(styleElement.sheet.cssRules).filter(function (rule) {
6565
return rule.selectorText && new RegExp(selectorRegex, 'i').test(rule.selectorText);
6666
});
@@ -82,32 +82,32 @@ var documentUtil = (function () {
8282
});
8383
};
8484

85-
module.rewriteCssSelectorWith = function (doc, oldSelector, newSelector) {
86-
replaceSimpleSelectorsBy(doc, [oldSelector], function () {
85+
module.rewriteCssSelectorWith = function (element, oldSelector, newSelector) {
86+
replaceSimpleSelectorsBy(element, [oldSelector], function () {
8787
return newSelector;
8888
});
8989
};
9090

91-
module.lowercaseCssTypeSelectors = function (doc, matchingTagNames) {
92-
replaceSimpleSelectorsBy(doc, matchingTagNames, function (match) {
91+
module.lowercaseCssTypeSelectors = function (element, matchingTagNames) {
92+
replaceSimpleSelectorsBy(element, matchingTagNames, function (match) {
9393
return match.toLowerCase();
9494
});
9595
};
9696

97-
module.findHtmlOnlyNodeNames = function (doc) {
98-
var treeWalker = doc.createTreeWalker(doc, NodeFilter.SHOW_ELEMENT),
97+
module.findHtmlOnlyNodeNames = function (element) {
98+
var treeWalker = element.ownerDocument.createTreeWalker(element, NodeFilter.SHOW_ELEMENT),
9999
htmlNodeNames = {},
100100
nonHtmlNodeNames = {},
101101
currentTagName;
102102

103-
while(treeWalker.nextNode()) {
103+
do {
104104
currentTagName = treeWalker.currentNode.tagName.toLowerCase();
105105
if (treeWalker.currentNode.namespaceURI === 'http://www.w3.org/1999/xhtml') {
106106
htmlNodeNames[currentTagName] = true;
107107
} else {
108108
nonHtmlNodeNames[currentTagName] = true;
109109
}
110-
}
110+
} while(treeWalker.nextNode());
111111

112112
return Object.keys(htmlNodeNames).filter(function (tagName) {
113113
return !nonHtmlNodeNames[tagName];

src/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ var rasterizeHTML = (function (util, browser, rasterize) {
3737
optionalArguments = Array.prototype.slice.call(arguments, 1),
3838
params = util.parseOptionalParameters(optionalArguments);
3939

40-
return rasterize.rasterize(doc, params.canvas, constructOptions(params));
40+
return rasterize.rasterize(doc.documentElement, params.canvas, constructOptions(params));
4141
};
4242

4343
var drawHTML = function (html, canvas, options) {

src/mediaQueryHelper.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,8 +175,8 @@ var mediaQueryHelper = (function (cssMediaQuery) {
175175
return anyRuleHasChanges;
176176
};
177177

178-
module.workAroundWebKitEmSizeIssue = function (document) {
179-
var styles = document.querySelectorAll('style');
178+
module.workAroundWebKitEmSizeIssue = function (element) {
179+
var styles = element.querySelectorAll('style');
180180

181181
asArray(styles).forEach(function (style) {
182182
var mediaQueryRules = asArray(style.sheet.cssRules).filter(function (rule) {

src/rasterize.js

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ var rasterize = (function (util, browser, documentHelper, document2svg, svg2imag
3131
}
3232
};
3333

34-
var doDraw = function (doc, canvas, options) {
35-
return document2svg.drawDocumentAsSvg(doc, options)
34+
var doDraw = function (element, canvas, options) {
35+
return document2svg.drawDocumentAsSvg(element, options)
3636
.then(drawSvgAsImg)
3737
.then(function (result) {
3838
if (canvas) {
@@ -43,8 +43,8 @@ var rasterize = (function (util, browser, documentHelper, document2svg, svg2imag
4343
});
4444
};
4545

46-
var operateJavaScriptOnDocument = function (doc, options) {
47-
return browser.executeJavascript(doc, options)
46+
var operateJavaScriptOnDocument = function (element, options) {
47+
return browser.executeJavascript(element, options)
4848
.then(function (result) {
4949
var document = result.document;
5050
documentHelper.persistInputValues(document);
@@ -56,30 +56,30 @@ var rasterize = (function (util, browser, documentHelper, document2svg, svg2imag
5656
});
5757
};
5858

59-
module.rasterize = function (doc, canvas, options) {
59+
module.rasterize = function (element, canvas, options) {
6060
var inlineOptions;
6161

6262
inlineOptions = util.clone(options);
6363
inlineOptions.inlineScripts = options.executeJs === true;
6464

65-
return inlineresources.inlineReferences(doc, inlineOptions)
65+
return inlineresources.inlineReferences(element, inlineOptions)
6666
.then(function (errors) {
6767
if (options.executeJs) {
68-
return operateJavaScriptOnDocument(doc, options)
68+
return operateJavaScriptOnDocument(element, options)
6969
.then(function (result) {
7070
return {
71-
document: result.document,
71+
element: result.document.documentElement,
7272
errors: errors.concat(result.errors)
7373
};
7474
});
7575
} else {
7676
return {
77-
document: doc,
77+
element: element,
7878
errors: errors
7979
};
8080
}
8181
}).then(function (result) {
82-
return doDraw(result.document, canvas, options)
82+
return doDraw(result.element, canvas, options)
8383
.then(function (drawResult) {
8484
return {
8585
image: drawResult.image,

0 commit comments

Comments
 (0)