Index: components/html_viewer/html_document.cc |
diff --git a/components/html_viewer/html_document.cc b/components/html_viewer/html_document.cc |
index 3d3a30312f8d2bcd0d25fe810d12bdd4513cd578..0c8d9beb03c5d37a0abe30e679aa74b525d8bcf3 100644 |
--- a/components/html_viewer/html_document.cc |
+++ b/components/html_viewer/html_document.cc |
@@ -19,6 +19,7 @@ |
#include "components/html_viewer/geolocation_client_impl.h" |
#include "components/html_viewer/global_state.h" |
#include "components/html_viewer/media_factory.h" |
+#include "components/html_viewer/stats_collection_controller.h" |
#include "components/html_viewer/web_layer_tree_view_impl.h" |
#include "components/html_viewer/web_storage_namespace_impl.h" |
#include "components/html_viewer/web_url_loader_impl.h" |
@@ -159,6 +160,15 @@ HTMLDocument::CreateParams::CreateParams( |
HTMLDocument::CreateParams::~CreateParams() { |
} |
+HTMLDocument::Observer::Observer(HTMLDocument* html_document) |
+ : html_document_(html_document) { |
sky
2015/08/12 23:54:36
nit: make sure you run git cl format.
msw
2015/08/14 23:20:34
Done.
|
+ html_document_->AddObserver(this); |
+} |
+ |
+HTMLDocument::Observer::~Observer() { |
+ html_document_->RemoveObserver(this); |
+} |
+ |
HTMLDocument::HTMLDocument(HTMLDocument::CreateParams* params) |
: app_refcount_(params->html_document_app->app_lifetime_helper() |
->CreateAppRefCount()), |
@@ -169,7 +179,8 @@ HTMLDocument::HTMLDocument(HTMLDocument::CreateParams* params) |
root_(nullptr), |
view_manager_client_factory_(params->html_document_app->shell(), this), |
global_state_(params->global_state), |
- delete_callback_(params->delete_callback) { |
+ delete_callback_(params->delete_callback), |
+ stats_collection_controller_(nullptr) { |
params->connection->AddService( |
static_cast<InterfaceFactory<mojo::AxProvider>*>(this)); |
params->connection->AddService(&view_manager_client_factory_); |
@@ -189,6 +200,14 @@ void HTMLDocument::Destroy() { |
} |
} |
+void HTMLDocument::AddObserver(HTMLDocument::Observer* observer) { |
+ observers_.AddObserver(observer); |
+} |
+ |
+void HTMLDocument::RemoveObserver(HTMLDocument::Observer* observer) { |
+ observers_.RemoveObserver(observer); |
+} |
+ |
HTMLDocument::~HTMLDocument() { |
delete_callback_.Run(this); |
@@ -247,6 +266,9 @@ void HTMLDocument::Load(URLResponsePtr response) { |
new DevToolsAgentImpl(main_frame, html_document_app_->shell())); |
} |
+ stats_collection_controller_ = |
+ StatsCollectionController::Install(this, html_document_app_); |
+ |
GURL url(response->url); |
WebURLRequestExtraData* extra_data = new WebURLRequestExtraData; |
@@ -398,6 +420,21 @@ void HTMLDocument::didAddMessageToConsole( |
<< message.text.utf8(); |
} |
+void HTMLDocument::didStartLoading(bool toDifferentDocument) { |
+ // TODO(msw): Nix observer pattern, use stats_collection_controller_ directly? |
+ FOR_EACH_OBSERVER(HTMLDocument::Observer, observers_, DidStartLoading()); |
+} |
+ |
+void HTMLDocument::didStopLoading() { |
+ // TODO(msw): Nix observer pattern, use stats_collection_controller_ directly? |
+ FOR_EACH_OBSERVER(HTMLDocument::Observer, observers_, DidStopLoading()); |
+} |
+ |
+void HTMLDocument::didHandleOnloadEvents(blink::WebLocalFrame* frame) { |
+ if (stats_collection_controller_) |
+ stats_collection_controller_->DidHandleOnloadEvents(base::Time::Now()); |
+} |
+ |
void HTMLDocument::didFinishLoad(blink::WebLocalFrame* frame) { |
// TODO(msw): Notify AxProvider clients of updates on child frame loads. |
did_finish_load_ = true; |
@@ -415,6 +452,13 @@ void HTMLDocument::didNavigateWithinPage( |
navigator_host_->DidNavigateLocally(history_item.urlString().utf8()); |
} |
+void HTMLDocument::didFirstVisuallyNonEmptyLayout(blink::WebLocalFrame* frame) { |
+ if (stats_collection_controller_) { |
+ stats_collection_controller_->DidFirstVisuallyNonEmptyLayout( |
+ base::Time::Now()); |
+ } |
+} |
+ |
blink::WebEncryptedMediaClient* HTMLDocument::encryptedMediaClient() { |
return global_state_->media_factory()->GetEncryptedMediaClient(); |
} |