1+ var WebTimer = function ( ) { } ;
2+
3+ WebTimer . prototype = {
4+ tabs : [ ] ,
5+ currentTab : { } ,
6+
7+ addTab : function ( tab ) {
8+ if ( this . isValidPage ( tab ) === true ) {
9+ if ( tab . id && ( tab . id != 0 ) ) {
10+ this . tabs = this . tabs || [ ] ;
11+ var domain = this . extractRootDomain ( tab . url ) ;
12+ if ( ! this . tabs . includes ( domain ) ) {
13+ this . tabs . push ( domain ) ;
14+ }
15+ this . startTimeTracker ( tab ) ;
16+ this . currentTab = domain ;
17+ }
18+ }
19+ } ,
20+
21+ extractRootDomain : function ( url ) {
22+ var domain = this . extractHostname ( url ) ,
23+ splitArr = domain . split ( '.' ) ,
24+ arrLen = splitArr . length ;
25+
26+ if ( arrLen > 2 ) {
27+ domain = splitArr [ arrLen - 2 ] + '.' + splitArr [ arrLen - 1 ] ;
28+ if ( splitArr [ arrLen - 2 ] . length == 2 && splitArr [ arrLen - 1 ] . length == 2 ) {
29+ domain = splitArr [ arrLen - 3 ] + '.' + domain ;
30+ }
31+ }
32+ return domain ;
33+ } ,
34+
35+ extractHostname : function ( url ) {
36+ var hostname ;
37+
38+ if ( url . indexOf ( "//" ) > - 1 ) {
39+ hostname = url . split ( '/' ) [ 2 ] ;
40+ }
41+ else {
42+ hostname = url . split ( '/' ) [ 0 ] ;
43+ }
44+
45+ hostname = hostname . split ( ':' ) [ 0 ] ;
46+ hostname = hostname . split ( '?' ) [ 0 ] ;
47+
48+ return hostname ;
49+ } ,
50+
51+ isValidPage : function ( tab ) {
52+ if ( ! tab || ! tab . url || ( tab . url . indexOf ( 'http:' ) == - 1 && tab . url . indexOf ( 'https:' ) == - 1 )
53+ || tab . url . indexOf ( 'chrome://' ) !== - 1
54+ || tab . url . indexOf ( 'chrome-extension://' ) !== - 1 )
55+ return false ;
56+ return true ;
57+ } ,
58+
59+ startTimeTracker : function ( tab ) {
60+ var tab = new Tab ( tab . url , tab . favIconUrl ) ;
61+ }
62+ } ;
0 commit comments