• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_
63