Tab Mix Plus は window オブジェクトレイパー

そのversionってグローバル変数、本当に必要なのか?

こんなコメントを見たので、ふと調べてみた。
使ったのは、Welcome to vimpr! というスクリプトで、前回起動時との window オブジェクトの内容の差分を調べる Vimperator プラグイン
んで、この下がその調べた結果、TMP が window オブジェクトにつっこむ変数群だよ!

  1. BUTTON_CANCEL
  2. BUTTON_EXTRA1
  3. BUTTON_OK
  4. CHECKBOX_CHECKED
  5. CHECKBOX_UNCHECKED
  6. Click2TabLoadBookmark
  7. DLG_RENAME
  8. DLG_SAVE
  9. DRAG_LINK
  10. DRAG_TAB_IN_SAME_WINDOW
  11. DRAG_TAB_TO_NEW_WINDOW
  12. HIDE_CHECKBOX
  13. HIDE_MENUANDTEXT
  14. HSitems
  15. NC_NS_TM
  16. NC_TM
  17. NO_NEED_TO_REPLACE
  18. NW_waitForSessionHistory
  19. SELECT_CRASH
  20. SELECT_DEFAULT
  21. SELECT_LASTSESSION
  22. SHOW_CLOSED_WINDOW_LIST
  23. SHOW_MENULIST
  24. SHOW_TEXTBOX
  25. SessionData
  26. SessionManager
  27. SessionPref
  28. TMP_Bookmark
  29. TMP_BrowserCloseWindow
  30. TMP_BrowserLoadURL
  31. TMP_BrowserOpenTab
  32. TMP_BrowserToolboxCustomizeDone
  33. TMP_ClosedTabs
  34. TMP_DOMWindowOpenObserver
  35. TMP_DragAndDrop_init
  36. TMP_LastTab
  37. TMP_LookForRSS
  38. TMP_Newsfox
  39. TMP_Places
  40. TMP_PrefObserver
  41. TMP_ProgressListener
  42. TMP_RSSTICKER
  43. TMP_Sanitizer
  44. TMP_SearchLoadURL
  45. TMP_SessionStore
  46. TMP_TBP_Startup
  47. TMP_TBP_init
  48. TMP_TabDragDrop
  49. TMP_TabDragExit
  50. TMP_TabDragGesture
  51. TMP_TabDragOver
  52. TMP_TabsListOncommand
  53. TMP_beforStartup
  54. TMP_checkAttr
  55. TMP_checkCurrent
  56. TMP_checkForPopup
  57. TMP_closeLastTab
  58. TMP_closeWindow
  59. TMP_cmd_options
  60. TMP_contentAreaClick
  61. TMP_contentAreaOnDrop
  62. TMP_delayedStartup
  63. TMP_divertMiddleClick
  64. TMP_divertTargetedLink
  65. TMP_eventListener
  66. TMP_existsFrameName
  67. TMP_getBoolPref
  68. TMP_getBrowserWindow
  69. TMP_getCharPref
  70. TMP_getIntPref
  71. TMP_goButtonClick
  72. TMP_helpContentClick
  73. TMP_howToOpen
  74. TMP_onRemoveTab
  75. TMP_openDialog
  76. TMP_openExSiteLink
  77. TMP_openUILink
  78. TMP_openURL
  79. TMP_setDragEvents
  80. TMP_setItem
  81. TMP_showItem
  82. TMP_suppressTabsOnFileDownload
  83. TMP_tabContextMenuShown
  84. TMP_tabOnAttrModified
  85. TMP_tabOnTabClose
  86. TMP_tabSelectedFromList
  87. TMP_updateContextMenu
  88. TMP_update_whereToOpen
  89. TMP_whereToOpen
  90. TMP_wizzrss
  91. TM_BrowserHome
  92. TM_PromptService
  93. TM_checkClick
  94. TM_checkContentMenu
  95. TM_creatMenuItems
  96. TM_hidePopup
  97. TM_init
  98. TM_onTabBarDblClick
  99. TMclickAction
  100. TMupdateSettings
  101. TabDNDObserver
  102. Tm_checkTabClick
  103. _BrowserToolboxCustomizeDone
  104. __TMP_LoadBarURL
  105. __contentAreaClick
  106. _confirmOpenTabs
  107. _createTabsList
  108. _getBookmarkTitle
  109. _restoreTab
  110. addtabx
  111. adjustOn2ndTab
  112. adjustSafebrowsingDimArea
  113. alwaysNewTab
  114. autoReloadDialogResult
  115. autoReloadTabID
  116. beforeCommonList
  117. checkBeforeAndAfter
  118. checkDomain
  119. checkForCtrlClick
  120. convertSession
  121. createCommonList
  122. createMenuItems
  123. createTabsList
  124. dialogParams
  125. disableExtensions
  126. dtMergeWindows
  127. dupScrollPosition
  128. flst
  129. gAutoReloadDialogAccepted
  130. gBackupLabel
  131. gCancelLabel
  132. gFirefox2DefaultTheme
  133. gHideElmParam
  134. gHideTabBar
  135. gIOService
  136. gIsFirefox3
  137. gIsFirefox31
  138. gObserver
  139. gOrigName
  140. gPref
  141. gRDFRoot
  142. gRowHeight
  143. gSavedName
  144. gSessionPath
  145. gSingleWindowMode
  146. gTMPprefObserver
  147. gTab
  148. gTabBarWidth
  149. gTabbarPosition
  150. gThisWin
  151. gThisWinClosedtabs
  152. gThisWinTabs
  153. gURIFixer
  154. gWidthFitTitle
  155. gWindowManager
  156. getClosedTab
  157. getExtensions
  158. getMultiRowAttribute
  159. getPref
  160. getRowHeight
  161. getTitleFromBookmark
  162. hideCommonList
  163. inSameRow
  164. inputText
  165. isAfterCtrlClick
  166. isBookmarkletTM
  167. isUrlForDownload
  168. is_ignorable
  169. menuItemTitle
  170. newMenuItems
  171. newMenuOrders
  172. numberOfWindows
  173. object2String
  174. onAutoReloadPopup
  175. onDoubleClick
  176. openInWebPanelTM
  177. openMultipleLinks
  178. prefStringTMBookmark
  179. prefStringTMHistory
  180. prefStringTMUseMiddleClick
  181. prompt_deinit
  182. prompt_extra1
  183. prompt_init
  184. reloadPage
  185. removeTabFromList
  186. saveClosedTab
  187. setTabBarHeight
  188. setTextZoom
  189. setURLBarFocus
  190. setupAutoReload
  191. showTabsListPopup
  192. tabBarScrollStatus
  193. tabBarWidthChange
  194. tabSorting
  195. tablib
  196. tabscroll
  197. tabxBranch
  198. tabxPrefs
  199. tabxTabAdded
  200. tabxleft
  201. tmLog
  202. tmRDFResource
  203. tmSHEntry
  204. tmSHistory
  205. toggleUderlineTabsLabel
  206. undocloseTabButtonObserver
  207. updateMenuItemActive
  208. updateMenuItemInactive
  209. updateStatusText
  210. waitForSessionHistory
  211. whereToOpenLinkTabmix
  212. windowEnumerator

