Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(589)

Side by Side Diff: components/pdf_viewer/pdf_viewer.cc

Issue 1351013002: Revert of Mandoline UI Process: Update namespaces and file names (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « components/mus/window_manager_access_policy.cc ('k') | components/web_view/frame.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "base/bind.h" 5 #include "base/bind.h"
6 #include "base/callback.h" 6 #include "base/callback.h"
7 #include "base/containers/hash_tables.h" 7 #include "base/containers/hash_tables.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "components/mus/public/cpp/types.h" 9 #include "components/mus/public/cpp/types.h"
10 #include "components/mus/public/cpp/view.h" 10 #include "components/mus/public/cpp/view.h"
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 51
52 void LostContext(void*) { 52 void LostContext(void*) {
53 DCHECK(false); 53 DCHECK(false);
54 } 54 }
55 55
56 void OnGotContentHandlerID(uint32_t content_handler_id) {} 56 void OnGotContentHandlerID(uint32_t content_handler_id) {}
57 57
58 // BitmapUploader is useful if you want to draw a bitmap or color in a View. 58 // BitmapUploader is useful if you want to draw a bitmap or color in a View.
59 class BitmapUploader : public mojo::SurfaceClient { 59 class BitmapUploader : public mojo::SurfaceClient {
60 public: 60 public:
61 explicit BitmapUploader(mus::View* view) 61 explicit BitmapUploader(mojo::View* view)
62 : view_(view), 62 : view_(view),
63 color_(g_transparent_color), 63 color_(g_transparent_color),
64 width_(0), 64 width_(0),
65 height_(0), 65 height_(0),
66 format_(BGRA), 66 format_(BGRA),
67 next_resource_id_(1u), 67 next_resource_id_(1u),
68 id_namespace_(0u), 68 id_namespace_(0u),
69 local_id_(0u), 69 local_id_(0u),
70 returner_binding_(this) {} 70 returner_binding_(this) {
71 }
71 ~BitmapUploader() override { 72 ~BitmapUploader() override {
72 MojoGLES2DestroyContext(gles2_context_); 73 MojoGLES2DestroyContext(gles2_context_);
73 } 74 }
74 75
75 void Init(mojo::Shell* shell) { 76 void Init(mojo::Shell* shell) {
76 surface_ = view_->RequestSurface(); 77 surface_ = view_->RequestSurface();
77 surface_->BindToThread(); 78 surface_->BindToThread();
78 79
79 mojo::ServiceProviderPtr gpu_service_provider; 80 mojo::ServiceProviderPtr gpu_service_provider;
80 mojo::URLRequestPtr request2(mojo::URLRequest::New()); 81 mojo::URLRequestPtr request2(mojo::URLRequest::New());
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
281 mojo::ReturnedResourcePtr resource = resources[i].Pass(); 282 mojo::ReturnedResourcePtr resource = resources[i].Pass();
282 DCHECK_EQ(1, resource->count); 283 DCHECK_EQ(1, resource->count);
283 glWaitSyncPointCHROMIUM(resource->sync_point); 284 glWaitSyncPointCHROMIUM(resource->sync_point);
284 uint32_t texture_id = resource_to_texture_id_map_[resource->id]; 285 uint32_t texture_id = resource_to_texture_id_map_[resource->id];
285 DCHECK_NE(0u, texture_id); 286 DCHECK_NE(0u, texture_id);
286 resource_to_texture_id_map_.erase(resource->id); 287 resource_to_texture_id_map_.erase(resource->id);
287 glDeleteTextures(1, &texture_id); 288 glDeleteTextures(1, &texture_id);
288 } 289 }
289 } 290 }
290 291
291 mus::View* view_; 292 mojo::View* view_;
292 mojo::GpuPtr gpu_service_; 293 mojo::GpuPtr gpu_service_;
293 scoped_ptr<mus::ViewSurface> surface_; 294 scoped_ptr<mojo::ViewSurface> surface_;
294 MojoGLES2Context gles2_context_; 295 MojoGLES2Context gles2_context_;
295 296
296 mojo::Size size_; 297 mojo::Size size_;
297 uint32_t color_; 298 uint32_t color_;
298 int width_; 299 int width_;
299 int height_; 300 int height_;
300 Format format_; 301 Format format_;
301 scoped_ptr<std::vector<unsigned char>> bitmap_; 302 scoped_ptr<std::vector<unsigned char>> bitmap_;
302 uint32_t next_resource_id_; 303 uint32_t next_resource_id_;
303 uint32_t id_namespace_; 304 uint32_t id_namespace_;
304 uint32_t local_id_; 305 uint32_t local_id_;
305 base::hash_map<uint32_t, uint32_t> resource_to_texture_id_map_; 306 base::hash_map<uint32_t, uint32_t> resource_to_texture_id_map_;
306 mojo::Binding<mojo::SurfaceClient> returner_binding_; 307 mojo::Binding<mojo::SurfaceClient> returner_binding_;
307 308
308 DISALLOW_COPY_AND_ASSIGN(BitmapUploader); 309 DISALLOW_COPY_AND_ASSIGN(BitmapUploader);
309 }; 310 };
310 311
311 class EmbedderData { 312 class EmbedderData {
312 public: 313 public:
313 EmbedderData(mojo::Shell* shell, mus::View* root) : bitmap_uploader_(root) { 314 EmbedderData(mojo::Shell* shell, mojo::View* root) : bitmap_uploader_(root) {
314 bitmap_uploader_.Init(shell); 315 bitmap_uploader_.Init(shell);
315 bitmap_uploader_.SetColor(g_background_color); 316 bitmap_uploader_.SetColor(g_background_color);
316 } 317 }
317 318
318 BitmapUploader& bitmap_uploader() { return bitmap_uploader_; } 319 BitmapUploader& bitmap_uploader() { return bitmap_uploader_; }
319 320
320 private: 321 private:
321 BitmapUploader bitmap_uploader_; 322 BitmapUploader bitmap_uploader_;
322 323
323 DISALLOW_COPY_AND_ASSIGN(EmbedderData); 324 DISALLOW_COPY_AND_ASSIGN(EmbedderData);
324 }; 325 };
325 326
326 class PDFView : public mojo::ApplicationDelegate, 327 class PDFView : public mojo::ApplicationDelegate,
327 public mus::ViewTreeDelegate, 328 public mojo::ViewTreeDelegate,
328 public mus::ViewObserver, 329 public mojo::ViewObserver,
329 public mojo::InterfaceFactory<mojo::ViewTreeClient> { 330 public mojo::InterfaceFactory<mojo::ViewTreeClient> {
330 public: 331 public:
331 PDFView(mojo::InterfaceRequest<mojo::Application> request, 332 PDFView(mojo::InterfaceRequest<mojo::Application> request,
332 mojo::URLResponsePtr response) 333 mojo::URLResponsePtr response)
333 : app_(this, request.Pass(), base::Bind(&PDFView::OnTerminate, 334 : app_(this, request.Pass(), base::Bind(&PDFView::OnTerminate,
334 base::Unretained(this))), 335 base::Unretained(this))),
335 current_page_(0), page_count_(0), doc_(nullptr) { 336 current_page_(0), page_count_(0), doc_(nullptr) {
336 FetchPDF(response.Pass()); 337 FetchPDF(response.Pass());
337 } 338 }
338 339
339 ~PDFView() override { 340 ~PDFView() override {
340 if (doc_) 341 if (doc_)
341 FPDF_CloseDocument(doc_); 342 FPDF_CloseDocument(doc_);
342 for (auto& roots : embedder_for_roots_) { 343 for (auto& roots : embedder_for_roots_) {
343 roots.first->RemoveObserver(this); 344 roots.first->RemoveObserver(this);
344 delete roots.second; 345 delete roots.second;
345 } 346 }
346 } 347 }
347 348
348 private: 349 private:
349 // Overridden from ApplicationDelegate: 350 // Overridden from ApplicationDelegate:
350 bool ConfigureIncomingConnection( 351 bool ConfigureIncomingConnection(
351 mojo::ApplicationConnection* connection) override { 352 mojo::ApplicationConnection* connection) override {
352 connection->AddService<mojo::ViewTreeClient>(this); 353 connection->AddService<mojo::ViewTreeClient>(this);
353 return true; 354 return true;
354 } 355 }
355 356
356 // Overridden from ViewTreeDelegate: 357 // Overridden from ViewTreeDelegate:
357 void OnEmbed(mus::View* root) override { 358 void OnEmbed(mojo::View* root) override {
358 DCHECK(embedder_for_roots_.find(root) == embedder_for_roots_.end()); 359 DCHECK(embedder_for_roots_.find(root) == embedder_for_roots_.end());
359 root->AddObserver(this); 360 root->AddObserver(this);
360 EmbedderData* embedder_data = new EmbedderData(app_.shell(), root); 361 EmbedderData* embedder_data = new EmbedderData(app_.shell(), root);
361 embedder_for_roots_[root] = embedder_data; 362 embedder_for_roots_[root] = embedder_data;
362 DrawBitmap(embedder_data); 363 DrawBitmap(embedder_data);
363 } 364 }
364 365
365 void OnConnectionLost(mus::ViewTreeConnection* connection) override {} 366 void OnConnectionLost(mojo::ViewTreeConnection* connection) override {}
366 367
367 // Overridden from ViewObserver: 368 // Overridden from ViewObserver:
368 void OnViewBoundsChanged(mus::View* view, 369 void OnViewBoundsChanged(mojo::View* view,
369 const mojo::Rect& old_bounds, 370 const mojo::Rect& old_bounds,
370 const mojo::Rect& new_bounds) override { 371 const mojo::Rect& new_bounds) override {
371 DCHECK(embedder_for_roots_.find(view) != embedder_for_roots_.end()); 372 DCHECK(embedder_for_roots_.find(view) != embedder_for_roots_.end());
372 DrawBitmap(embedder_for_roots_[view]); 373 DrawBitmap(embedder_for_roots_[view]);
373 } 374 }
374 375
375 void OnViewInputEvent(mus::View* view, const mojo::EventPtr& event) override { 376 void OnViewInputEvent(mojo::View* view,
377 const mojo::EventPtr& event) override {
376 DCHECK(embedder_for_roots_.find(view) != embedder_for_roots_.end()); 378 DCHECK(embedder_for_roots_.find(view) != embedder_for_roots_.end());
377 if (event->key_data && 379 if (event->key_data &&
378 (event->action != mojo::EVENT_TYPE_KEY_PRESSED || 380 (event->action != mojo::EVENT_TYPE_KEY_PRESSED ||
379 event->key_data->is_char)) { 381 event->key_data->is_char)) {
380 return; 382 return;
381 } 383 }
382 384
383 if ((event->key_data && 385 if ((event->key_data &&
384 event->key_data->windows_key_code == mojo::KEYBOARD_CODE_DOWN) || 386 event->key_data->windows_key_code == mojo::KEYBOARD_CODE_DOWN) ||
385 (event->pointer_data && event->pointer_data->vertical_wheel < 0)) { 387 (event->pointer_data && event->pointer_data->vertical_wheel < 0)) {
386 if (current_page_ < (page_count_ - 1)) { 388 if (current_page_ < (page_count_ - 1)) {
387 current_page_++; 389 current_page_++;
388 DrawBitmap(embedder_for_roots_[view]); 390 DrawBitmap(embedder_for_roots_[view]);
389 } 391 }
390 } else if ((event->key_data && 392 } else if ((event->key_data &&
391 event->key_data->windows_key_code == mojo::KEYBOARD_CODE_UP) || 393 event->key_data->windows_key_code == mojo::KEYBOARD_CODE_UP) ||
392 (event->pointer_data && 394 (event->pointer_data &&
393 event->pointer_data->vertical_wheel > 0)) { 395 event->pointer_data->vertical_wheel > 0)) {
394 if (current_page_ > 0) { 396 if (current_page_ > 0) {
395 current_page_--; 397 current_page_--;
396 DrawBitmap(embedder_for_roots_[view]); 398 DrawBitmap(embedder_for_roots_[view]);
397 } 399 }
398 } 400 }
399 } 401 }
400 402
401 void OnViewDestroyed(mus::View* view) override { 403 void OnViewDestroyed(mojo::View* view) override {
402 DCHECK(embedder_for_roots_.find(view) != embedder_for_roots_.end()); 404 DCHECK(embedder_for_roots_.find(view) != embedder_for_roots_.end());
403 const auto& it = embedder_for_roots_.find(view); 405 const auto& it = embedder_for_roots_.find(view);
404 DCHECK(it != embedder_for_roots_.end()); 406 DCHECK(it != embedder_for_roots_.end());
405 delete it->second; 407 delete it->second;
406 embedder_for_roots_.erase(it); 408 embedder_for_roots_.erase(it);
407 if (embedder_for_roots_.size() == 0) 409 if (embedder_for_roots_.size() == 0)
408 app_.Quit(); 410 app_.Quit();
409 } 411 }
410 412
411 // Overridden from mojo::InterfaceFactory<mojo::ViewTreeClient>: 413 // Overridden from mojo::InterfaceFactory<mojo::ViewTreeClient>:
412 void Create( 414 void Create(
413 mojo::ApplicationConnection* connection, 415 mojo::ApplicationConnection* connection,
414 mojo::InterfaceRequest<mojo::ViewTreeClient> request) override { 416 mojo::InterfaceRequest<mojo::ViewTreeClient> request) override {
415 mus::ViewTreeConnection::Create(this, request.Pass()); 417 mojo::ViewTreeConnection::Create(this, request.Pass());
416 } 418 }
417 419
418 void DrawBitmap(EmbedderData* embedder_data) { 420 void DrawBitmap(EmbedderData* embedder_data) {
419 if (!doc_) 421 if (!doc_)
420 return; 422 return;
421 423
422 FPDF_PAGE page = FPDF_LoadPage(doc_, current_page_); 424 FPDF_PAGE page = FPDF_LoadPage(doc_, current_page_);
423 int width = static_cast<int>(FPDF_GetPageWidth(page)); 425 int width = static_cast<int>(FPDF_GetPageWidth(page));
424 int height = static_cast<int>(FPDF_GetPageHeight(page)); 426 int height = static_cast<int>(FPDF_GetPageHeight(page));
425 427
(...skipping 28 matching lines...) Expand all
454 // when we quit (the messageloop is shared among multiple PDFViews). 456 // when we quit (the messageloop is shared among multiple PDFViews).
455 void OnTerminate() { 457 void OnTerminate() {
456 delete this; 458 delete this;
457 } 459 }
458 460
459 mojo::ApplicationImpl app_; 461 mojo::ApplicationImpl app_;
460 std::string data_; 462 std::string data_;
461 int current_page_; 463 int current_page_;
462 int page_count_; 464 int page_count_;
463 FPDF_DOCUMENT doc_; 465 FPDF_DOCUMENT doc_;
464 std::map<mus::View*, EmbedderData*> embedder_for_roots_; 466 std::map<mojo::View*, EmbedderData*> embedder_for_roots_;
465 467
466 DISALLOW_COPY_AND_ASSIGN(PDFView); 468 DISALLOW_COPY_AND_ASSIGN(PDFView);
467 }; 469 };
468 470
469 class ContentHandlerImpl : public mojo::ContentHandler { 471 class ContentHandlerImpl : public mojo::ContentHandler {
470 public: 472 public:
471 ContentHandlerImpl(mojo::InterfaceRequest<ContentHandler> request) 473 ContentHandlerImpl(mojo::InterfaceRequest<ContentHandler> request)
472 : binding_(this, request.Pass()) {} 474 : binding_(this, request.Pass()) {}
473 ~ContentHandlerImpl() override {} 475 ~ContentHandlerImpl() override {}
474 476
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
513 DISALLOW_COPY_AND_ASSIGN(PDFViewer); 515 DISALLOW_COPY_AND_ASSIGN(PDFViewer);
514 }; 516 };
515 517
516 } // namespace 518 } // namespace
517 } // namespace pdf_viewer 519 } // namespace pdf_viewer
518 520
519 MojoResult MojoMain(MojoHandle application_request) { 521 MojoResult MojoMain(MojoHandle application_request) {
520 mojo::ApplicationRunner runner(new pdf_viewer::PDFViewer()); 522 mojo::ApplicationRunner runner(new pdf_viewer::PDFViewer());
521 return runner.Run(application_request); 523 return runner.Run(application_request);
522 } 524 }
OLDNEW
« no previous file with comments | « components/mus/window_manager_access_policy.cc ('k') | components/web_view/frame.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698