Browse Source

Add getFindBar for Fx extension

Adam Dane [:hobophobe] 11 years ago
parent
commit
bc66c8119e
  1. 26
      extensions/firefox/content/PdfStreamConverter.jsm
  2. 5
      test/mozcentral/browser_pdfjs_main.js

26
extensions/firefox/content/PdfStreamConverter.jsm

@ -53,12 +53,22 @@ XPCOMUtils.defineLazyServiceGetter(Svc, 'mime',
'@mozilla.org/mime;1', '@mozilla.org/mime;1',
'nsIMIMEService'); 'nsIMIMEService');
function getChromeWindow(domWindow) { function getContainingBrowser(domWindow) {
var containingBrowser = domWindow.QueryInterface(Ci.nsIInterfaceRequestor) return domWindow.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIWebNavigation) .getInterface(Ci.nsIWebNavigation)
.QueryInterface(Ci.nsIDocShell) .QueryInterface(Ci.nsIDocShell)
.chromeEventHandler; .chromeEventHandler;
return containingBrowser.ownerDocument.defaultView; }
function getChromeWindow(domWindow) {
return getContainingBrowser(domWindow).ownerDocument.defaultView;
}
function getFindBar(domWindow) {
var browser = getContainingBrowser(domWindow);
var tabbrowser = browser.getTabBrowser();
var tab = tabbrowser._getTabForBrowser(browser);
return tabbrowser.getFindBar(tab);
} }
function setBoolPref(pref, value) { function setBoolPref(pref, value) {
@ -320,8 +330,8 @@ ChromeActions.prototype = {
// Integrated find is only supported when we're not in a frame and when the // Integrated find is only supported when we're not in a frame and when the
// new find events code exists. // new find events code exists.
return this.domWindow.frameElement === null && return this.domWindow.frameElement === null &&
getChromeWindow(this.domWindow).gFindBar && getFindBar(this.domWindow) &&
'updateControlState' in getChromeWindow(this.domWindow).gFindBar; 'updateControlState' in getFindBar(this.domWindow);
}, },
supportsDocumentFonts: function() { supportsDocumentFonts: function() {
var prefBrowser = getIntPref('browser.display.use_document_fonts', 1); var prefBrowser = getIntPref('browser.display.use_document_fonts', 1);
@ -438,8 +448,7 @@ ChromeActions.prototype = {
(findPreviousType !== 'undefined' && findPreviousType !== 'boolean')) { (findPreviousType !== 'undefined' && findPreviousType !== 'boolean')) {
return; return;
} }
getChromeWindow(this.domWindow).gFindBar getFindBar(this.domWindow).updateControlState(result, findPrevious);
.updateControlState(result, findPrevious);
}, },
setPreferences: function(prefs, sendResponse) { setPreferences: function(prefs, sendResponse) {
var defaultBranch = Services.prefs.getDefaultBranch(PREF_PREFIX + '.'); var defaultBranch = Services.prefs.getDefaultBranch(PREF_PREFIX + '.');
@ -917,7 +926,8 @@ PdfStreamConverter.prototype = {
}, false, true); }, false, true);
if (actions.supportsIntegratedFind()) { if (actions.supportsIntegratedFind()) {
var chromeWindow = getChromeWindow(domWindow); var chromeWindow = getChromeWindow(domWindow);
var findEventManager = new FindEventManager(chromeWindow.gFindBar, var findBar = getFindBar(domWindow);
var findEventManager = new FindEventManager(findBar,
domWindow, domWindow,
chromeWindow); chromeWindow);
findEventManager.bind(); findEventManager.bind();

5
test/mozcentral/browser_pdfjs_main.js

@ -46,6 +46,11 @@ function runTests(document, window, callback) {
ok(document.querySelector('div#viewer'), "document content has viewer UI"); ok(document.querySelector('div#viewer'), "document content has viewer UI");
ok('PDFJS' in window.wrappedJSObject, "window content has PDFJS object"); ok('PDFJS' in window.wrappedJSObject, "window content has PDFJS object");
//
// Browser Find
//
ok(gBrowser.isFindBarInitialized(tab), "Browser FindBar initialized!");
// //
// Sidebar: open // Sidebar: open
// //

Loading…
Cancel
Save