     @history = []
     @currentIndex = -1
     @pendingIndex = -1
+    @inPageIndex = -1
 
     @webContents.on 'navigation-entry-commited', (event, url, inPage, replaceEntry) =>
-      console.log 'navigation-entry-commited', url, inPage, replaceEntry
+      if @inPageIndex > -1 and not inPage
+        # Navigated to a new page, clear in-page mark.
+        @inPageIndex = -1
+      else if @inPageIndex is -1 and inPage
+        # Started in-page navigations.
+        @inPageIndex = @currentIndex
 
       if @pendingIndex >= 0 # Go to index.
         @currentIndex = @pendingIndex
         @pendingIndex = -1
-        @history[@currentIndex] = {url, inPage}
+        @history[@currentIndex] = url
       else if replaceEntry # Non-user initialized navigation.
-        @history[@currentIndex] = {url, inPage}
+        @history[@currentIndex] = url
       else  # Normal navigation.
         @history = @history.slice 0, @currentIndex + 1  # Clear history.
         currentEntry = @history[@currentIndex]
-        if currentEntry?.url isnt url or currentEntry?.inPage isnt inPage
+        if currentEntry?.url isnt url
           @currentIndex++
-          @history.push {url, inPage}
+          @history.push url
 
   loadUrl: (url, options={}) ->
     @pendingIndex = -1

  goBack: ->
    return unless @canGoBack()
    @pendingIndex = @getActiveIndex() - 1
    pendingEntry = @history[@pendingIndex]
    if pendingEntry.inPage
      @webContents._goBack()
    else
      @webContents._loadUrl pendingEntry.url, {}

  goForward: ->
    return unless @canGoForward()
    @pendingIndex = @getActiveIndex() + 1
    pendingEntry = @history[@pendingIndex]
    if pendingEntry.inPage
      @webContents._goForward()
    else
      @webContents._loadUrl pendingEntry.url, {}

  goToIndex: (index) ->
    return unless @canGoToIndex index

    if @currentIndex is -1
      ''
    else
      @history[@currentIndex]

  stop: ->
    @pendingIndex = -1
