Standardizing NavigateBack and NavigateForward API
This commit is contained in:
parent
786e242a24
commit
bb2a503425
40
nav.go
40
nav.go
|
@ -41,31 +41,35 @@ func NavigateToHistoryEntry(entryID int64) Action {
|
|||
}
|
||||
|
||||
// NavigateBack navigates the current frame backwards in its history.
|
||||
func NavigateBack(ctxt context.Context, h cdp.Handler) error {
|
||||
cur, entries, err := page.GetNavigationHistory().Do(ctxt, h)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
func NavigateBack() Action {
|
||||
return ActionFunc(func(ctxt context.Context, h cdp.Handler) error {
|
||||
cur, entries, err := page.GetNavigationHistory().Do(ctxt, h)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if cur <= 0 || cur > int64(len(entries)-1) {
|
||||
return errors.New("invalid navigation entry")
|
||||
}
|
||||
if cur == 0 {
|
||||
return errors.New("already on oldest navigation entry")
|
||||
}
|
||||
|
||||
return page.NavigateToHistoryEntry(entries[cur-1].ID).Do(ctxt, h)
|
||||
return page.NavigateToHistoryEntry(entries[cur-1].ID).Do(ctxt, h)
|
||||
})
|
||||
}
|
||||
|
||||
// NavigateForward navigates the current frame forwards in its history.
|
||||
func NavigateForward(ctxt context.Context, h cdp.Handler) error {
|
||||
cur, entries, err := page.GetNavigationHistory().Do(ctxt, h)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
func NavigateForward() Action {
|
||||
return ActionFunc(func(ctxt context.Context, h cdp.Handler) error {
|
||||
cur, entries, err := page.GetNavigationHistory().Do(ctxt, h)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if cur < 0 || cur >= int64(len(entries)-1) {
|
||||
return errors.New("invalid navigation entry")
|
||||
}
|
||||
if cur == int64(len(entries)-1) {
|
||||
return errors.New("already on newest navigation entry")
|
||||
}
|
||||
|
||||
return page.NavigateToHistoryEntry(entries[cur+1].ID).Do(ctxt, h)
|
||||
return page.NavigateToHistoryEntry(entries[cur+1].ID).Do(ctxt, h)
|
||||
})
|
||||
}
|
||||
|
||||
// Stop stops all navigation and pending resource retrieval.
|
||||
|
|
14
nav_test.go
14
nav_test.go
|
@ -1,12 +1,10 @@
|
|||
package chromedp
|
||||
|
||||
import (
|
||||
"context"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/knq/chromedp/cdp"
|
||||
"github.com/knq/chromedp/cdp/page"
|
||||
)
|
||||
|
||||
|
@ -193,9 +191,7 @@ func TestNavigateBack(t *testing.T) {
|
|||
t.Fatal(err)
|
||||
}
|
||||
|
||||
err = c.Run(defaultContext, ActionFunc(func(c context.Context, h cdp.Handler) error {
|
||||
return NavigateBack(c, h)
|
||||
}))
|
||||
err = c.Run(defaultContext, NavigateBack())
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
@ -249,9 +245,7 @@ func TestNavigateForward(t *testing.T) {
|
|||
t.Fatal(err)
|
||||
}
|
||||
|
||||
err = c.Run(defaultContext, ActionFunc(func(c context.Context, h cdp.Handler) error {
|
||||
return NavigateBack(c, h)
|
||||
}))
|
||||
err = c.Run(defaultContext, NavigateBack())
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
@ -261,9 +255,7 @@ func TestNavigateForward(t *testing.T) {
|
|||
t.Fatal(err)
|
||||
}
|
||||
|
||||
err = c.Run(defaultContext, ActionFunc(func(c context.Context, h cdp.Handler) error {
|
||||
return NavigateForward(c, h)
|
||||
}))
|
||||
err = c.Run(defaultContext, NavigateForward())
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user