なんじゃこりゃぁあああああ!!!
いくら何でも汚しすぎだろう…
/^TMP_.*/ ってやつはまぁ良いだろうけどさ…それをのぞいても多い。

オマケ: garbage_finder の使い方

  1. タブを全て閉じて、:addons だけ表示しておく
  2. TMP を無効化
  3. Firefox 再起動 (ここで TMP が無いときの window 状態を調べる)
  4. もいっかい再起動
  5. :garbages コマンドを実行

新しい拡張いれたら調べておくのも良いかも。
ここが綺麗だとお行儀が良い拡張ってわけじゃないが、お行儀が悪いのは分かるだろう。

TMP 以外にもたくさんあるっぽいよ!

改めて他の拡張なんかも調べてみると結構汚いのがちらほらと。
上のリストで、version が含まれていないのはそのせいでした。
(差分なので、元々ある場合は出力されない)

補足

上のリストにはもしかしたら TMP の仕業じゃないのもある"かも"しれません。
(TMP が入っていることで通常とは違う動作をする拡張があればあり得る)
ま、それがあったとしても誤差程度だとは思いますが。

Ank Pixiv Tool のバヤイ

以下のオブジェクトを突っ込む様になってます。

  1. AnkPixiv
  2. AnkPref
  3. AnkStorage
  4. AnkTable
  5. AnkUtils

これについては、Ank と prefix がついてるから良いかなーと思ってる。
ANekoS.Pixiv オブジェクトとかにまとめるのがベターかな。
一番良いのは、UUID だろうけどさすがにそれは嫌だ。