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