Upstream version 9.37.197.0
[platform/framework/web/crosswalk.git] / src / mojo / examples / html_viewer / html_document_view.h
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.
4
5 #ifndef MOJO_EXAMPLES_HTML_VIEWER_HTML_DOCUMENT_VIEW_H_
6 #define MOJO_EXAMPLES_HTML_VIEWER_HTML_DOCUMENT_VIEW_H_
7
8 #include "base/memory/weak_ptr.h"
9 #include "mojo/services/public/interfaces/network/url_loader.mojom.h"
10 #include "third_party/WebKit/public/web/WebFrameClient.h"
11 #include "third_party/WebKit/public/web/WebViewClient.h"
12
13 namespace mojo {
14
15 namespace view_manager {
16 class Node;
17 class ViewManager;
18 class View;
19 }
20
21 namespace examples {
22
23 // A view for a single HTML document.
24 class HTMLDocumentView : public blink::WebViewClient,
25                          public blink::WebFrameClient {
26  public:
27   explicit HTMLDocumentView(view_manager::ViewManager* view_manager);
28   virtual ~HTMLDocumentView();
29
30   void AttachToNode(view_manager::Node* node);
31
32   void Load(URLResponsePtr response,
33             ScopedDataPipeConsumerHandle response_body_stream);
34
35  private:
36   // WebWidgetClient methods:
37   virtual void didInvalidateRect(const blink::WebRect& rect);
38   virtual bool allowsBrokenNullLayerTreeView() const;
39
40   // WebFrameClient methods:
41   virtual void didAddMessageToConsole(
42       const blink::WebConsoleMessage& message,
43       const blink::WebString& source_name,
44       unsigned source_line,
45       const blink::WebString& stack_trace);
46
47   void Repaint();
48
49   view_manager::ViewManager* view_manager_;
50   view_manager::View* view_;
51   blink::WebView* web_view_;
52   bool repaint_pending_;
53
54   base::WeakPtrFactory<HTMLDocumentView> weak_factory_;
55
56   DISALLOW_COPY_AND_ASSIGN(HTMLDocumentView);
57 };
58
59 }  // namespace examples
60 }  // namespace mojo
61
62 #endif  // MOJO_EXAMPLES_HTML_VIEWER_HTML_DOCUMENT_VIEW_H_