15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// found in the LICENSE file. 45d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "chrome/browser/ui/webui/invalidations_ui.h" 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "chrome/browser/profiles/profile.h" 85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "chrome/browser/ui/webui/invalidations_message_handler.h" 95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "chrome/common/url_constants.h" 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "content/public/browser/web_ui.h" 115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "content/public/browser/web_ui_data_source.h" 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "content/public/browser/web_ui_message_handler.h" 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "grit/invalidations_resources.h" 145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)content::WebUIDataSource* CreateInvalidationsHTMLSource() { 165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // This is done once per opening of the page 175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // This method does not fire when refreshing the page 185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) content::WebUIDataSource* source = 195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) content::WebUIDataSource::Create(chrome::kChromeUIInvalidationsHost); 205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) source->AddResourcePath("about_invalidations.js", IDR_ABOUT_INVALIDATIONS_JS); 215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) source->SetDefaultResource(IDR_ABOUT_INVALIDATIONS_HTML); 225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return source; 235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)InvalidationsUI::InvalidationsUI(content::WebUI* web_ui) 265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) : WebUIController(web_ui) { 275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Profile* profile = Profile::FromWebUI(web_ui); 285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (profile) { 295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) content::WebUIDataSource::Add(profile, CreateInvalidationsHTMLSource()); 305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) InvalidationsMessageHandler* message_handler = 315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) new InvalidationsMessageHandler(); 325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // The MessageHandler of web_ui takes ownership of the object 335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) web_ui->AddMessageHandler(message_handler); 345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)InvalidationsUI::~InvalidationsUI() { } 385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 39