auto_response 0.1.6 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (334) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +4 -3
  3. data/Gemfile.lock +9 -12
  4. data/bin/ar +14 -3
  5. data/lib/ar/har.rb +133 -0
  6. data/lib/ar/proxy_server.rb +171 -0
  7. data/lib/ar/rule_dsl.rb +4 -0
  8. data/lib/ar/rule_manager.rb +2 -1
  9. data/lib/ar/session_viewer.rb +18 -13
  10. data/lib/ar/version.rb +3 -0
  11. data/lib/ar/viewer/Images/applicationCache.png +0 -0
  12. data/lib/ar/viewer/Images/back.png +0 -0
  13. data/lib/ar/viewer/Images/checker.png +0 -0
  14. data/lib/ar/viewer/Images/closeButtons.png +0 -0
  15. data/lib/ar/viewer/Images/cookie.png +0 -0
  16. data/lib/ar/viewer/Images/database.png +0 -0
  17. data/lib/ar/viewer/Images/databaseTable.png +0 -0
  18. data/lib/ar/viewer/Images/deleteIcon.png +0 -0
  19. data/lib/ar/viewer/Images/disclosureTriangleSmallDown.png +0 -0
  20. data/lib/ar/viewer/Images/disclosureTriangleSmallDownBlack.png +0 -0
  21. data/lib/ar/viewer/Images/disclosureTriangleSmallDownWhite.png +0 -0
  22. data/lib/ar/viewer/Images/disclosureTriangleSmallRight.png +0 -0
  23. data/lib/ar/viewer/Images/disclosureTriangleSmallRightBlack.png +0 -0
  24. data/lib/ar/viewer/Images/disclosureTriangleSmallRightDown.png +0 -0
  25. data/lib/ar/viewer/Images/disclosureTriangleSmallRightDownBlack.png +0 -0
  26. data/lib/ar/viewer/Images/disclosureTriangleSmallRightDownWhite.png +0 -0
  27. data/lib/ar/viewer/Images/disclosureTriangleSmallRightWhite.png +0 -0
  28. data/lib/ar/viewer/Images/domain.png +0 -0
  29. data/lib/ar/viewer/Images/errorIcon.png +0 -0
  30. data/lib/ar/viewer/Images/errorMediumIcon.png +0 -0
  31. data/lib/ar/viewer/Images/errorRedDot.png +0 -0
  32. data/lib/ar/viewer/Images/fileSystem.png +0 -0
  33. data/lib/ar/viewer/Images/forward.png +0 -0
  34. data/lib/ar/viewer/Images/frame.png +0 -0
  35. data/lib/ar/viewer/Images/glossyHeader.png +0 -0
  36. data/lib/ar/viewer/Images/glossyHeaderPressed.png +0 -0
  37. data/lib/ar/viewer/Images/glossyHeaderSelected.png +0 -0
  38. data/lib/ar/viewer/Images/glossyHeaderSelectedPressed.png +0 -0
  39. data/lib/ar/viewer/Images/goArrow.png +0 -0
  40. data/lib/ar/viewer/Images/graphLabelCalloutLeft.png +0 -0
  41. data/lib/ar/viewer/Images/graphLabelCalloutRight.png +0 -0
  42. data/lib/ar/viewer/Images/indexedDB.png +0 -0
  43. data/lib/ar/viewer/Images/indexedDBIndex.png +0 -0
  44. data/lib/ar/viewer/Images/indexedDBObjectStore.png +0 -0
  45. data/lib/ar/viewer/Images/localStorage.png +0 -0
  46. data/lib/ar/viewer/Images/navigatorShowHideButton.png +0 -0
  47. data/lib/ar/viewer/Images/paneAddButtons.png +0 -0
  48. data/lib/ar/viewer/Images/paneBottomGrow.png +0 -0
  49. data/lib/ar/viewer/Images/paneBottomGrowActive.png +0 -0
  50. data/lib/ar/viewer/Images/paneElementStateButtons.png +0 -0
  51. data/lib/ar/viewer/Images/paneFilterButtons.png +0 -0
  52. data/lib/ar/viewer/Images/paneGrowHandleLine.png +0 -0
  53. data/lib/ar/viewer/Images/paneRefreshButtons.png +0 -0
  54. data/lib/ar/viewer/Images/paneSettingsButtons.png +0 -0
  55. data/lib/ar/viewer/Images/popoverArrows.png +0 -0
  56. data/lib/ar/viewer/Images/popoverBackground.png +0 -0
  57. data/lib/ar/viewer/Images/profileGroupIcon.png +0 -0
  58. data/lib/ar/viewer/Images/profileIcon.png +0 -0
  59. data/lib/ar/viewer/Images/profileSmallIcon.png +0 -0
  60. data/lib/ar/viewer/Images/profilesSilhouette.png +0 -0
  61. data/lib/ar/viewer/Images/programCounterBorder.png +0 -0
  62. data/lib/ar/viewer/Images/radioDot.png +0 -0
  63. data/lib/ar/viewer/Images/resourceCSSIcon.png +0 -0
  64. data/lib/ar/viewer/Images/resourceDocumentIcon.png +0 -0
  65. data/lib/ar/viewer/Images/resourceDocumentIconSmall.png +0 -0
  66. data/lib/ar/viewer/Images/resourceJSIcon.png +0 -0
  67. data/lib/ar/viewer/Images/resourcePlainIcon.png +0 -0
  68. data/lib/ar/viewer/Images/resourcePlainIconSmall.png +0 -0
  69. data/lib/ar/viewer/Images/resourcesSizeGraphIcon.png +0 -0
  70. data/lib/ar/viewer/Images/resourcesTimeGraphIcon.png +0 -0
  71. data/lib/ar/viewer/Images/scriptsSilhouette.png +0 -0
  72. data/lib/ar/viewer/Images/searchNext.png +0 -0
  73. data/lib/ar/viewer/Images/searchPrev.png +0 -0
  74. data/lib/ar/viewer/Images/searchSmallBlue.png +0 -0
  75. data/lib/ar/viewer/Images/searchSmallBrightBlue.png +0 -0
  76. data/lib/ar/viewer/Images/searchSmallGray.png +0 -0
  77. data/lib/ar/viewer/Images/searchSmallWhite.png +0 -0
  78. data/lib/ar/viewer/Images/segment.png +0 -0
  79. data/lib/ar/viewer/Images/segmentChromium.png +0 -0
  80. data/lib/ar/viewer/Images/segmentEnd.png +0 -0
  81. data/lib/ar/viewer/Images/segmentHover.png +0 -0
  82. data/lib/ar/viewer/Images/segmentHoverChromium.png +0 -0
  83. data/lib/ar/viewer/Images/segmentHoverEnd.png +0 -0
  84. data/lib/ar/viewer/Images/segmentHoverEndChromium.png +0 -0
  85. data/lib/ar/viewer/Images/segmentSelected.png +0 -0
  86. data/lib/ar/viewer/Images/segmentSelectedChromium.png +0 -0
  87. data/lib/ar/viewer/Images/segmentSelectedEnd.png +0 -0
  88. data/lib/ar/viewer/Images/segmentSelectedEndChromium.png +0 -0
  89. data/lib/ar/viewer/Images/sessionStorage.png +0 -0
  90. data/lib/ar/viewer/Images/spinner.gif +0 -0
  91. data/lib/ar/viewer/Images/spinnerActive.gif +0 -0
  92. data/lib/ar/viewer/Images/spinnerActiveSelected.gif +0 -0
  93. data/lib/ar/viewer/Images/spinnerInactive.gif +0 -0
  94. data/lib/ar/viewer/Images/spinnerInactiveSelected.gif +0 -0
  95. data/lib/ar/viewer/Images/splitviewDimple.png +0 -0
  96. data/lib/ar/viewer/Images/splitviewDividerBackground.png +0 -0
  97. data/lib/ar/viewer/Images/statusbarButtonGlyphs.png +0 -0
  98. data/lib/ar/viewer/Images/statusbarResizerHorizontal.png +0 -0
  99. data/lib/ar/viewer/Images/statusbarResizerVertical.png +0 -0
  100. data/lib/ar/viewer/Images/successGreenDot.png +0 -0
  101. data/lib/ar/viewer/Images/thumbActiveHoriz.png +0 -0
  102. data/lib/ar/viewer/Images/thumbActiveVert.png +0 -0
  103. data/lib/ar/viewer/Images/thumbHoriz.png +0 -0
  104. data/lib/ar/viewer/Images/thumbHoverHoriz.png +0 -0
  105. data/lib/ar/viewer/Images/thumbHoverVert.png +0 -0
  106. data/lib/ar/viewer/Images/thumbVert.png +0 -0
  107. data/lib/ar/viewer/Images/tickMark.png +0 -0
  108. data/lib/ar/viewer/Images/timelineHollowPillBlue.png +0 -0
  109. data/lib/ar/viewer/Images/timelineHollowPillGray.png +0 -0
  110. data/lib/ar/viewer/Images/timelineHollowPillGreen.png +0 -0
  111. data/lib/ar/viewer/Images/timelineHollowPillOrange.png +0 -0
  112. data/lib/ar/viewer/Images/timelineHollowPillPurple.png +0 -0
  113. data/lib/ar/viewer/Images/timelineHollowPillRed.png +0 -0
  114. data/lib/ar/viewer/Images/timelineHollowPillYellow.png +0 -0
  115. data/lib/ar/viewer/Images/timelinePillBlue.png +0 -0
  116. data/lib/ar/viewer/Images/timelinePillGray.png +0 -0
  117. data/lib/ar/viewer/Images/timelinePillGreen.png +0 -0
  118. data/lib/ar/viewer/Images/timelinePillOrange.png +0 -0
  119. data/lib/ar/viewer/Images/timelinePillPurple.png +0 -0
  120. data/lib/ar/viewer/Images/timelinePillRed.png +0 -0
  121. data/lib/ar/viewer/Images/timelinePillYellow.png +0 -0
  122. data/lib/ar/viewer/Images/toolbarIcons.png +0 -0
  123. data/lib/ar/viewer/Images/toolbarIconsSmall.png +0 -0
  124. data/lib/ar/viewer/Images/toolbarItemSelected.png +0 -0
  125. data/lib/ar/viewer/Images/trackHoriz.png +0 -0
  126. data/lib/ar/viewer/Images/trackVert.png +0 -0
  127. data/lib/ar/viewer/Images/treeDownTriangleBlack.png +0 -0
  128. data/lib/ar/viewer/Images/treeDownTriangleWhite.png +0 -0
  129. data/lib/ar/viewer/Images/treeRightTriangleBlack.png +0 -0
  130. data/lib/ar/viewer/Images/treeRightTriangleWhite.png +0 -0
  131. data/lib/ar/viewer/Images/treeUpTriangleBlack.png +0 -0
  132. data/lib/ar/viewer/Images/treeUpTriangleWhite.png +0 -0
  133. data/lib/ar/viewer/Images/userInputIcon.png +0 -0
  134. data/lib/ar/viewer/Images/userInputPreviousIcon.png +0 -0
  135. data/lib/ar/viewer/Images/userInputResultIcon.png +0 -0
  136. data/lib/ar/viewer/Images/warningIcon.png +0 -0
  137. data/lib/ar/viewer/Images/warningMediumIcon.png +0 -0
  138. data/lib/ar/viewer/Images/warningOrangeDot.png +0 -0
  139. data/lib/ar/viewer/Images/warningsErrors.png +0 -0
  140. data/lib/ar/viewer/chrome/Images/applicationCache.png +0 -0
  141. data/lib/ar/viewer/chrome/Images/back.png +0 -0
  142. data/lib/ar/viewer/chrome/Images/breakpointBorder.png +0 -0
  143. data/lib/ar/viewer/chrome/Images/breakpointConditionalBorder.png +0 -0
  144. data/lib/ar/viewer/chrome/Images/breakpointConditionalCounterBorder.png +0 -0
  145. data/lib/ar/viewer/chrome/Images/breakpointCounterBorder.png +0 -0
  146. data/lib/ar/viewer/chrome/Images/checker.png +0 -0
  147. data/lib/ar/viewer/chrome/Images/closeButtons.png +0 -0
  148. data/lib/ar/viewer/chrome/Images/cookie.png +0 -0
  149. data/lib/ar/viewer/chrome/Images/database.png +0 -0
  150. data/lib/ar/viewer/chrome/Images/databaseTable.png +0 -0
  151. data/lib/ar/viewer/chrome/Images/debuggerContinue.png +0 -0
  152. data/lib/ar/viewer/chrome/Images/debuggerPause.png +0 -0
  153. data/lib/ar/viewer/chrome/Images/debuggerStepInto.png +0 -0
  154. data/lib/ar/viewer/chrome/Images/debuggerStepOut.png +0 -0
  155. data/lib/ar/viewer/chrome/Images/debuggerStepOver.png +0 -0
  156. data/lib/ar/viewer/chrome/Images/deleteIcon.png +0 -0
  157. data/lib/ar/viewer/chrome/Images/disclosureTriangleSmallDown.png +0 -0
  158. data/lib/ar/viewer/chrome/Images/disclosureTriangleSmallDownBlack.png +0 -0
  159. data/lib/ar/viewer/chrome/Images/disclosureTriangleSmallDownWhite.png +0 -0
  160. data/lib/ar/viewer/chrome/Images/disclosureTriangleSmallRight.png +0 -0
  161. data/lib/ar/viewer/chrome/Images/disclosureTriangleSmallRightBlack.png +0 -0
  162. data/lib/ar/viewer/chrome/Images/disclosureTriangleSmallRightDown.png +0 -0
  163. data/lib/ar/viewer/chrome/Images/disclosureTriangleSmallRightDownBlack.png +0 -0
  164. data/lib/ar/viewer/chrome/Images/disclosureTriangleSmallRightDownWhite.png +0 -0
  165. data/lib/ar/viewer/chrome/Images/disclosureTriangleSmallRightWhite.png +0 -0
  166. data/lib/ar/viewer/chrome/Images/domain.png +0 -0
  167. data/lib/ar/viewer/chrome/Images/errorIcon.png +0 -0
  168. data/lib/ar/viewer/chrome/Images/errorMediumIcon.png +0 -0
  169. data/lib/ar/viewer/chrome/Images/errorRedDot.png +0 -0
  170. data/lib/ar/viewer/chrome/Images/fileSystem.png +0 -0
  171. data/lib/ar/viewer/chrome/Images/forward.png +0 -0
  172. data/lib/ar/viewer/chrome/Images/frame.png +0 -0
  173. data/lib/ar/viewer/chrome/Images/glossyHeader.png +0 -0
  174. data/lib/ar/viewer/chrome/Images/glossyHeaderPressed.png +0 -0
  175. data/lib/ar/viewer/chrome/Images/glossyHeaderSelected.png +0 -0
  176. data/lib/ar/viewer/chrome/Images/glossyHeaderSelectedPressed.png +0 -0
  177. data/lib/ar/viewer/chrome/Images/goArrow.png +0 -0
  178. data/lib/ar/viewer/chrome/Images/graphLabelCalloutLeft.png +0 -0
  179. data/lib/ar/viewer/chrome/Images/graphLabelCalloutRight.png +0 -0
  180. data/lib/ar/viewer/chrome/Images/indexedDB.png +0 -0
  181. data/lib/ar/viewer/chrome/Images/indexedDBIndex.png +0 -0
  182. data/lib/ar/viewer/chrome/Images/indexedDBObjectStore.png +0 -0
  183. data/lib/ar/viewer/chrome/Images/localStorage.png +0 -0
  184. data/lib/ar/viewer/chrome/Images/navigatorShowHideButton.png +0 -0
  185. data/lib/ar/viewer/chrome/Images/paneAddButtons.png +0 -0
  186. data/lib/ar/viewer/chrome/Images/paneBottomGrow.png +0 -0
  187. data/lib/ar/viewer/chrome/Images/paneBottomGrowActive.png +0 -0
  188. data/lib/ar/viewer/chrome/Images/paneElementStateButtons.png +0 -0
  189. data/lib/ar/viewer/chrome/Images/paneFilterButtons.png +0 -0
  190. data/lib/ar/viewer/chrome/Images/paneGrowHandleLine.png +0 -0
  191. data/lib/ar/viewer/chrome/Images/paneRefreshButtons.png +0 -0
  192. data/lib/ar/viewer/chrome/Images/paneSettingsButtons.png +0 -0
  193. data/lib/ar/viewer/chrome/Images/popoverArrows.png +0 -0
  194. data/lib/ar/viewer/chrome/Images/popoverBackground.png +0 -0
  195. data/lib/ar/viewer/chrome/Images/profileGroupIcon.png +0 -0
  196. data/lib/ar/viewer/chrome/Images/profileIcon.png +0 -0
  197. data/lib/ar/viewer/chrome/Images/profileSmallIcon.png +0 -0
  198. data/lib/ar/viewer/chrome/Images/profilesSilhouette.png +0 -0
  199. data/lib/ar/viewer/chrome/Images/programCounterBorder.png +0 -0
  200. data/lib/ar/viewer/chrome/Images/radioDot.png +0 -0
  201. data/lib/ar/viewer/chrome/Images/resourceCSSIcon.png +0 -0
  202. data/lib/ar/viewer/chrome/Images/resourceDocumentIcon.png +0 -0
  203. data/lib/ar/viewer/chrome/Images/resourceDocumentIconSmall.png +0 -0
  204. data/lib/ar/viewer/chrome/Images/resourceJSIcon.png +0 -0
  205. data/lib/ar/viewer/chrome/Images/resourcePlainIcon.png +0 -0
  206. data/lib/ar/viewer/chrome/Images/resourcePlainIconSmall.png +0 -0
  207. data/lib/ar/viewer/chrome/Images/resourcesSizeGraphIcon.png +0 -0
  208. data/lib/ar/viewer/chrome/Images/resourcesTimeGraphIcon.png +0 -0
  209. data/lib/ar/viewer/chrome/Images/scriptsSilhouette.png +0 -0
  210. data/lib/ar/viewer/chrome/Images/searchNext.png +0 -0
  211. data/lib/ar/viewer/chrome/Images/searchPrev.png +0 -0
  212. data/lib/ar/viewer/chrome/Images/searchSmallBlue.png +0 -0
  213. data/lib/ar/viewer/chrome/Images/searchSmallBrightBlue.png +0 -0
  214. data/lib/ar/viewer/chrome/Images/searchSmallGray.png +0 -0
  215. data/lib/ar/viewer/chrome/Images/searchSmallWhite.png +0 -0
  216. data/lib/ar/viewer/chrome/Images/segment.png +0 -0
  217. data/lib/ar/viewer/chrome/Images/segmentChromium.png +0 -0
  218. data/lib/ar/viewer/chrome/Images/segmentEnd.png +0 -0
  219. data/lib/ar/viewer/chrome/Images/segmentHover.png +0 -0
  220. data/lib/ar/viewer/chrome/Images/segmentHoverChromium.png +0 -0
  221. data/lib/ar/viewer/chrome/Images/segmentHoverEnd.png +0 -0
  222. data/lib/ar/viewer/chrome/Images/segmentHoverEndChromium.png +0 -0
  223. data/lib/ar/viewer/chrome/Images/segmentSelected.png +0 -0
  224. data/lib/ar/viewer/chrome/Images/segmentSelectedChromium.png +0 -0
  225. data/lib/ar/viewer/chrome/Images/segmentSelectedEnd.png +0 -0
  226. data/lib/ar/viewer/chrome/Images/segmentSelectedEndChromium.png +0 -0
  227. data/lib/ar/viewer/chrome/Images/sessionStorage.png +0 -0
  228. data/lib/ar/viewer/chrome/Images/spinner.gif +0 -0
  229. data/lib/ar/viewer/chrome/Images/spinnerActive.gif +0 -0
  230. data/lib/ar/viewer/chrome/Images/spinnerActiveSelected.gif +0 -0
  231. data/lib/ar/viewer/chrome/Images/spinnerInactive.gif +0 -0
  232. data/lib/ar/viewer/chrome/Images/spinnerInactiveSelected.gif +0 -0
  233. data/lib/ar/viewer/chrome/Images/splitviewDimple.png +0 -0
  234. data/lib/ar/viewer/chrome/Images/splitviewDividerBackground.png +0 -0
  235. data/lib/ar/viewer/chrome/Images/statusbarButtonGlyphs.png +0 -0
  236. data/lib/ar/viewer/chrome/Images/statusbarResizerHorizontal.png +0 -0
  237. data/lib/ar/viewer/chrome/Images/statusbarResizerVertical.png +0 -0
  238. data/lib/ar/viewer/chrome/Images/successGreenDot.png +0 -0
  239. data/lib/ar/viewer/chrome/Images/thumbActiveHoriz.png +0 -0
  240. data/lib/ar/viewer/chrome/Images/thumbActiveVert.png +0 -0
  241. data/lib/ar/viewer/chrome/Images/thumbHoriz.png +0 -0
  242. data/lib/ar/viewer/chrome/Images/thumbHoverHoriz.png +0 -0
  243. data/lib/ar/viewer/chrome/Images/thumbHoverVert.png +0 -0
  244. data/lib/ar/viewer/chrome/Images/thumbVert.png +0 -0
  245. data/lib/ar/viewer/chrome/Images/tickMark.png +0 -0
  246. data/lib/ar/viewer/chrome/Images/timelineHollowPillBlue.png +0 -0
  247. data/lib/ar/viewer/chrome/Images/timelineHollowPillGray.png +0 -0
  248. data/lib/ar/viewer/chrome/Images/timelineHollowPillGreen.png +0 -0
  249. data/lib/ar/viewer/chrome/Images/timelineHollowPillOrange.png +0 -0
  250. data/lib/ar/viewer/chrome/Images/timelineHollowPillPurple.png +0 -0
  251. data/lib/ar/viewer/chrome/Images/timelineHollowPillRed.png +0 -0
  252. data/lib/ar/viewer/chrome/Images/timelineHollowPillYellow.png +0 -0
  253. data/lib/ar/viewer/chrome/Images/timelinePillBlue.png +0 -0
  254. data/lib/ar/viewer/chrome/Images/timelinePillGray.png +0 -0
  255. data/lib/ar/viewer/chrome/Images/timelinePillGreen.png +0 -0
  256. data/lib/ar/viewer/chrome/Images/timelinePillOrange.png +0 -0
  257. data/lib/ar/viewer/chrome/Images/timelinePillPurple.png +0 -0
  258. data/lib/ar/viewer/chrome/Images/timelinePillRed.png +0 -0
  259. data/lib/ar/viewer/chrome/Images/timelinePillYellow.png +0 -0
  260. data/lib/ar/viewer/chrome/Images/toolbarIcons.png +0 -0
  261. data/lib/ar/viewer/chrome/Images/toolbarIconsSmall.png +0 -0
  262. data/lib/ar/viewer/chrome/Images/toolbarItemSelected.png +0 -0
  263. data/lib/ar/viewer/chrome/Images/trackHoriz.png +0 -0
  264. data/lib/ar/viewer/chrome/Images/trackVert.png +0 -0
  265. data/lib/ar/viewer/chrome/Images/treeDownTriangleBlack.png +0 -0
  266. data/lib/ar/viewer/chrome/Images/treeDownTriangleWhite.png +0 -0
  267. data/lib/ar/viewer/chrome/Images/treeRightTriangleBlack.png +0 -0
  268. data/lib/ar/viewer/chrome/Images/treeRightTriangleWhite.png +0 -0
  269. data/lib/ar/viewer/chrome/Images/treeUpTriangleBlack.png +0 -0
  270. data/lib/ar/viewer/chrome/Images/treeUpTriangleWhite.png +0 -0
  271. data/lib/ar/viewer/chrome/Images/userInputIcon.png +0 -0
  272. data/lib/ar/viewer/chrome/Images/userInputPreviousIcon.png +0 -0
  273. data/lib/ar/viewer/chrome/Images/userInputResultIcon.png +0 -0
  274. data/lib/ar/viewer/chrome/Images/warningIcon.png +0 -0
  275. data/lib/ar/viewer/chrome/Images/warningMediumIcon.png +0 -0
  276. data/lib/ar/viewer/chrome/Images/warningOrangeDot.png +0 -0
  277. data/lib/ar/viewer/chrome/Images/warningsErrors.png +0 -0
  278. data/lib/ar/viewer/chrome/dataGrid.css +218 -0
  279. data/lib/ar/viewer/chrome/devTools.css +97 -0
  280. data/lib/ar/viewer/chrome/dialog.css +55 -0
  281. data/lib/ar/viewer/chrome/elementsPanel.css +692 -0
  282. data/lib/ar/viewer/chrome/filteredItemSelectionDialog.css +41 -0
  283. data/lib/ar/viewer/chrome/heapProfiler.css +263 -0
  284. data/lib/ar/viewer/chrome/helpScreen.css +286 -0
  285. data/lib/ar/viewer/chrome/indexedDBViews.css +124 -0
  286. data/lib/ar/viewer/chrome/inspector.css +2878 -0
  287. data/lib/ar/viewer/chrome/inspectorCommon.css +177 -0
  288. data/lib/ar/viewer/chrome/inspectorSyntaxHighlight.css +111 -0
  289. data/lib/ar/viewer/chrome/nativeMemoryProfiler.css +86 -0
  290. data/lib/ar/viewer/chrome/navigatorView.css +142 -0
  291. data/lib/ar/viewer/chrome/networkLogView.css +559 -0
  292. data/lib/ar/viewer/chrome/networkPanel.css +340 -0
  293. data/lib/ar/viewer/chrome/panelEnablerView.css +168 -0
  294. data/lib/ar/viewer/chrome/popover.css +94 -0
  295. data/lib/ar/viewer/chrome/profilesPanel.css +201 -0
  296. data/lib/ar/viewer/chrome/resourceView.css +105 -0
  297. data/lib/ar/viewer/chrome/resourcesPanel.css +331 -0
  298. data/lib/ar/viewer/chrome/revisionHistory.css +90 -0
  299. data/lib/ar/viewer/chrome/scriptsPanel.css +286 -0
  300. data/lib/ar/viewer/chrome/splitView.css +91 -0
  301. data/lib/ar/viewer/chrome/tabbedPane.css +165 -0
  302. data/lib/ar/viewer/chrome/textEditor.css +181 -0
  303. data/lib/ar/viewer/chrome/textPrompt.css +69 -0
  304. data/lib/ar/viewer/chrome/timelinePanel.css +656 -0
  305. data/lib/ar/viewer/components/angular/angular.js +14760 -0
  306. data/lib/ar/viewer/components/angular/angular.min.js +162 -0
  307. data/lib/ar/viewer/components/angular/component.json +14 -0
  308. data/lib/ar/viewer/components/jquery/README.md +11 -0
  309. data/lib/ar/viewer/components/jquery/bower.json +14 -0
  310. data/lib/ar/viewer/components/jquery/component.json +22 -0
  311. data/lib/ar/viewer/components/jquery/composer.json +35 -0
  312. data/lib/ar/viewer/components/jquery/jquery-migrate.js +511 -0
  313. data/lib/ar/viewer/components/jquery/jquery-migrate.min.js +3 -0
  314. data/lib/ar/viewer/components/jquery/jquery.js +8755 -0
  315. data/lib/ar/viewer/components/jquery/jquery.min.js +6 -0
  316. data/lib/ar/viewer/components/jquery/package.json +7 -0
  317. data/lib/ar/viewer/css/style.css +186 -0
  318. data/lib/ar/viewer/index.html +422 -0
  319. data/lib/ar/viewer/js/controllers.js +124 -0
  320. data/lib/ar/viewer/js/libs/HAREntry.js +154 -0
  321. data/lib/ar/viewer/js/libs/devTools.js +371 -0
  322. data/lib/ar/viewer/js/libs/modernizr.custom.min.js +4 -0
  323. data/lib/ar/viewer/js/script.js +36 -0
  324. data/lib/ar/viewer/sample.har +6723 -0
  325. data/lib/ar/viewer/sass/style.scss +149 -0
  326. data/lib/{autoresponse.rb → auto_response.rb} +30 -31
  327. data/readme.md +4 -0
  328. data/rules.sample +9 -0
  329. data/test/helper.rb +1 -1
  330. metadata +365 -9
  331. data/bin/start_ar.rb +0 -5
  332. data/bin/start_ar.rb.pid +0 -1
  333. data/lib/ar/proxyserver.rb +0 -106
  334. data/lib/ar/viewer/tmpl/index.haml +0 -55
