1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef IOS_WEB_WEBUI_WEB_UI_IOS_IMPL_H_
6 #define IOS_WEB_WEBUI_WEB_UI_IOS_IMPL_H_
10 #include "base/compiler_specific.h"
11 #include "base/memory/scoped_vector.h"
12 #include "base/memory/weak_ptr.h"
13 #include "ios/public/provider/web/web_ui_ios.h"
21 class WebUIIOSImpl
: public web::WebUIIOS
,
22 public base::SupportsWeakPtr
<WebUIIOSImpl
> {
24 explicit WebUIIOSImpl(WebStateImpl
* web_state
);
25 ~WebUIIOSImpl() override
;
27 // WebUIIOS implementation:
28 WebState
* GetWebState() const override
;
29 WebUIIOSController
* GetController() const override
;
30 void SetController(WebUIIOSController
* controller
) override
;
31 void AddMessageHandler(WebUIIOSMessageHandler
* handler
) override
;
32 typedef base::Callback
<void(const base::ListValue
*)> MessageCallback
;
33 void RegisterMessageCallback(const std::string
& message
,
34 const MessageCallback
& callback
) override
;
35 void ProcessWebUIIOSMessage(const GURL
& source_url
,
36 const std::string
& message
,
37 const base::ListValue
& args
) override
;
38 void CallJavascriptFunction(const std::string
& function_name
) override
;
39 void CallJavascriptFunction(const std::string
& function_name
,
40 const base::Value
& arg
) override
;
41 void CallJavascriptFunction(const std::string
& function_name
,
42 const base::Value
& arg1
,
43 const base::Value
& arg2
) override
;
44 void CallJavascriptFunction(const std::string
& function_name
,
45 const base::Value
& arg1
,
46 const base::Value
& arg2
,
47 const base::Value
& arg3
) override
;
48 void CallJavascriptFunction(const std::string
& function_name
,
49 const base::Value
& arg1
,
50 const base::Value
& arg2
,
51 const base::Value
& arg3
,
52 const base::Value
& arg4
) override
;
53 void CallJavascriptFunction(
54 const std::string
& function_name
,
55 const std::vector
<const base::Value
*>& args
) override
;
58 // Executes JavaScript asynchronously on the page.
59 void ExecuteJavascript(const base::string16
& javascript
);
61 // A map of message name -> message handling callback.
62 typedef std::map
<std::string
, MessageCallback
> MessageCallbackMap
;
63 MessageCallbackMap message_callbacks_
;
65 // The WebUIIOSMessageHandlers we own.
66 ScopedVector
<WebUIIOSMessageHandler
> handlers_
;
68 // Non-owning pointer to the WebStateImpl this WebUIIOS is associated with.
69 WebStateImpl
* web_state_
;
71 scoped_ptr
<WebUIIOSController
> controller_
;
73 DISALLOW_COPY_AND_ASSIGN(WebUIIOSImpl
);
78 #endif // IOS_WEB_WEBUI_WEB_UI_IOS_IMPL_H_