Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1493)

Side by Side Diff: samples/swarm/UIState.dart

Issue 11783009: Big merge from experimental to bleeding edge. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « samples/swarm/DataSource.dart ('k') | samples/swarm/Views.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 part of swarmlib; 5 part of swarmlib;
6 6
7 /** 7 /**
8 * The base class for UI state that intends to support browser history. 8 * The base class for UI state that intends to support browser history.
9 */ 9 */
10 abstract class UIState { 10 abstract class UIState {
(...skipping 17 matching lines...) Expand all
28 } 28 }
29 29
30 if (firstEvent && state != '') { 30 if (firstEvent && state != '') {
31 // TODO(jmesserly): When loading a bookmark or refreshing, we replace 31 // TODO(jmesserly): When loading a bookmark or refreshing, we replace
32 // the app state with a clean app state so the back button works. It 32 // the app state with a clean app state so the back button works. It
33 // would be better to support jumping to the previous story. 33 // would be better to support jumping to the previous story.
34 // We'd need to do some history manipulation here and some fixes to 34 // We'd need to do some history manipulation here and some fixes to
35 // the views for this. 35 // the views for this.
36 window.history.replaceState(null, document.title, '#'); 36 window.history.replaceState(null, document.title, '#');
37 } else if (state != '') { 37 } else if (state != '') {
38 loadFromHistory(JSON.parse(state)); 38 loadFromHistory(json.parse(state));
39 } 39 }
40 firstEvent = false; 40 firstEvent = false;
41 }); 41 });
42 42
43 window.on.popState.add(_historyTracking); 43 window.on.popState.add(_historyTracking);
44 } 44 }
45 45
46 void stopHistoryTracking() { 46 void stopHistoryTracking() {
47 if (_historyTracking != null) { 47 if (_historyTracking != null) {
48 window.on.popState.add(_historyTracking); // remove? 48 window.on.popState.add(_historyTracking); // remove?
49 } 49 }
50 } 50 }
51 51
52 /** Pushes a state onto the browser history stack */ 52 /** Pushes a state onto the browser history stack */
53 void pushToHistory() { 53 void pushToHistory() {
54 if (_historyTracking == null) { 54 if (_historyTracking == null) {
55 throw 'history tracking not started'; 55 throw 'history tracking not started';
56 } 56 }
57 57
58 String state = JSON.stringify(toHistory()); 58 String state = json.stringify(toHistory());
59 59
60 // TODO(jmesserly): [state] should be an Object, and we should pass it to 60 // TODO(jmesserly): [state] should be an Object, and we should pass it to
61 // the state parameter instead of as a #hash URL. Right now we're working 61 // the state parameter instead of as a #hash URL. Right now we're working
62 // around b/4582542. 62 // around b/4582542.
63 window.history.pushState(null, '${document.title}#$state'); 63 window.history.pushState(null, '${document.title}#$state');
64 } 64 }
65 65
66 /** 66 /**
67 * Serialize the state to a form suitable for storing in browser history. 67 * Serialize the state to a form suitable for storing in browser history.
68 */ 68 */
69 Map<String, String> toHistory(); 69 Map<String, String> toHistory();
70 70
71 /** 71 /**
72 * Load the UI state from the given [values]. 72 * Load the UI state from the given [values].
73 */ 73 */
74 void loadFromHistory(Map<String, String> values); 74 void loadFromHistory(Map<String, String> values);
75 } 75 }
OLDNEW
« no previous file with comments | « samples/swarm/DataSource.dart ('k') | samples/swarm/Views.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698