1// Copyright 2013 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/chromeos/first_run/first_run_handler.h" 6 7#include "base/bind.h" 8#include "base/values.h" 9#include "content/public/browser/web_ui.h" 10 11namespace chromeos { 12 13FirstRunHandler::FirstRunHandler() 14 : is_initialized_(false), 15 is_finalizing_(false) { 16} 17 18bool FirstRunHandler::IsInitialized() { 19 return is_initialized_; 20} 21 22void FirstRunHandler::SetBackgroundVisible(bool visible) { 23 web_ui()->CallJavascriptFunction("cr.FirstRun.setBackgroundVisible", 24 base::FundamentalValue(visible)); 25} 26 27void FirstRunHandler::AddRectangularHole(int x, int y, int width, int height) { 28 web_ui()->CallJavascriptFunction("cr.FirstRun.addRectangularHole", 29 base::FundamentalValue(x), 30 base::FundamentalValue(y), 31 base::FundamentalValue(width), 32 base::FundamentalValue(height)); 33} 34 35void FirstRunHandler::AddRoundHole(int x, int y, float radius) { 36 web_ui()->CallJavascriptFunction("cr.FirstRun.addRoundHole", 37 base::FundamentalValue(x), 38 base::FundamentalValue(y), 39 base::FundamentalValue(radius)); 40} 41 42void FirstRunHandler::RemoveBackgroundHoles() { 43 web_ui()->CallJavascriptFunction("cr.FirstRun.removeHoles"); 44} 45 46void FirstRunHandler::ShowStepPositioned(const std::string& name, 47 const StepPosition& position) { 48 web_ui()->CallJavascriptFunction("cr.FirstRun.showStep", 49 base::StringValue(name), 50 *position.AsValue()); 51} 52 53void FirstRunHandler::ShowStepPointingTo(const std::string& name, 54 int x, 55 int y, 56 int offset) { 57 scoped_ptr<base::Value> null(base::Value::CreateNullValue()); 58 base::ListValue point_with_offset; 59 point_with_offset.AppendInteger(x); 60 point_with_offset.AppendInteger(y); 61 point_with_offset.AppendInteger(offset); 62 web_ui()->CallJavascriptFunction("cr.FirstRun.showStep", 63 base::StringValue(name), 64 *null, 65 point_with_offset); 66} 67 68void FirstRunHandler::HideCurrentStep() { 69 web_ui()->CallJavascriptFunction("cr.FirstRun.hideCurrentStep"); 70} 71 72void FirstRunHandler::Finalize() { 73 is_finalizing_ = true; 74 web_ui()->CallJavascriptFunction("cr.FirstRun.finalize"); 75} 76 77bool FirstRunHandler::IsFinalizing() { 78 return is_finalizing_; 79} 80 81void FirstRunHandler::RegisterMessages() { 82 web_ui()->RegisterMessageCallback("initialized", 83 base::Bind(&FirstRunHandler::HandleInitialized, base::Unretained(this))); 84 web_ui()->RegisterMessageCallback("nextButtonClicked", 85 base::Bind(&FirstRunHandler::HandleNextButtonClicked, 86 base::Unretained(this))); 87 web_ui()->RegisterMessageCallback("helpButtonClicked", 88 base::Bind(&FirstRunHandler::HandleHelpButtonClicked, 89 base::Unretained(this))); 90 web_ui()->RegisterMessageCallback("stepShown", 91 base::Bind(&FirstRunHandler::HandleStepShown, 92 base::Unretained(this))); 93 web_ui()->RegisterMessageCallback("stepHidden", 94 base::Bind(&FirstRunHandler::HandleStepHidden, 95 base::Unretained(this))); 96 web_ui()->RegisterMessageCallback("finalized", 97 base::Bind(&FirstRunHandler::HandleFinalized, 98 base::Unretained(this))); 99} 100 101void FirstRunHandler::HandleInitialized(const base::ListValue* args) { 102 is_initialized_ = true; 103 if (delegate()) 104 delegate()->OnActorInitialized(); 105} 106 107void FirstRunHandler::HandleNextButtonClicked(const base::ListValue* args) { 108 std::string step_name; 109 CHECK(args->GetString(0, &step_name)); 110 if (delegate()) 111 delegate()->OnNextButtonClicked(step_name); 112} 113 114void FirstRunHandler::HandleHelpButtonClicked(const base::ListValue* args) { 115 if (delegate()) 116 delegate()->OnHelpButtonClicked(); 117} 118 119void FirstRunHandler::HandleStepShown(const base::ListValue* args) { 120 std::string step_name; 121 CHECK(args->GetString(0, &step_name)); 122 if (delegate()) 123 delegate()->OnStepShown(step_name); 124} 125 126void FirstRunHandler::HandleStepHidden(const base::ListValue* args) { 127 std::string step_name; 128 CHECK(args->GetString(0, &step_name)); 129 if (delegate()) 130 delegate()->OnStepHidden(step_name); 131} 132 133void FirstRunHandler::HandleFinalized(const base::ListValue* args) { 134 is_finalizing_ = false; 135 if (delegate()) 136 delegate()->OnActorFinalized(); 137} 138 139} // namespace chromeos 140