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

Side by Side Diff: ios/public/provider/web/web_state.h

Issue 777183002: Upstream iOS web API. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years 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
« no previous file with comments | « ios/public/provider/web/navigation_manager.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef IOS_PUBLIC_PROVIDER_WEB_WEB_STATE_H_ 5 #ifndef IOS_PUBLIC_PROVIDER_WEB_WEB_STATE_H_
6 #define IOS_PUBLIC_PROVIDER_WEB_WEB_STATE_H_ 6 #define IOS_PUBLIC_PROVIDER_WEB_WEB_STATE_H_
7 7
8 #include "ios/public/consumer/base/supports_user_data.h" 8 #include <string>
9
10 #include "base/callback_forward.h"
11 #include "base/supports_user_data.h"
12 #include "ios/web/public/referrer.h"
13 #include "ui/base/page_transition_types.h"
14 #include "ui/base/window_open_disposition.h"
15 #include "url/gurl.h"
16
17 class GURL;
18
19 #if defined(__OBJC__)
20 // TODO(droger): Convert all the public web API to C++.
21 @class CRWJSInjectionReceiver;
22 #else
23 class CRWJSInjectionReceiver;
24 #endif // defined(__OBJC__)
25
26 namespace base {
27 class DictionaryValue;
28 }
29
30 namespace web {
31 class BrowserState;
32 class WebStateObserver;
33 }
9 34
10 namespace ios { 35 namespace ios {
11 36
37 class NavigationManager;
38
12 // Core interface for interaction with the web. 39 // Core interface for interaction with the web.
13 class WebState : public ios::SupportsUserData { 40 class WebState : public base::SupportsUserData {
14 public: 41 public:
42 struct OpenURLParams {
43 OpenURLParams(const GURL& url,
44 const web::Referrer& referrer,
45 WindowOpenDisposition disposition,
46 ui::PageTransition transition,
47 bool is_renderer_initiated);
48 ~OpenURLParams();
49
50 // The URL/referrer to be opened.
51 GURL url;
52 web::Referrer referrer;
53
54 // The disposition requested by the navigation source.
55 WindowOpenDisposition disposition;
56
57 // The transition type of navigation.
58 ui::PageTransition transition;
59
60 // Whether this navigation is initiated by the renderer process.
61 bool is_renderer_initiated;
62 };
63
15 virtual ~WebState() {} 64 virtual ~WebState() {}
16 65
66 // Gets the web::BrowserState associated with this WebState. Can never return
67 // NULL.
68 virtual web::BrowserState* GetBrowserState() const = 0;
69
70 // Opens a URL with the given disposition. The transition specifies how this
71 // navigation should be recorded in the history system (for example, typed).
72 virtual void OpenURL(const OpenURLParams& params) = 0;
73
74 // Gets the NavigationManager associated with this WebState. Can never return
75 // NULL.
76 virtual NavigationManager* GetNavigationManager() = 0;
77
78 // Gets the CRWJSInjectionReceiver associated with this WebState.
79 virtual CRWJSInjectionReceiver* GetJSInjectionReceiver() const = 0;
80
81 // Gets the contents MIME type.
82 virtual const std::string& GetContentsMimeType() const = 0;
83
84 // Gets the value of the "Content-Language" HTTP header.
85 virtual const std::string& GetContentLanguageHeader() const = 0;
86
87 // Returns true if the current view is a web view with HTML.
88 virtual bool ContentIsHTML() const = 0;
89
90 // Gets the URL currently being displayed in the URL bar, if there is one.
91 // This URL might be a pending navigation that hasn't committed yet, so it is
92 // not guaranteed to match the current page in this WebState. A typical
93 // example of this is interstitials, which show the URL of the new/loading
94 // page (active) but the security context is of the old page (last committed).
95 virtual const GURL& GetVisibleURL() const = 0;
96
97 // Gets the last committed URL. It represents the current page that is
98 // displayed in this WebState. It represents the current security context.
99 virtual const GURL& GetLastCommittedURL() const = 0;
100
101 // Callback used to handle script commands.
102 // The callback must return true if the command was handled, and false
103 // otherwise.
104 // In particular the callback must return false if the command is unexpected
105 // or ill-formatted.
106 // The first parameter is the content of the command, the second parameter is
107 // the URL of the page, and the third parameter is a bool indicating if the
108 // user is currently interacting with the page.
109 typedef base::Callback<bool(const base::DictionaryValue&, const GURL&, bool)>
110 ScriptCommandCallback;
111
112 // Registers a callback that will be called when a command matching
113 // |command_prefix| is received.
114 virtual void AddScriptCommandCallback(const ScriptCommandCallback& callback,
115 const std::string& command_prefix) = 0;
116
117 // Removes the callback associated with |command_prefix|.
118 virtual void RemoveScriptCommandCallback(
119 const std::string& command_prefix) = 0;
120
17 protected: 121 protected:
122 friend class web::WebStateObserver;
stuartmorgan 2014/12/04 23:11:43 Can we upstream this header yet? It's odd to have
stuartmorgan 2014/12/04 23:14:11 Nm, I see it's in the next CL.
123
124 // Adds and removes observers for page navigation notifications. The order in
125 // which notifications are sent to observers is undefined. Clients must be
126 // sure to remove the observer before they go away.
127 // TODO(droger): Move these methods to WebStateImpl once it is in ios/.
128 virtual void AddObserver(web::WebStateObserver* observer) = 0;
129 virtual void RemoveObserver(web::WebStateObserver* observer) = 0;
130
18 WebState() {} 131 WebState() {}
19 }; 132 };
20 133
21 } // namespace ios 134 } // namespace ios
22 135
23 #endif // IOS_PUBLIC_PROVIDER_WEB_WEB_STATE_H_ 136 #endif // IOS_PUBLIC_PROVIDER_WEB_WEB_STATE_H_
OLDNEW
« no previous file with comments | « ios/public/provider/web/navigation_manager.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698