Index: chrome/browser/ui/webui/tracking_ui.cc |
=================================================================== |
--- chrome/browser/ui/webui/tracking_ui.cc (revision 108557) |
+++ chrome/browser/ui/webui/tracking_ui.cc (working copy) |
@@ -8,6 +8,7 @@ |
#include "base/bind.h" |
#include "base/tracked_objects.h" |
+#include "chrome/browser/metrics/tracking_synchronizer.h" |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/browser/ui/webui/chrome_web_ui_data_source.h" |
#include "chrome/common/url_constants.h" |
@@ -17,6 +18,7 @@ |
#include "grit/generated_resources.h" |
using content::BrowserThread; |
+using chrome_browser_metrics::TrackingSynchronizer; |
namespace { |
@@ -68,10 +70,8 @@ |
} |
void TrackingMessageHandler::OnGetData(const ListValue* list) { |
- // Send the data to the renderer. |
- scoped_ptr<Value> data_values(tracked_objects::ThreadData::ToValue()); |
- web_ui_->CallJavascriptFunction("g_browserBridge.receivedData", |
- *data_values.get()); |
+ TrackingUI* tracking_ui = reinterpret_cast<TrackingUI*>(web_ui_); |
+ tracking_ui->GetData(); |
} |
void TrackingMessageHandler::OnResetData(const ListValue* list) { |
@@ -81,9 +81,26 @@ |
} // namespace |
TrackingUI::TrackingUI(TabContents* contents) : ChromeWebUI(contents) { |
+ ui_weak_ptr_factory_.reset(new base::WeakPtrFactory<TrackingUI>(this)); |
+ ui_weak_ptr_ = ui_weak_ptr_factory_->GetWeakPtr(); |
+ |
AddMessageHandler((new TrackingMessageHandler())->Attach(this)); |
// Set up the chrome://tracking2/ source. |
Profile::FromBrowserContext(contents->browser_context())-> |
GetChromeURLDataManager()->AddDataSource(CreateTrackingHTMLSource()); |
} |
+ |
+TrackingUI::~TrackingUI() { |
+} |
+ |
+void TrackingUI::GetData() { |
+ TrackingSynchronizer::FetchTrackingDataAsynchronously(ui_weak_ptr_); |
+} |
+ |
+void TrackingUI::ReceivedData(base::Value* value) { |
+ // Send the data to the renderer. |
+ scoped_ptr<Value> data_values(value); |
+ CallJavascriptFunction("g_browserBridge.receivedData", *data_values.get()); |
+} |
+ |