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
11 namespace chromeos {
12
FirstRunHandler()13 FirstRunHandler::FirstRunHandler()
14 : is_initialized_(false),
15 is_finalizing_(false) {
16 }
17
IsInitialized()18 bool FirstRunHandler::IsInitialized() {
19 return is_initialized_;
20 }
21
SetBackgroundVisible(bool visible)22 void FirstRunHandler::SetBackgroundVisible(bool visible) {
23 web_ui()->CallJavascriptFunction("cr.FirstRun.setBackgroundVisible",
24 base::FundamentalValue(visible));
25 }
26
AddRectangularHole(int x,int y,int width,int height)27 void 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
AddRoundHole(int x,int y,float radius)35 void 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
RemoveBackgroundHoles()42 void FirstRunHandler::RemoveBackgroundHoles() {
43 web_ui()->CallJavascriptFunction("cr.FirstRun.removeHoles");
44 }
45
ShowStepPositioned(const std::string & name,const StepPosition & position)46 void 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
ShowStepPointingTo(const std::string & name,int x,int y,int offset)53 void 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
HideCurrentStep()68 void FirstRunHandler::HideCurrentStep() {
69 web_ui()->CallJavascriptFunction("cr.FirstRun.hideCurrentStep");
70 }
71
Finalize()72 void FirstRunHandler::Finalize() {
73 is_finalizing_ = true;
74 web_ui()->CallJavascriptFunction("cr.FirstRun.finalize");
75 }
76
IsFinalizing()77 bool FirstRunHandler::IsFinalizing() {
78 return is_finalizing_;
79 }
80
RegisterMessages()81 void 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
HandleInitialized(const base::ListValue * args)101 void FirstRunHandler::HandleInitialized(const base::ListValue* args) {
102 is_initialized_ = true;
103 if (delegate())
104 delegate()->OnActorInitialized();
105 }
106
HandleNextButtonClicked(const base::ListValue * args)107 void 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
HandleHelpButtonClicked(const base::ListValue * args)114 void FirstRunHandler::HandleHelpButtonClicked(const base::ListValue* args) {
115 if (delegate())
116 delegate()->OnHelpButtonClicked();
117 }
118
HandleStepShown(const base::ListValue * args)119 void 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
HandleStepHidden(const base::ListValue * args)126 void 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
HandleFinalized(const base::ListValue * args)133 void FirstRunHandler::HandleFinalized(const base::ListValue* args) {
134 is_finalizing_ = false;
135 if (delegate())
136 delegate()->OnActorFinalized();
137 }
138
139 } // namespace chromeos
140