OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <math.h> | 5 #include <math.h> |
6 #include <stdio.h> // FIXME(brettw) erase me. | 6 #include <stdio.h> // FIXME(brettw) erase me. |
7 #ifndef _WIN32 | 7 #ifndef _WIN32 |
8 #include <sys/time.h> | 8 #include <sys/time.h> |
9 #endif | 9 #endif |
10 #include <time.h> | 10 #include <time.h> |
11 | 11 |
12 #include <algorithm> | 12 #include <algorithm> |
13 | 13 |
| 14 #include "ppapi/c/dev/ppb_console_dev.h" |
14 #include "ppapi/c/dev/ppp_printing_dev.h" | 15 #include "ppapi/c/dev/ppp_printing_dev.h" |
15 #include "ppapi/c/pp_errors.h" | 16 #include "ppapi/c/pp_errors.h" |
16 #include "ppapi/c/pp_input_event.h" | 17 #include "ppapi/c/pp_input_event.h" |
17 #include "ppapi/c/pp_rect.h" | 18 #include "ppapi/c/pp_rect.h" |
18 #include "ppapi/cpp/completion_callback.h" | 19 #include "ppapi/cpp/completion_callback.h" |
19 #include "ppapi/cpp/dev/scriptable_object_deprecated.h" | 20 #include "ppapi/cpp/dev/scriptable_object_deprecated.h" |
20 #include "ppapi/cpp/graphics_2d.h" | 21 #include "ppapi/cpp/graphics_2d.h" |
21 #include "ppapi/cpp/image_data.h" | 22 #include "ppapi/cpp/image_data.h" |
22 #include "ppapi/cpp/instance.h" | 23 #include "ppapi/cpp/instance.h" |
23 #include "ppapi/cpp/module.h" | 24 #include "ppapi/cpp/module.h" |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
168 if (fetcher_) { | 169 if (fetcher_) { |
169 delete fetcher_; | 170 delete fetcher_; |
170 fetcher_ = NULL; | 171 fetcher_ = NULL; |
171 } | 172 } |
172 } | 173 } |
173 | 174 |
174 virtual bool Init(uint32_t argc, const char* argn[], const char* argv[]) { | 175 virtual bool Init(uint32_t argc, const char* argn[], const char* argv[]) { |
175 return true; | 176 return true; |
176 } | 177 } |
177 | 178 |
| 179 void Log(PP_LogLevel_Dev level, const pp::Var& value) { |
| 180 const PPB_Console_Dev* console = reinterpret_cast<const PPB_Console_Dev*>( |
| 181 pp::Module::Get()->GetBrowserInterface(PPB_CONSOLE_DEV_INTERFACE)); |
| 182 if (!console) |
| 183 return; |
| 184 console->Log(pp_instance(), level, value.pp_var()); |
| 185 } |
| 186 |
178 virtual bool HandleDocumentLoad(const pp::URLLoader& loader) { | 187 virtual bool HandleDocumentLoad(const pp::URLLoader& loader) { |
179 fetcher_ = new MyFetcher(); | 188 fetcher_ = new MyFetcher(); |
180 fetcher_->StartWithOpenedLoader(loader, this); | 189 fetcher_->StartWithOpenedLoader(loader, this); |
181 return true; | 190 return true; |
182 } | 191 } |
183 | 192 |
184 virtual bool HandleInputEvent(const PP_InputEvent& event) { | 193 virtual bool HandleInputEvent(const PP_InputEvent& event) { |
185 switch (event.type) { | 194 switch (event.type) { |
186 case PP_INPUTEVENT_TYPE_MOUSEDOWN: | 195 case PP_INPUTEVENT_TYPE_MOUSEDOWN: |
187 //SayHello(); | 196 SayHello(); |
188 return true; | 197 return true; |
189 case PP_INPUTEVENT_TYPE_MOUSEMOVE: | 198 case PP_INPUTEVENT_TYPE_MOUSEMOVE: |
190 return true; | 199 return true; |
191 case PP_INPUTEVENT_TYPE_KEYDOWN: | 200 case PP_INPUTEVENT_TYPE_KEYDOWN: |
192 return true; | 201 return true; |
193 default: | 202 default: |
194 return false; | 203 return false; |
195 } | 204 } |
196 } | 205 } |
197 | 206 |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
235 pp::ImageData image = PaintImage(width_, height_); | 244 pp::ImageData image = PaintImage(width_, height_); |
236 if (!image.is_null()) { | 245 if (!image.is_null()) { |
237 device_context_.ReplaceContents(&image); | 246 device_context_.ReplaceContents(&image); |
238 device_context_.Flush(pp::CompletionCallback(&FlushCallback, this)); | 247 device_context_.Flush(pp::CompletionCallback(&FlushCallback, this)); |
239 } else { | 248 } else { |
240 printf("NullImage: %d, %d\n", width_, height_); | 249 printf("NullImage: %d, %d\n", width_, height_); |
241 } | 250 } |
242 } | 251 } |
243 | 252 |
244 virtual void DidChangeView(const pp::Rect& position, const pp::Rect& clip) { | 253 virtual void DidChangeView(const pp::Rect& position, const pp::Rect& clip) { |
| 254 Log(PP_LOGLEVEL_LOG, "DidChangeView"); |
245 if (position.size().width() == width_ && | 255 if (position.size().width() == width_ && |
246 position.size().height() == height_) | 256 position.size().height() == height_) |
247 return; // We don't care about the position, only the size. | 257 return; // We don't care about the position, only the size. |
248 | 258 |
249 width_ = position.size().width(); | 259 width_ = position.size().width(); |
250 height_ = position.size().height(); | 260 height_ = position.size().height(); |
251 printf("DidChangeView relevant change: width=%d height:%d\n", | 261 printf("DidChangeView relevant change: width=%d height:%d\n", |
252 width_, height_); | 262 width_, height_); |
253 | 263 |
254 device_context_ = pp::Graphics2D(this, pp::Size(width_, height_), false); | 264 device_context_ = pp::Graphics2D(this, pp::Size(width_, height_), false); |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
335 } | 345 } |
336 | 346 |
337 void OnFlush() { | 347 void OnFlush() { |
338 if (animation_counter_ % kStepsPerCircle == 0) | 348 if (animation_counter_ % kStepsPerCircle == 0) |
339 UpdateFps(); | 349 UpdateFps(); |
340 animation_counter_++; | 350 animation_counter_++; |
341 Paint(); | 351 Paint(); |
342 } | 352 } |
343 | 353 |
344 private: | 354 private: |
345 void Log(const pp::Var& var) { | |
346 pp::Var doc = GetWindowObject().GetProperty("document"); | |
347 if (console_.is_undefined()) { | |
348 pp::Var body = doc.GetProperty("body"); | |
349 console_ = doc.Call("createElement", "pre"); | |
350 console_.GetProperty("style").SetProperty("backgroundColor", "lightgray"); | |
351 body.Call("appendChild", console_); | |
352 } | |
353 console_.Call("appendChild", doc.Call("createTextNode", var)); | |
354 console_.Call("appendChild", doc.Call("createTextNode", "\n")); | |
355 } | |
356 | |
357 void SayHello() { | 355 void SayHello() { |
358 pp::Var window = GetWindowObject(); | 356 pp::Var window = GetWindowObject(); |
359 pp::Var doc = window.GetProperty("document"); | 357 pp::Var doc = window.GetProperty("document"); |
360 pp::Var body = doc.GetProperty("body"); | 358 pp::Var body = doc.GetProperty("body"); |
361 | 359 |
362 pp::Var obj(this, new MyScriptableObject(this)); | 360 pp::Var obj(this, new MyScriptableObject(this)); |
363 | 361 |
364 // Our object should have its toString method called. | 362 // Our object should have its toString method called. |
365 Log("Testing MyScriptableObject::toString():"); | 363 Log(PP_LOGLEVEL_LOG, "Testing MyScriptableObject::toString():"); |
366 Log(obj); | 364 Log(PP_LOGLEVEL_LOG, obj); |
367 | 365 |
368 // body.appendChild(body) should throw an exception | 366 // body.appendChild(body) should throw an exception |
369 Log("\nCalling body.appendChild(body):"); | 367 Log(PP_LOGLEVEL_LOG, "Calling body.appendChild(body):"); |
370 pp::Var exception; | 368 pp::Var exception; |
371 body.Call("appendChild", body, &exception); | 369 body.Call("appendChild", body, &exception); |
372 Log(exception); | 370 Log(PP_LOGLEVEL_LOG, exception); |
373 | 371 |
374 Log("\nEnumeration of window properties:"); | 372 Log(PP_LOGLEVEL_LOG, "Enumeration of window properties:"); |
375 std::vector<pp::Var> props; | 373 std::vector<pp::Var> props; |
376 window.GetAllPropertyNames(&props); | 374 window.GetAllPropertyNames(&props); |
377 for (size_t i = 0; i < props.size(); ++i) | 375 for (size_t i = 0; i < props.size(); ++i) |
378 Log(props[i]); | 376 Log(PP_LOGLEVEL_LOG, props[i]); |
379 | 377 |
380 pp::Var location = window.GetProperty("location"); | 378 pp::Var location = window.GetProperty("location"); |
381 pp::Var href = location.GetProperty("href"); | 379 pp::Var href = location.GetProperty("href"); |
382 | 380 |
383 if (!fetcher_) { | 381 if (!fetcher_) { |
384 fetcher_ = new MyFetcher(); | 382 fetcher_ = new MyFetcher(); |
385 fetcher_->Start(*this, href, this); | 383 fetcher_->Start(*this, href, this); |
386 } | 384 } |
387 } | 385 } |
388 | 386 |
389 void DidFetch(bool success, const std::string& data) { | 387 void DidFetch(bool success, const std::string& data) { |
390 Log("\nDownloaded location.href:"); | 388 Log(PP_LOGLEVEL_LOG, "Downloaded location.href:"); |
391 if (success) { | 389 if (success) { |
392 Log(data); | 390 Log(PP_LOGLEVEL_LOG, data); |
393 } else { | 391 } else { |
394 Log("Failed to download."); | 392 Log(PP_LOGLEVEL_ERROR, "Failed to download."); |
395 } | 393 } |
396 delete fetcher_; | 394 delete fetcher_; |
397 fetcher_ = NULL; | 395 fetcher_ = NULL; |
398 } | 396 } |
399 | 397 |
400 pp::Var console_; | 398 pp::Var console_; |
401 pp::Graphics2D device_context_; | 399 pp::Graphics2D device_context_; |
402 | 400 |
403 double time_at_last_check_; | 401 double time_at_last_check_; |
404 | 402 |
(...skipping 23 matching lines...) Expand all Loading... |
428 }; | 426 }; |
429 | 427 |
430 namespace pp { | 428 namespace pp { |
431 | 429 |
432 // Factory function for your specialization of the Module object. | 430 // Factory function for your specialization of the Module object. |
433 Module* CreateModule() { | 431 Module* CreateModule() { |
434 return new MyModule(); | 432 return new MyModule(); |
435 } | 433 } |
436 | 434 |
437 } // namespace pp | 435 } // namespace pp |
OLD | NEW |