Skip to content

FoxtrickCallStack

minj edited this page Mar 19, 2015 · 1 revision

Firefox

  • bootstrap.js: ### startup()

    • setDefaultPrefs()
    • for each window: ### bootstrap-firefox.js: ### loadIntoWindow(window)
      • Creates window context
      • Foxtrick.init()
        • Foxtrick.loadScript()
        • loader-firefox.js: ### Foxtrick.loader.firefox.browserLoad()

          • entry.js: ### Foxtrick.entry.init()

            • inits FoxtrickPrefs, Foxtrickl10n, Foxtrick.XMLData
            • niceRun module.init()
          • module.onLoad(chromeDoc)
          • adds Foxtrick.loader.firefox.DOMContentLoaded listener
            • Starts document 'context'
            • ui.js: ### Foxtrick.modules.UI.update(doc)

              • Foxtrick.modules.UI.updateIcon(doc)
            • Foxtrick.entry.docLoad(doc)
              • Foxtrick.log.flush(doc)
              • Foxtrick.entry.run(doc)
                • reinit if prefs changed
                • check layout and load css
                • niceRun module.run(doc)
                • Foxtrick.log.flush(doc)
              • Foxtrick.log.flush(doc)
              • misc.js: ### Foxtrick.startListenToChange(doc)

                • Foxtrick.entry.change(ev) and blocks until done
                  • niceRun module.change(doc, ev)
                  • Foxtrick.log.flush(doc)
          • adds Foxtrick.loader.firefox.tabFocus listener
            • finds current doc
            • module.onTabChange(doc)
            • Foxtrick.entry.run(doc, true) // rechecks css only
            • Foxtrick.log.flush(doc)
    • misc.js: ### Foxtrick.reloadAll()

      • traverses all tabs of all windows and reloads HT urls
    • adds window listener to run loadIntoWindow(window) for new windows

FF for Android

  • bootstrap.js: ### startup()

    • setDefaultPrefs()
    • for each window: ### bootstrap-fennec.js: ### loadIntoWindow(window)
      • Creates window (background) context
      • Foxtrick.init()
        • Foxtrick.loadScript() contains only utils and modules with init()
          • env.js defines messaging; Foxtrick.DataPath is local
        • observer.js: ### Foxtrick.addObserver() prefs xul interaction: open and reset buttons; obsolete?

        • background.js: ### Foxtrick.loader.background.browserLoad()

          • updateResources()
            • entry.js:Foxtrick.entry.init()
              • inits FoxtrickPrefs, Foxtrickl10n, Foxtrick.XMLData
              • niceRun module.init()
            • serialize resource XML
            • get CSS
          • module.onLoad(bgDoc)
          • defines all content request handlers
        • css.js: ### Foxtrick.util.css.load_module_css()

        • scripts-fennec.js: ### Foxtrick.loader.background.contentScriptManager.load()

          • loads all content scripts into content context
          • loader-fennec.js: ### Foxtrick.loader.fennec.tabLoadStart()

            • sends 'tabLoad' to background context once per tab
              • Foxtrick.loader.background.requests.pageLoad()
                • updateResources() if prefs changed
                • sends resources and prefs back to content context
                  • Foxtrick.entry.contentScriptInit(data)
                    • inits FoxtrickPrefs, Foxtrickl10n
                    • parses XML
                  • adds Foxtrick.loader.fennec.DOMContentLoadedListener
                    • Foxtrick.entry.docLoad(doc)
                    • Foxtrick.log.flush(doc)
                    • Foxtrick.entry.run(doc)
                    • check layout and load css
                    • niceRun module.run(doc)
                    • Foxtrick.log.flush(doc)
                    • Foxtrick.log.flush(doc)
                    • misc.js: ### Foxtrick.startListenToChange(doc)

                    • Foxtrick.entry.change(ev) and blocks until done
                    • niceRun module.change(doc, ev)
                    • Foxtrick.log.flush(doc)
    • misc.js: ### Foxtrick.reloadAll()

      • traverses all tabs of all windows and reloads HT urls
    • adds window listener to run loadIntoWindow(window) for new windows

Chrome etc

  • Background context loads upon browser start
    • background.js: ### Foxtrick.loader.background.browserLoad()

      • updateResources()
        • entry.js:Foxtrick.entry.init()
          • inits FoxtrickPrefs, Foxtrickl10n, Foxtrick.XMLData
          • niceRun module.init()
        • serialize resource XML
        • get CSS
      • module.onLoad(bgDoc)
      • defines all content request handlers and sits there
      • env.js:* sends 'checkAlive' to *content context

  • Content context
    • env.js:* sends 'register' to *background context

    • loader-chrome.js: ### Foxtrick.loader.chrome.docLoadStart()

      • sends 'pageLoad' to background context every time a page is loaded
        • Foxtrick.loader.background.requests.pageLoad()
          • updateResources() if prefs changed
          • Foxtrick.modules.UI.update(sender.tab)
          • sends css, resources and prefs back to content context
            • Foxtrick.entry.contentScriptInit(data)
              • parses XML
            • injects css
            • Foxtrick.entry.docLoad(doc) if slow
      • adds Foxtrick.entry.docLoad(doc) listener
        • Foxtrick.log.flush(doc)
        • Foxtrick.entry.run(doc)
          • check layout and load css
          • niceRun module.run(doc)
          • Foxtrick.log.flush(doc)
        • Foxtrick.log.flush(doc)
        • misc.js: ### Foxtrick.startListenToChange(doc)

          • Foxtrick.entry.change(ev) and blocks until done
            • niceRun module.change(doc, ev)
            • Foxtrick.log.flush(doc)