Index: ios/web/web_state/ui/crw_wk_navigation_states.h |
diff --git a/ios/web/web_state/ui/crw_wk_navigation_states.h b/ios/web/web_state/ui/crw_wk_navigation_states.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..72dd02280d8ca3c299dd6444e763c195ea7f4af1 |
--- /dev/null |
+++ b/ios/web/web_state/ui/crw_wk_navigation_states.h |
@@ -0,0 +1,60 @@ |
+// Copyright 2016 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef IOS_WEB_WEB_STATE_UI_CRW_WK_NAVIGATION_STATES_H_ |
+#define IOS_WEB_WEB_STATE_UI_CRW_WK_NAVIGATION_STATES_H_ |
+ |
+#import <Foundation/Foundation.h> |
+#import <WebKit/WebKit.h> |
+ |
+namespace web { |
+ |
+// State of in-flight WKNavigation objects. |
+enum class WKNavigationState : int { |
+ // WKNavigation returned from |loadRequest:|, |goToBackForwardListItem:|, |
+ // |loadFileURL:allowingReadAccessToURL:|, |loadHTMLString:baseURL:|, |
+ // |loadData:MIMEType:characterEncodingName:baseURL:|, |goBack|, |goForward|, |
+ // |reload| or |reloadFromOrigin|. |
+ REQUESTED = 1, |
+ // WKNavigation passed to |webView:didStartProvisionalNavigation:|. |
+ STARTED, |
+ // WKNavigation passed to |
+ // |webView:didReceiveServerRedirectForProvisionalNavigation:|. |
+ REDIRECTED, |
+ // WKNavigation passed to |webView:didFailProvisionalNavigation:|. |
+ PROVISIONALY_FAILED, |
+ // WKNavigation passed to |webView:didCommitNavigation:|. |
+ COMMITTED, |
+ // WKNavigation passed to |webView:didFinishNavigation:|. |
+ FINISHED, |
+ // WKNavigation passed to |webView:didFailNavigation:withError:|. |
+ FAILED, |
+}; |
+ |
+} // namespace web |
+ |
+// Stores states for WKNavigation objects. Allows lookign up for last added |
+// navigation object. |
+@interface CRWWKNavigationStates : NSObject |
+ |
+// Adds a new navigation if it was not added yet. If navigation was already |
+// added then updates state for existing navigation. Updating state does not |
+// affect the result of |lastAddedNavigation| method. New added navigations |
+// should have either WKNavigationState::REQUESTED or WKNavigationState::STARTED |
kkhorimoto
2017/01/04 00:13:57
Just noticed now, but this should be updated to al
Eugene But (OOO till 7-30)
2017/01/04 00:20:11
Done.
|
+// state. Passed |navigation| will be help as weak reference and will not be |
+// retained. No-op if |navigation| is null. |
+- (void)setState:(web::WKNavigationState)state |
+ forNavigation:(WKNavigation*)navigation; |
+ |
+// WKNavigation which was added the most recently via |setState:forNavigation:|. |
+// Updating navigation state via |setState:forNavigation:| does not change the |
+// last added navigation. Returns nil if there are no stored navigations. |
+- (WKNavigation*)lastAddedNavigation; |
+ |
+// Returns state of the given navigation or 0 if navigation does not exist. |
kkhorimoto
2017/01/04 00:13:57
What is returned here using enum classes? Not sur
Eugene But (OOO till 7-30)
2017/01/04 00:20:11
0 of int type. Added |NONE = 0|.
|
+- (web::WKNavigationState)stateForNavigation:(WKNavigation*)navigation; |
+ |
+@end |
+ |
+#endif // IOS_WEB_WEB_STATE_UI_CRW_WK_NAVIGATION_STATES_H_ |