158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// found in the LICENSE file. 458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chrome/browser/ui/webui/chromeos/first_run/first_run_handler.h" 658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "base/bind.h" 858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "base/values.h" 958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "content/public/browser/web_ui.h" 1058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)namespace chromeos { 1258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)FirstRunHandler::FirstRunHandler() 145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) : is_initialized_(false), 155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) is_finalizing_(false) { 1658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 1758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)bool FirstRunHandler::IsInitialized() { 1958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) return is_initialized_; 2058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 2158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)void FirstRunHandler::SetBackgroundVisible(bool visible) { 23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) web_ui()->CallJavascriptFunction("cr.FirstRun.setBackgroundVisible", 24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) base::FundamentalValue(visible)); 25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)void FirstRunHandler::AddRectangularHole(int x, int y, int width, int height) { 28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) web_ui()->CallJavascriptFunction("cr.FirstRun.addRectangularHole", 2958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) base::FundamentalValue(x), 3058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) base::FundamentalValue(y), 3158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) base::FundamentalValue(width), 3258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) base::FundamentalValue(height)); 3358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 3458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)void FirstRunHandler::AddRoundHole(int x, int y, float radius) { 36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) web_ui()->CallJavascriptFunction("cr.FirstRun.addRoundHole", 37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) base::FundamentalValue(x), 38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) base::FundamentalValue(y), 39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) base::FundamentalValue(radius)); 40f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 41f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 4258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)void FirstRunHandler::RemoveBackgroundHoles() { 4358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) web_ui()->CallJavascriptFunction("cr.FirstRun.removeHoles"); 4458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 4558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 46f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)void FirstRunHandler::ShowStepPositioned(const std::string& name, 47f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const StepPosition& position) { 4858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) web_ui()->CallJavascriptFunction("cr.FirstRun.showStep", 4958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) base::StringValue(name), 5058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) *position.AsValue()); 5158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 5258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 53f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)void FirstRunHandler::ShowStepPointingTo(const std::string& name, 54f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) int x, 55f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) int y, 56f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) int offset) { 57f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) scoped_ptr<base::Value> null(base::Value::CreateNullValue()); 58f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) base::ListValue point_with_offset; 59f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) point_with_offset.AppendInteger(x); 60f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) point_with_offset.AppendInteger(y); 61f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) point_with_offset.AppendInteger(offset); 62f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) web_ui()->CallJavascriptFunction("cr.FirstRun.showStep", 63f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) base::StringValue(name), 64f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) *null, 65f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) point_with_offset); 66f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 67f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void FirstRunHandler::HideCurrentStep() { 695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) web_ui()->CallJavascriptFunction("cr.FirstRun.hideCurrentStep"); 705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void FirstRunHandler::Finalize() { 735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) is_finalizing_ = true; 745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) web_ui()->CallJavascriptFunction("cr.FirstRun.finalize"); 755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)bool FirstRunHandler::IsFinalizing() { 785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return is_finalizing_; 795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 8158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)void FirstRunHandler::RegisterMessages() { 8258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) web_ui()->RegisterMessageCallback("initialized", 8358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) base::Bind(&FirstRunHandler::HandleInitialized, base::Unretained(this))); 8458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) web_ui()->RegisterMessageCallback("nextButtonClicked", 8558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) base::Bind(&FirstRunHandler::HandleNextButtonClicked, 8658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) base::Unretained(this))); 87f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) web_ui()->RegisterMessageCallback("helpButtonClicked", 88f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) base::Bind(&FirstRunHandler::HandleHelpButtonClicked, 89f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) base::Unretained(this))); 905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) web_ui()->RegisterMessageCallback("stepShown", 915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::Bind(&FirstRunHandler::HandleStepShown, 925d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::Unretained(this))); 935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) web_ui()->RegisterMessageCallback("stepHidden", 945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::Bind(&FirstRunHandler::HandleStepHidden, 955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::Unretained(this))); 965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) web_ui()->RegisterMessageCallback("finalized", 975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::Bind(&FirstRunHandler::HandleFinalized, 98f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) base::Unretained(this))); 9958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 10058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 10158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)void FirstRunHandler::HandleInitialized(const base::ListValue* args) { 10258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) is_initialized_ = true; 10358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) if (delegate()) 10458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) delegate()->OnActorInitialized(); 10558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 10658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 10758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)void FirstRunHandler::HandleNextButtonClicked(const base::ListValue* args) { 10858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) std::string step_name; 10958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) CHECK(args->GetString(0, &step_name)); 11058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) if (delegate()) 11158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) delegate()->OnNextButtonClicked(step_name); 11258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 11358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 114f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)void FirstRunHandler::HandleHelpButtonClicked(const base::ListValue* args) { 115f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) if (delegate()) 116f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) delegate()->OnHelpButtonClicked(); 117f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 118f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void FirstRunHandler::HandleStepShown(const base::ListValue* args) { 1205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) std::string step_name; 1215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) CHECK(args->GetString(0, &step_name)); 122f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) if (delegate()) 1235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) delegate()->OnStepShown(step_name); 124f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 125f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void FirstRunHandler::HandleStepHidden(const base::ListValue* args) { 1275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) std::string step_name; 1285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) CHECK(args->GetString(0, &step_name)); 1295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (delegate()) 1305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) delegate()->OnStepHidden(step_name); 1315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 13258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void FirstRunHandler::HandleFinalized(const base::ListValue* args) { 1345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) is_finalizing_ = false; 1355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (delegate()) 1365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) delegate()->OnActorFinalized(); 1375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 1385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} // namespace chromeos 140