@@ -0,0 +1,422 @@
1
+ <!doctype html>
2
+ <html lang="en" ng-app="net">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
6
+ <title>AutoResponse session viewer</title>
7
+ <meta name="description" content="http debug tool">
8
+
9
+ <!-- Required Chrome Dev Tools CSS -->
10
+ <link rel="stylesheet" type="text/css" href="chrome/dialog.css">
11
+ <link rel="stylesheet" type="text/css" href="chrome/inspector.css">
12
+ <link rel="stylesheet" type="text/css" href="chrome/inspectorCommon.css">
13
+ <link rel="stylesheet" type="text/css" href="chrome/inspectorSyntaxHighlight.css">
14
+ <link rel="stylesheet" type="text/css" href="chrome/popover.css">
15
+ <link rel="stylesheet" type="text/css" href="chrome/dataGrid.css">
16
+ <link rel="stylesheet" type="text/css" href="chrome/tabbedPane.css">
17
+ <link rel="stylesheet" type="text/css" href="chrome/splitView.css">
18
+ <link rel="stylesheet" type="text/css" href="chrome/networkLogView.css">
19
+ <link rel="stylesheet" type="text/css" href="chrome/networkPanel.css">
20
+ <link rel="stylesheet" type="text/css" href="chrome/networkLogView.css">
21
+
22
+ <link rel="stylesheet" type="text/css" href="css/style.css">
23
+ <script src="js/libs/modernizr.custom.min.js"></script>
24
+ </head>
25
+ <body class="detached" ng-controller="NetworkCtrl">
26
+
27
+ <div id="toolbar">
28
+ <div class="toolbar-controls">
29
+ <div class="toolbar-item" id="toolbar-sample-item">
30
+ <a href="#" class="sample">refresh</a>
31
+ </div>
32
+ <div class="toolbar-item" id="toolbar-search-item">
33
+ <input id="search" type="search" incremental="" results="0" placeholder="Search Network" ng-model="query">
34
+ </div>
35
+ </div>
36
+ <button class="toolbar-item toggleable network toggled-on">
37
+ <div class="toolbar-icon"></div>
38
+ <div class="toolbar-label">Network</div>
39
+ </button>
40
+ </div>
41
+ <div id="main">
42
+ <div id="main-status-bar" class="status-bar">
43
+ <div id="anchored-status-bar-items">
44
+ <button class="settings-status-bar-item status-bar-item" title="Settings">
45
+ <div class="glyph"></div><div class="glyph shadow"></div>
46
+ </button>
47
+ </div>
48
+ <div>
49
+ <button ng-click="class='small'" class="network-larger-resources-status-bar-item status-bar-item toggled-on" title="Use small resource rows.">
50
+ <div class="glyph"></div><div class="glyph shadow"></div>
51
+ </button>
52
+ <div class="scope-bar status-bar-item" id="network-filter">
53
+ <li ng-class="getClass('all')" class="all" ng-click="type.mimeType='';sI='all'">All</li>
54
+ <div class="scope-bar-divider"></div>
55
+ <li ng-class="getClass('doc')" class="document" ng-click="type.mimeType='text/html';sI='doc'">Documents</li>
56
+ <li ng-class="getClass('css')" class="stylesheet" ng-click="type.mimeType='text/css';sI='css'">Stylesheets</li>
57
+ <li ng-class="getClass('img')" class="image" ng-click="type.mimeType='image/';sI='img'">Images</li>
58
+ <li ng-class="getClass('js')" class="script" ng-click="type.mimeType='text/javascript';sI='js'">Scripts</li>
59
+ <li ng-class="getClass('xhr')" class="xhr" ng-click="type.mimeType='application/x-javascript';sI='xhr'">XHR</li>
60
+ <li ng-class="getClass('fnt')" class="font" ng-click="type.mimeType='application/octet-stream';sI='fnt'">Fonts</li>
61
+ <li ng-class="getClass('sck')" class="websocket" ng-click="sI='sck'">WebSockets</li>
62
+ <li ng-class="getClass('oth')" class="other" ng-click="sI='oth'">Other</li>
63
+ </div>
64
+ </div>
65
+ </div>
66
+ <div id="main-panels" class="visible">
67
+ <div class="panel network visible">
68
+ <div class="split-view visible">
69
+ <div class="split-view-contents split-view-sidebar-left maximized">
70
+ <div id="network-container" class="visible">
71
+ <div class="data-grid network-log-grid visible filter-all" tabindex="0">
72
+ <table class="header">
73
+ <colgroup span="7">
74
+ <col class="first">
75
+ <col class="sec">
76
+ <col class="third">
77
+ <col class="fourth">
78
+ <col class="five">
79
+ <col class="six">
80
+ <col class="sev">
81
+ </colgroup>
82
+ <tbody>
83
+ <tr>
84
+ <th class="name-column sortable" ng-click="setSort('nameSort');">
85
+ <div>Name<div class="network-header-subtitle">Path</div></div>
86
+ </th>
87
+ <th class="method-column sortable" ng-click="setSort('method');">
88
+ <div>Method</div>
89
+ </th>
90
+ <th class="status-column sortable" ng-click="setSort('status');">
91
+ <div>Status<div class="network-header-subtitle">Text</div></div>
92
+ </th>
93
+ <th class="type-column sortable" ng-click="setSort('mimeType');">
94
+ <div>Type</div>
95
+ </th>
96
+ <th class="size-column sortable" ng-click="setSort('size');">
97
+ <div>Size<div class="network-header-subtitle">Content</div></div>
98
+ </th>
99
+ <th class="time-column sortable" ng-click="setSort('timeSort')">
100
+ <div>Time<div class="network-header-subtitle">Latency</div></div>
101
+ </th>
102
+ <th class="timeline-column sort-ascending">
103
+ <select>
104
+ <option value="startTime" label="Timeline"></option>
105
+ <option value="startTime" label="Start Time"></option>
106
+ <option value="responseTime" label="Response Time"></option>
107
+ <option value="endTime" label="End Time"></option>
108
+ <option value="duration" label="Duration"></option>
109
+ <option value="latency" label="Latency"></option>
110
+ </select>
111
+ </th>
112
+ <th class="corner"></th>
113
+ </tr>
114
+ </tbody>
115
+ </table>
116
+
117
+ <div class="data-container">
118
+ <div class="page-wrapper">
119
+ <table class="data">
120
+ <colgroup span="7">
121
+ <col class="first">
122
+ <col class="sec">
123
+ <col class="third">
124
+ <col class="fourth">
125
+ <col class="five">
126
+ <col class="six">
127
+ <col class="sev">
128
+ </colgroup>
129
+ <thead ng-show="checked">
130
+ <tr class="revealed page-summary-bar">
131
+ <td colspan="7"></td>
132
+ </tr>
133
+ </thead>
134
+ <tfoot ng-show="checked">
135
+ <tr class="revealed network-summary-bar">
136
+ <!-- FixMe: This always assume ms -->
137
+ <td colspan="7"></td>
138
+ </tr>
139
+ </tfoot>
140
+ <tbody>
141
+
142
+ <tr ng-class="getSelectedRow($index)"
143
+ class="revealed auto-response-{{entry.autoResponded}} network-item network-type-{{entry.name}}"
144
+ data-id="{{entry.id}}"
145
+ ng-repeat="entry in entries | filter:query | filter:type | orderBy:predicate:reverse">
146
+
147
+ <td class="name-column" ng-click="showDetails($index)"><div title="{{entry.url}}"><img class="icon">{{entry.parsedURL.lastPathComponent}}<div class="network-cell-subtitle">{{entry.folder}}</div></div></td>
148
+ <td class="method-column"><div title="{{entry.method}}">{{entry.method}}</div></td>
149
+ <td class="status-column"><div title="{{entry.status}} {{entry.statusText}}">{{entry.status}}<div class="network-cell-subtitle">{{entry.statusText}}</div></div></td>
150
+ <td class="type-column"><div title="{{entry.mimeType}}">{{entry.mimeType}}</div></td>
151
+ <td class="size-column"><div title="{{entry.size}}">{{entry.size}}<div class="network-cell-subtitle">{{entry.contentSize}}</div></div></td>
152
+ <td class="time-column"><div title="{{entry.time}}">{{entry.time}}<div class="network-cell-subtitle">{{entry.latency}}</div></div></td>
153
+ <td class="timeline-column">
154
+ <div class="network-graph-side network-type-{{entry.name}}">
155
+ <div class="network-graph-bar-area">
156
+ <div class="network-graph-bar waiting" style="left: {{entry.graphs.latency_left}}%; right: {{entry.graphs.latency_right}}%;" title=""></div>
157
+ <div class="network-graph-bar" style="left: {{entry.graphs.receiving_left}}%; right: {{entry.graphs.receiving_right}}%;" title=""></div>
158
+ <div class="network-graph-label waiting" title="">{{entry.latency}}</div>
159
+ <div class="network-graph-label after" title="">{{entry.receiveTime}}</div>
160
+ </div>
161
+ </div>
162
+ </td>
163
+ </tr>
164
+ </tbody>
165
+ </table>
166
+ <div class="network-timeline-grid" ng-show="checked">
167
+ <div id="resources-graphs"></div>
168
+ <div class="resources-dividers">
169
+ <div class="resources-divider first" style="left: 8.333333333333338%"></div>
170
+ <div class="resources-divider" style="left: 16.666666666666668%; "></div>
171
+ <div class="resources-divider" style="left: 25%; "></div>
172
+ <div class="resources-divider" style="left: 33.333333333333336%; "></div>
173
+ <div class="resources-divider" style="left: 41.66666666666667%; "></div>
174
+ <div class="resources-divider" style="left: 50%; "></div>
175
+ <div class="resources-divider" style="left: 58.333333333333336%; "></div>
176
+ <div class="resources-divider" style="left: 66.66666666666667%; "></div>
177
+ <div class="resources-divider" style="left: 75%; "></div>
178
+ <div class="resources-divider" style="left: 83.33333333333334%; "></div>
179
+ <div class="resources-divider" style="left: 91.66666666666667%; "></div>
180
+ <div class="resources-divider last" style="left: 100%; "></div>
181
+ </div>
182
+ <div class="resources-event-dividers">
183
+ <div class="network-event-divider-padding" title="Load event fired" style="left: {{page.load_event_left}}%; ">
184
+ <div class="network-event-divider network-red-divider"></div>
185
+ </div>
186
+ <div class="network-event-divider-padding" title="DOMContent event fired" style="left: {{page.content_load_left}}%; ">
187
+ <div class="network-event-divider network-blue-divider"></div>
188
+ </div>
189
+ </div>
190
+ <div class="resources-dividers-label-bar">
191
+ <div class="resources-divider first" style="left: 8.333333333333338%; ">
192
+ <div class="resources-divider-label">{{labels.1}}</div>
193
+ </div>
194
+ <div class="resources-divider" style="left: 16.666666666666668%; ">
195
+ <div class="resources-divider-label">{{labels.2}}</div>
196
+ </div>
197
+ <div class="resources-divider" style="left: 25%; ">
198
+ <div class="resources-divider-label">{{labels.3}}</div>
199
+ </div>
200
+ <div class="resources-divider" style="left: 33.333333333333336%; ">
201
+ <div class="resources-divider-label">{{labels.4}}</div>
202
+ </div>
203
+ <div class="resources-divider" style="left: 41.66666666666667%; ">
204
+ <div class="resources-divider-label">{{labels.5}}</div>
205
+ </div>
206
+ <div class="resources-divider" style="left: 50%; ">
207
+ <div class="resources-divider-label">{{labels.6}}</div>
208
+ </div>
209
+ <div class="resources-divider" style="left: 58.333333333333336%; ">
210
+ <div class="resources-divider-label">{{labels.7}}</div>
211
+ </div>
212
+ <div class="resources-divider" style="left: 66.66666666666667%; ">
213
+ <div class="resources-divider-label">{{labels.8}}</div>
214
+ </div>
215
+ <div class="resources-divider" style="left: 75%; ">
216
+ <div class="resources-divider-label">{{labels.9}}</div>
217
+ </div>
218
+ <div class="resources-divider" style="left: 83.33333333333334%; ">
219
+ <div class="resources-divider-label">{{labels.10}}</div>
220
+ </div>
221
+ <div class="resources-divider" style="left: 91.66666666666667%; ">
222
+ <div class="resources-divider-label">{{labels.11}}</div>
223
+ </div>
224
+ <div class="resources-divider last" style="left: 100%; ">
225
+ <div class="resources-divider-label">{{labels.12}}</div>
226
+ </div>
227
+ </div>
228
+ </div>
229
+ </div>
230
+ </div>
231
+ </div>
232
+ </div>
233
+ </div>
234
+ <div class="split-view-contents split-view-network-views hidden" id="network-views">
235
+ <button id="network-close-button" ng-click="hideDetails()"></button>
236
+ <div class="tabbed-pane network-item-view visible">
237
+ <div class="tabbed-pane-header">
238
+ <div class="tabbed-pane-header-contents">
239
+ <div class="tabbed-pane-header-tabs">
240
+ <div ng-click="showTab(1)" ng-class="getTab(1)" class="tabbed-pane-header-tab selected"><span class="tabbed-pane-header-tab-title" title="">Headers</span></div>
241
+ <div ng-click="showTab(2)" ng-class="getTab(2)" class="tabbed-pane-header-tab"><span class="tabbed-pane-header-tab-title" title="">Cookies</span></div>
242
+ <div ng-click="showTab(3)" ng-class="getTab(3)" class="tabbed-pane-header-tab"><span class="tabbed-pane-header-tab-title" title="">Timing</span></div>
243
+ <div ng-click="showTab(4)" ng-class="getTab(4)" class="tabbed-pane-header-tab"><span class="tabbed-pane-header-tab-title" title="">Response</span></div>
244
+ </div>
245
+ </div>
246
+ </div>
247
+ <div class="tabbed-pane-content">
248
+ <div ng-class="getVisibleTab(1)" class="resource-headers-view">
249
+ <ol class="outline-disclosure" tabindex="0">
250
+ <li>
251
+ <div class="header-name">Request URL:</div>
252
+ <div class="header-value source-code">{{selectedEntry.url}}</div>
253
+ </li>
254
+ <li>
255
+ <div class="header-name">Request Method:</div>
256
+ <div class="header-value source-code">{{selectedEntry.method}}</div>
257
+ </li>
258
+ <li>
259
+ <div class="header-name">Status Code:</div>
260
+ <img class="resource-status-image" src="Images/successGreenDot.png" title="{{selectedEntry.status}} {{selectedEntry.statusText}}">
261
+ <div class="header-value source-code">{{selectedEntry.status}} {{selectedEntry.statusText}}</div>
262
+ </li>
263
+ <li ng-show="selectedEntry.reqHeadersCount" class="request parent expanded" ng-click="toggleReqHeaders()">Request Headers<span class="header-count"> ({{selectedEntry.reqHeadersCount}})</span></li>
264
+ <ol class="request children expanded">
265
+ <li ng-repeat="header in selectedEntry._entry.request.headers | orderBy:'name'">
266
+ <div class="header-name">{{header.name}}:</div>
267
+ <div class="header-value source-code">{{header.value}}</div>
268
+ </li>
269
+ </ol>
270
+ <li ng-show="selectedEntry.resHeadersCount" class="response parent expanded" ng-click="toggleResHeaders()">Response Headers<span class="header-count"> ({{selectedEntry.resHeadersCount}})</span></li>
271
+ <ol class="response children expanded">
272
+ <li ng-repeat="header in selectedEntry._entry.response.headers | orderBy:'name'">
273
+ <div class="header-name">{{header.name}}:</div>
274
+ <div class="header-value source-code">{{header.value}}</div>
275
+ </li>
276
+ </ol>
277
+ </ol>
278
+ </div>
279
+ <div ng-class="getVisibleTab(2)" class="resource-cookies-view">
280
+ <div class="fill visible">
281
+ <div class="data-grid visible" tabindex="0">
282
+ <table class="header">
283
+ <colgroup span="8">
284
+ <col style="width: 24.056189640035118%; ">
285
+ <col style="width: 34.06496927129061%; ">
286
+ <col style="width: 7.023705004389816%; ">
287
+ <col style="width: 7.023705004389816%; ">
288
+ <col style="width: 7.023705004389816%; ">
289
+ <col style="width: 6.935908691834943%; ">
290
+ <col style="width: 6.935908691834943%; ">
291
+ <col style="width: 6.935908691834943%; ">
292
+ </colgroup>
293
+ <tbody>
294
+ <tr>
295
+ <th class="0-column sortable"><div>Name</div></th>
296
+ <th class="1-column sortable"><div>Value</div></th>
297
+ <th class="2-column sortable"><div>Domain</div></th>
298
+ <th class="3-column sortable"><div>Path</div></th>
299
+ <th class="4-column sortable"><div>Expires</div></th>
300
+ <th class="5-column sortable"><div>Size</div></th>
301
+ <th class="6-column sortable"><div>HTTP</div></th>
302
+ <th class="7-column sortable"><div>Secure</div></th>
303
+ <th class="corner"></th>
304
+ </tr>
305
+ </tbody>
306
+ </table>
307
+ <div class="data-container">
308
+ <table class="data">
309
+ <colgroup span="8">
310
+ <col style="width: 24.056189640035118%; ">
311
+ <col style="width: 34.06496927129061%; ">
312
+ <col style="width: 7.023705004389816%; ">
313
+ <col style="width: 7.023705004389816%; ">
314
+ <col style="width: 7.023705004389816%; ">
315
+ <col style="width: 6.935908691834943%; ">
316
+ <col style="width: 6.935908691834943%; ">
317
+ <col style="width: 6.935908691834943%; ">
318
+ </colgroup>
319
+ <tbody>
320
+ <tr class="request revealed row-group parent expanded">
321
+ <td class="0-column disclosure"><div>Request Cookies</div></td>
322
+ <td class="1-column"><div></div></td>
323
+ <td class="2-column"><div></div></td>
324
+ <td class="3-column"><div></div></td>
325
+ <td class="4-column"><div></div></td>
326
+ <td class="5-column right"><div></div></td>
327
+ <td class="6-column centered"><div></div></td>
328
+ <td class="7-column centered"><div></div></td>
329
+ </tr>
330
+ <tr class="revealed" ng-repeat="cookie in selectedEntry._entry.request.cookies">
331
+ <td class="0-column disclosure" style="padding-left: 15px; "><div>{{cookie.name}}</div></td>
332
+ <td class="1-column"><div>{{cookie.value}}</div></td>
333
+ <td class="2-column"><div>{{cookie.domain}}</div></td>
334
+ <td class="3-column"><div>{{cookie.path}}</div></td>
335
+ <td class="4-column"><div></div></td>
336
+ <td class="5-column right"><div></div></td>
337
+ <td class="6-column centered"><div></div></td>
338
+ <td class="7-column centered"><div></div></td>
339
+ </tr>
340
+ <tr class="response revealed row-group parent expanded">
341
+ <td class="0-column disclosure"><div>Response Cookies</div></td>
342
+ <td class="1-column"><div></div></td>
343
+ <td class="2-column"><div></div></td>
344
+ <td class="3-column"><div></div></td>
345
+ <td class="4-column"><div></div></td>
346
+ <td class="5-column right"><div></div></td>
347
+ <td class="6-column centered"><div></div></td>
348
+ <td class="7-column centered"><div></div></td>
349
+ </tr>
350
+ <tr class="revealed" ng-repeat="cookie in selectedEntry._entry.response.cookies">
351
+ <td class="0-column disclosure" style="padding-left: 15px; "><div>{{cookie.name}}</div></td>
352
+ <td class="1-column"><div>{{cookie.value}}</div></td>
353
+ <td class="2-column"><div>{{cookie.domain}}</div></td>
354
+ <td class="3-column"><div>{{cookie.path}}</div></td>
355
+ <td class="4-column"><div></div></td>
356
+ <td class="5-column right"><div></div></td>
357
+ <td class="6-column centered"><div></div></td>
358
+ <td class="7-column centered"><div></div></td>
359
+ </tr>
360
+ <tr class="filler">
361
+ <td class="0-column"></td>
362
+ <td class="1-column"></td>
363
+ <td class="2-column"></td>
364
+ <td class="3-column"></td>
365
+ <td class="4-column"></td>
366
+ <td class="5-column"></td>
367
+ <td class="6-column"></td>
368
+ <td class="7-column"></td>
369
+ </tr>
370
+ </tbody>
371
+ </table>
372
+ </div>
373
+ </div>
374
+ </div>
375
+ </div>
376
+ <div ng-class="getVisibleTab(3)" class="resource-timing-view">
377
+ <table>
378
+ <tr>
379
+ <td>Receiving</td>
380
+ <td width="200px">
381
+ <div class="network-timing-row">
382
+ <span class="network-timing-bar-title">{{selectedEntry.receiveTime}}</span>
383
+ </div>
384
+ </td>
385
+ </tr>
386
+ </table>
387
+ </div>
388
+ <div ng-class="getVisibleTab(4)" class="resource-response-view hide">
389
+ <pre><code>{{selectedEntry.response_content}}</code></pre>
390
+ </div>
391
+ </div>
392
+ </div>
393
+ </div>
394
+ <div class="split-view-resizer"></div>
395
+ </div>
396
+ </div>
397
+ </div>
398
+ </div>
399
+
400
+ <div class="popover custom-popup-vertical-scroll custom-popup-horizontal-scroll hidden" style="left:500px; top: 197px; width: 315px; height: 132px;">
401
+ <div class="arrow"></div>
402
+ </div>
403
+
404
+ <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
405
+ <script>window.jQuery || document.write('<script src="components/jquery/jquery.min.js"><\/script>')</script>
406
+ <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.6/angular.min.js"></script>
407
+ <script>window.angular || document.write('<script src="components/angular/angular.min.js"><\/script>')</script>
408
+
409
+ <script src="js/script.js"></script>
410
+ <script src="js/libs/devTools.js"></script>
411
+ <script src="js/libs/HAREntry.js"></script>
412
+ <script src="js/controllers.js"></script>
413
+
414
+ <script>
415
+ var _gaq=[['_setAccount','UA-34376791-1'],['_trackPageview']];
416
+ (function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
417
+ g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
418
+ s.parentNode.insertBefore(g,s)}(document,'script'));
419
+ </script>
420
+
421
+ </body>
422
+ </html>
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Network Tab Controller.
3
+ */
4
+ angular.module('net', []).controller('NetworkCtrl', function ($scope) {
5
+ 'use strict';
6
+
7
+ $scope.segments = 12; // Hard-coded number of segments
8
+ $scope.pages = $scope.pages || []; // Page -> Entry mapping
9
+ $scope.entries = $scope.entries || []; // Entries
10
+ $scope.data = {}; // Global data
11
+
12
+ $scope.checked = false;
13
+ $scope.tab = '1';
14
+ $scope.sI = 'all';
15
+ $scope.selectedEntry = null;
16
+
17
+ $scope.updateHar = function(new_data) {
18
+ // Reset data
19
+ var data = {};
20
+ data.lastOnLoad = 0;
21
+
22
+ // Handle pages
23
+ var pageidxs = {};
24
+
25
+ // Handle entries
26
+ var entries = new_data.log.entries;
27
+ delete new_data.log.entries;
28
+ $.each(entries, function(i, entry) {
29
+ var harEntry = new HAREntry(
30
+ entry,
31
+ i,
32
+ new Date( entry.startedDateTime ).getTime(),
33
+ data
34
+ );
35
+ harEntry.autoResponded = entry.comment == 'x-auto-response'
36
+ harEntry.response_content = entry.response.content;
37
+ entries[i] = harEntry;
38
+ });
39
+
40
+ // Latch values
41
+ $scope.entries = entries;
42
+ $scope.checked = true;
43
+ $scope.data = data;
44
+
45
+ // Create labels for segments
46
+ $scope.labels = $scope.setLabels($scope.data.lastOnLoad/$scope.segments);
47
+ };
48
+
49
+ $scope.setLabels = function(section) {
50
+ var labels = {};
51
+ for (var i = 12; i > 0; i--) {
52
+ labels[i] = String.sprintf("%0.00fms", section * i);
53
+ };
54
+ return labels;
55
+ };
56
+
57
+ $scope.setSort = function(sort) {
58
+ $scope.predicate = sort;
59
+ $scope.reverse = !$scope.reverse;
60
+ };
61
+
62
+ $scope.toggleReqHeaders = function() {
63
+ $('.request.parent').toggleClass('expanded');
64
+ $('.request.children').toggleClass('expanded');
65
+ };
66
+
67
+ $scope.toggleResHeaders = function() {
68
+ $('.response.parent').toggleClass('expanded');
69
+ $('.response.children').toggleClass('expanded');
70
+ };
71
+
72
+ $scope.showDetails = function(i) {
73
+ $scope.selectedRow = i;
74
+ $scope.selectedEntry = $scope.entries[i];
75
+
76
+ var $leftView = $('.split-view-sidebar-left');
77
+ $('#network-views').removeClass('hidden');
78
+ $('.panel.network').addClass('viewing-resource');
79
+ $leftView.removeClass('maximized');
80
+ $leftView.addClass('minimized');
81
+ $('#network-container').addClass('brief-mode');
82
+ };
83
+
84
+ $scope.hideDetails = function() {
85
+ $scope.selectedRow = '-1';
86
+ var $leftView = $('.split-view-sidebar-left');
87
+ $leftView.addClass('maximized');
88
+ $('#network-views').addClass('hidden');
89
+ $('.panel.network').removeClass('viewing-resource');
90
+ $leftView.removeClass('minimized');
91
+ $('#network-container').removeClass('brief-mode');
92
+ };
93
+
94
+ // TODO: merge all these get/set index functions.
95
+ $scope.getClass = function (type) {
96
+ return ( (type == $scope.sI) ? 'selected' : '');
97
+ };
98
+
99
+ $scope.getSelectedRow = function (i) {
100
+ return ( (i == $scope.selectedRow) ? 'selected' : '');
101
+ };
102
+
103
+ $scope.getTab = function(index) {
104
+ return ( (index == $scope.tab) ? 'selected' : '');
105
+ };
106
+
107
+ $scope.getVisibleTab = function(index) {
108
+ return ( (index == $scope.tab) ? 'visible' : '');
109
+ };
110
+
111
+ $scope.showTab = function(index) {
112
+ $scope.tab = index;
113
+ };
114
+
115
+ $scope.dnd = {};
116
+
117
+ $scope.dnd.cancel = function (e) {
118
+ if (e.preventDefault) {
119
+ e.preventDefault(); // required by FF + Safari
120
+ }
121
+ return false; // required by IE
122
+ }
123
+
124
+ });