Home | History | Annotate | Download | only in webui
      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 #include "chrome/browser/ui/webui/domain_reliability_internals_ui.h"
      6 
      7 #include "chrome/browser/domain_reliability/service_factory.h"
      8 #include "chrome/browser/profiles/profile.h"
      9 #include "chrome/common/url_constants.h"
     10 #include "components/domain_reliability/service.h"
     11 #include "content/public/browser/web_ui.h"
     12 #include "content/public/browser/web_ui_data_source.h"
     13 #include "grit/browser_resources.h"
     14 
     15 using domain_reliability::DomainReliabilityService;
     16 using domain_reliability::DomainReliabilityServiceFactory;
     17 
     18 DomainReliabilityInternalsUI::DomainReliabilityInternalsUI(
     19     content::WebUI* web_ui)
     20     : content::WebUIController(web_ui) {
     21   content::WebUIDataSource* html_source = content::WebUIDataSource::Create(
     22       chrome::kChromeUIDomainReliabilityInternalsHost);
     23   html_source->SetUseJsonJSFormatV2();
     24   html_source->SetJsonPath("strings.js");
     25   html_source->AddResourcePath("domain_reliability_internals.css",
     26       IDR_DOMAIN_RELIABILITY_INTERNALS_CSS);
     27   html_source->AddResourcePath("domain_reliability_internals.js",
     28       IDR_DOMAIN_RELIABILITY_INTERNALS_JS);
     29   html_source->SetDefaultResource(IDR_DOMAIN_RELIABILITY_INTERNALS_HTML);
     30 
     31   web_ui->RegisterMessageCallback("updateData",
     32       base::Bind(&DomainReliabilityInternalsUI::UpdateData,
     33                  base::Unretained(this)));
     34 
     35   Profile* profile = Profile::FromWebUI(web_ui);
     36   content::WebUIDataSource::Add(profile, html_source);
     37 }
     38 
     39 DomainReliabilityInternalsUI::~DomainReliabilityInternalsUI() {}
     40 
     41 void DomainReliabilityInternalsUI::UpdateData(
     42     const base::ListValue* args) const {
     43   Profile* profile = Profile::FromWebUI(web_ui());
     44   DomainReliabilityServiceFactory* factory =
     45       DomainReliabilityServiceFactory::GetInstance();
     46   DCHECK(profile);
     47   DCHECK(factory);
     48 
     49   DomainReliabilityService* service = factory->GetForBrowserContext(profile);
     50   if (!service) {
     51     base::DictionaryValue* data = new base::DictionaryValue();
     52     data->SetString("error", "no_service");
     53     OnDataUpdated(scoped_ptr<base::Value>(data));
     54     return;
     55   }
     56 
     57   service->GetWebUIData(base::Bind(
     58       &DomainReliabilityInternalsUI::OnDataUpdated,
     59       base::Unretained(this)));
     60 }
     61 
     62 void DomainReliabilityInternalsUI::OnDataUpdated(
     63     scoped_ptr<base::Value> data) const {
     64   web_ui()->CallJavascriptFunction(
     65       "DomainReliabilityInternals.onDataUpdated", *data);
     66 }
     67