Rename GetIconID to GetIconId
[chromium-blink-merge.git] / components / html_viewer / document_resource_waiter.h
blob8fe2e4dfca8db679d4bd50be6350041ed9553609
1 // Copyright 2015 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 COMPONENTS_HTML_VIEWER_DOCUMENT_RESOURCE_WAITER_H_
6 #define COMPONENTS_HTML_VIEWER_DOCUMENT_RESOURCE_WAITER_H_
8 #include "base/basictypes.h"
9 #include "components/web_view/public/interfaces/frame_tree.mojom.h"
10 #include "mojo/services/network/public/interfaces/url_loader.mojom.h"
11 #include "third_party/mojo/src/mojo/public/cpp/bindings/binding.h"
13 namespace mojo {
14 class View;
17 namespace html_viewer {
19 class HTMLDocumentOOPIF;
20 class GlobalState;
22 // DocumentResourceWaiter waits for the necessary resources needed to load an
23 // HTMLDocument. Use IsReady() to determine when everything is available. Once
24 // ready it is assumed HTMLDocument will call back for the FrameTreeClient and
25 // FrameData.
26 class DocumentResourceWaiter : public web_view::FrameTreeClient {
27 public:
28 DocumentResourceWaiter(GlobalState* global_state,
29 mojo::URLResponsePtr response,
30 HTMLDocumentOOPIF* document);
31 ~DocumentResourceWaiter() override;
33 // Releases all the resources that have been accumulated.
34 void Release(mojo::InterfaceRequest<web_view::FrameTreeClient>*
35 frame_tree_client_request,
36 web_view::FrameTreeServerPtr* frame_tree_server,
37 mojo::Array<web_view::FrameDataPtr>* frame_data,
38 uint32_t* view_id,
39 uint32_t* change_id,
40 web_view::ViewConnectType* view_connect_type,
41 OnConnectCallback* on_connect_callback);
43 mojo::URLResponsePtr ReleaseURLResponse();
45 // See class description.
46 bool IsReady() const;
48 void set_root(mojo::View* root) { root_ = root; }
49 mojo::View* root() { return root_; }
51 void Bind(mojo::InterfaceRequest<web_view::FrameTreeClient> request);
53 private:
54 // web_view::FrameTreeClient:
55 void OnConnect(web_view::FrameTreeServerPtr server,
56 uint32_t change_id,
57 uint32_t view_id,
58 web_view::ViewConnectType view_connect_type,
59 mojo::Array<web_view::FrameDataPtr> frame_data,
60 const OnConnectCallback& callback) override;
61 void OnFrameAdded(uint32_t change_id,
62 web_view::FrameDataPtr frame_data) override;
63 void OnFrameRemoved(uint32_t change_id, uint32_t frame_id) override;
64 void OnFrameClientPropertyChanged(uint32_t frame_id,
65 const mojo::String& name,
66 mojo::Array<uint8_t> new_value) override;
67 void OnPostMessageEvent(uint32_t source_frame_id,
68 uint32_t target_frame_id,
69 web_view::HTMLMessageEventPtr event) override;
70 void OnWillNavigate(uint32_t target_frame_id) override;
72 GlobalState* global_state_;
73 HTMLDocumentOOPIF* document_;
74 mojo::URLResponsePtr response_;
75 mojo::View* root_;
76 web_view::FrameTreeServerPtr server_;
77 mojo::Array<web_view::FrameDataPtr> frame_data_;
78 uint32_t change_id_;
79 uint32_t view_id_;
80 web_view::ViewConnectType view_connect_type_;
81 OnConnectCallback on_connect_callback_;
83 // Once we get OnConnect() we unbind |frame_tree_client_binding_| and put it
84 // here.
85 mojo::InterfaceRequest<web_view::FrameTreeClient> frame_tree_client_request_;
86 mojo::Binding<web_view::FrameTreeClient> frame_tree_client_binding_;
88 DISALLOW_COPY_AND_ASSIGN(DocumentResourceWaiter);
91 } // namespace html_viewer
93 #endif // COMPONENTS_HTML_VIEWER_DOCUMENT_RESOURCE_WAITER_H_