Chromium Code Reviews| Index: blimp/engine/session/tab_blimp.h |
| diff --git a/blimp/engine/session/tab_blimp.h b/blimp/engine/session/tab_blimp.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..b209deddd720b952f70d395ff560e0712782ecea |
| --- /dev/null |
| +++ b/blimp/engine/session/tab_blimp.h |
| @@ -0,0 +1,75 @@ |
| +// Copyright 2016 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#ifndef BLIMP_ENGINE_SESSION_TAB_BLIMP_H_ |
| +#define BLIMP_ENGINE_SESSION_TAB_BLIMP_H_ |
| + |
| +#include "base/macros.h" |
| +#include "content/public/browser/invalidate_type.h" |
| +#include "content/public/browser/web_contents_observer.h" |
| +#include "blimp/engine/session/page_load_tracker.h" |
| + |
| +namespace content { |
| +class RenderViewHost; |
| +class WebContents; |
| +} |
| + |
| +namespace blimp { |
| +class BlimpMessageProcessor; |
| + |
| +namespace engine { |
| +class EngineRenderWidgetFeature; |
| + |
| +// Owns WebContents, handles operations in the tab, and has one-to-one mapping |
| +// to a client tab. |
| +class TabBlimp : public content::WebContentsObserver, |
|
Kevin M
2016/06/06 21:44:39
"Tab" ?
haibinlu
2016/06/06 22:32:28
Done.
|
| + public PageLoadTrackerClient { |
| + public: |
| + // Caller ensures |render_widget_feature| and |navigation_message_sender| |
| + // outlives this object. |
| + // |web_contents|: the WebContents this tab owns. |
| + // |tab_id|: the ID of this tab. |
| + // |render_widget_feature|: render widget feature. |
| + // |navigation_message_sender|: for sending navigation messages to client. |
| + explicit TabBlimp(std::unique_ptr<content::WebContents> web_contents, |
|
Kevin M
2016/06/06 21:44:39
"explicit" not needed for this many ctor arguments
haibinlu
2016/06/06 22:32:28
Done.
|
| + const int tab_id, |
| + EngineRenderWidgetFeature* render_widget_feature, |
| + BlimpMessageProcessor* navigation_message_sender); |
| + ~TabBlimp() override; |
| + |
| + content::WebContents* web_contents() { return web_contents_.get(); } |
| + int tab_id() const { return tab_id_; } |
| + |
| + void Resize(float device_pixel_ratio, const gfx::Size& size_in_dips); |
| + void LoadUrl(const GURL& url); |
| + void GoBack(); |
| + void GoForward(); |
| + void Reload(); |
| + void NavigationStateChanged(content::InvalidateTypes changed_flags); |
| + |
| + // PageLoadTrackerClient implementation. |
| + void SendPageLoadStatusUpdate(PageLoadStatus load_status) override; |
| + |
| + private: |
| + // content::WebContentsObserver implementation. |
| + void RenderViewCreated(content::RenderViewHost* render_view_host) override; |
| + void RenderViewHostChanged(content::RenderViewHost* old_host, |
| + content::RenderViewHost* new_host) override; |
| + void RenderViewDeleted(content::RenderViewHost* render_view_host) override; |
| + |
| + std::unique_ptr<content::WebContents> web_contents_; |
| + const int tab_id_; |
| + EngineRenderWidgetFeature* render_widget_feature_; |
| + BlimpMessageProcessor* navigation_message_sender_; |
| + |
| + // Tracks the page load status for a tab. |
| + std::unique_ptr<PageLoadTracker> page_load_tracker_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(TabBlimp); |
| +}; |
| + |
| +} // namespace engine |
| +} // namespace blimp |
| + |
| +#endif // BLIMP_ENGINE_SESSION_TAB_BLIMP_H_ |