| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 8b943f0 commit 146ebef
3 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1,6 +1,7 @@ | |||
| 1 | 1 | import TKUnit = require("./TKUnit"); | |
| 2 | 2 | import pageModule = require("ui/page"); | |
| 3 | 3 | import frame = require("ui/frame"); | |
| 4 | + import { Page } from "ui/page"; | ||
| 4 | 5 | ||
| 5 | 6 | export var test_backstackVisible = function() { | |
| 6 | 7 | var pageFactory = function(): pageModule.Page { | |
@@ -31,6 +32,46 @@ export var test_backstackVisible = function() { | |||
| 31 | 32 | TKUnit.waitUntilReady(() => { return frame.topmost().currentPage === mainTestPage; }); | |
| 32 | 33 | } | |
| 33 | 34 | ||
| 35 | + export var test_backToEntry = function() { | ||
| 36 | + let page = (tag) => () => { | ||
| 37 | + var p = new Page(); | ||
| 38 | + p.tag = tag; | ||
| 39 | + return p; | ||
| 40 | + } | ||
| 41 | + let topmost = frame.topmost(); | ||
| 42 | + let wait = tag => TKUnit.waitUntilReady(() => topmost.currentPage.tag === tag, 1); | ||
| 43 | + let navigate = tag => { | ||
| 44 | + topmost.navigate({ create: page(tag) }); | ||
| 45 | + wait(tag) | ||
| 46 | + } | ||
| 47 | + let back = pages => { | ||
| 48 | + topmost.goBack(topmost.backStack[topmost.backStack.length - pages]); | ||
| 49 | + } | ||
| 50 | + let currentPageMustBe = tag => { | ||
| 51 | + wait(tag); // TODO: Add a timeout... | ||
| 52 | + TKUnit.assert(topmost.currentPage.tag === tag, "Expected current page to be " + tag + " it was " + topmost.currentPage.tag + " instead."); | ||
| 53 | + } | ||
| 54 | + | ||
| 55 | + navigate("page1"); | ||
| 56 | + navigate("page2"); | ||
| 57 | + navigate("page3"); | ||
| 58 | + navigate("page4"); | ||
| 59 | + | ||
| 60 | + currentPageMustBe("page4"); | ||
| 61 | + back(2); | ||
| 62 | + currentPageMustBe("page2"); | ||
| 63 | + back(1); | ||
| 64 | + currentPageMustBe("page1"); | ||
| 65 | + navigate("page1.1"); | ||
| 66 | + navigate("page1.2"); | ||
| 67 | + currentPageMustBe("page1.2"); | ||
| 68 | + back(1); | ||
| 69 | + currentPageMustBe("page1.1"); | ||
| 70 | + back(1); | ||
| 71 | + currentPageMustBe("page1"); | ||
| 72 | + back(1); | ||
| 73 | + } | ||
| 74 | + | ||
| 34 | 75 | // Clearing the history messes up the tests app. | |
| 35 | 76 | export var test_ClearHistory = function () { | |
| 36 | 77 | var pageFactory = function(): pageModule.Page { | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -152,14 +152,27 @@ export class Frame extends CustomLayoutView implements definition.Frame { | |||
| 152 | 152 | return this._backStack.length > 0; | |
| 153 | 153 | } | |
| 154 | 154 | ||
| 155 | - public goBack() { | ||
| 155 | + /** | ||
| 156 | + * Navigates to the previous entry (if any) in the back stack. | ||
| 157 | + * @param to The backstack entry to navigate back to. | ||
| 158 | + */ | ||
| 159 | + public goBack(backstackEntry?: definition.BackstackEntry) { | ||
| 156 | 160 | trace.write(this._getTraceId() + ".goBack();", trace.categories.Navigation); | |
| 157 | 161 | if (!this.canGoBack()) { | |
| 158 | 162 | // TODO: Do we need to throw an error? | |
| 159 | 163 | return; | |
| 160 | 164 | } | |
| 161 | 165 | ||
| 162 | - var backstackEntry = this._backStack.pop(); | ||
| 166 | + if (!backstackEntry) { | ||
| 167 | + backstackEntry = this._backStack.pop(); | ||
| 168 | + } else { | ||
| 169 | + let backIndex = this._backStack.indexOf(backstackEntry); | ||
| 170 | + if (backIndex < 0) { | ||
| 171 | + return; | ||
| 172 | + } | ||
| 173 | + this._backStack.splice(backIndex); | ||
| 174 | + } | ||
| 175 | + | ||
| 163 | 176 | var navigationContext: NavigationContext = { | |
| 164 | 177 | entry: backstackEntry, | |
| 165 | 178 | isBackNavigation: true | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -19,8 +19,9 @@ declare module "ui/frame" { | |||
| 19 | 19 | ||
| 20 | 20 | /** | |
| 21 | 21 | * Navigates to the previous entry (if any) in the back stack. | |
| 22 | + * @param to The backstack entry to navigate back to. | ||
| 22 | 23 | */ | |
| 23 | - goBack(); | ||
| 24 | + goBack(to?: BackstackEntry); | ||
| 24 | 25 | ||
| 25 | 26 | /** | |
| 26 | 27 | * Checks whether the goBack operation is available. | |
| Back | FazBrowse Home | New Git URL |
0 commit comments