OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 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 CHROME_BROWSER_GUEST_VIEW_GUEST_VIEW_H_ | 5 #ifndef CHROME_BROWSER_GUEST_VIEW_GUEST_VIEW_H_ |
6 #define CHROME_BROWSER_GUEST_VIEW_GUEST_VIEW_H_ | 6 #define CHROME_BROWSER_GUEST_VIEW_GUEST_VIEW_H_ |
7 | 7 |
| 8 #include "base/bind.h" |
8 #include "chrome/browser/guest_view/guest_view_base.h" | 9 #include "chrome/browser/guest_view/guest_view_base.h" |
9 #include "content/public/browser/render_frame_host.h" | 10 #include "content/public/browser/render_frame_host.h" |
10 | 11 |
11 // A GuestView is the templated base class for out-of-process frames in the | 12 // A GuestView is the templated base class for out-of-process frames in the |
12 // chrome layer. GuestView is templated on its derived type to allow for type- | 13 // chrome layer. GuestView is templated on its derived type to allow for type- |
13 // safe access. See GuestViewBase for more information. | 14 // safe access. See GuestViewBase for more information. |
14 template <typename T> | 15 template <typename T> |
15 class GuestView : public GuestViewBase { | 16 class GuestView : public GuestViewBase { |
16 public: | 17 public: |
| 18 static void Register() { |
| 19 GuestViewBase::RegisterGuestViewType(T::Type, base::Bind(&T::Create)); |
| 20 } |
| 21 |
17 static T* From(int embedder_process_id, int guest_instance_id) { | 22 static T* From(int embedder_process_id, int guest_instance_id) { |
18 GuestViewBase* guest = | 23 GuestViewBase* guest = |
19 GuestViewBase::From(embedder_process_id, guest_instance_id); | 24 GuestViewBase::From(embedder_process_id, guest_instance_id); |
20 if (!guest) | 25 if (!guest) |
21 return NULL; | 26 return NULL; |
22 return guest->As<T>(); | 27 return guest->As<T>(); |
23 } | 28 } |
24 | 29 |
25 static T* FromWebContents(content::WebContents* contents) { | 30 static T* FromWebContents(content::WebContents* contents) { |
26 GuestViewBase* guest = GuestViewBase::FromWebContents(contents); | 31 GuestViewBase* guest = GuestViewBase::FromWebContents(contents); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
58 GuestView(content::BrowserContext* browser_context, | 63 GuestView(content::BrowserContext* browser_context, |
59 int guest_instance_id) | 64 int guest_instance_id) |
60 : GuestViewBase(browser_context, guest_instance_id) {} | 65 : GuestViewBase(browser_context, guest_instance_id) {} |
61 virtual ~GuestView() {} | 66 virtual ~GuestView() {} |
62 | 67 |
63 private: | 68 private: |
64 DISALLOW_COPY_AND_ASSIGN(GuestView); | 69 DISALLOW_COPY_AND_ASSIGN(GuestView); |
65 }; | 70 }; |
66 | 71 |
67 #endif // CHROME_BROWSER_GUEST_VIEW_GUEST_VIEW_H_ | 72 #endif // CHROME_BROWSER_GUEST_VIEW_GUEST_VIEW_H_ |
OLD | NEW |