| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "ui/base/clipboard/clipboard.h" | 5 #include "ui/base/clipboard/clipboard.h" |
| 6 | 6 |
| 7 #include <X11/extensions/Xfixes.h> | 7 #include <X11/extensions/Xfixes.h> |
| 8 #include <X11/Xatom.h> | 8 #include <X11/Xatom.h> |
| 9 #include <list> | 9 #include <list> |
| 10 #include <set> | 10 #include <set> |
| (...skipping 495 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 506 base::TimeTicks start = base::TimeTicks::Now(); | 506 base::TimeTicks start = base::TimeTicks::Now(); |
| 507 selection_requestor_.PerformBlockingConvertSelectionWithParameter( | 507 selection_requestor_.PerformBlockingConvertSelectionWithParameter( |
| 508 atom_cache_.GetAtom(kClipboardManager), | 508 atom_cache_.GetAtom(kClipboardManager), |
| 509 atom_cache_.GetAtom(kSaveTargets), | 509 atom_cache_.GetAtom(kSaveTargets), |
| 510 targets); | 510 targets); |
| 511 UMA_HISTOGRAM_TIMES("Clipboard.X11StoreCopyPasteDuration", | 511 UMA_HISTOGRAM_TIMES("Clipboard.X11StoreCopyPasteDuration", |
| 512 base::TimeTicks::Now() - start); | 512 base::TimeTicks::Now() - start); |
| 513 } | 513 } |
| 514 | 514 |
| 515 bool Clipboard::AuraX11Details::CanDispatchEvent(const PlatformEvent& event) { | 515 bool Clipboard::AuraX11Details::CanDispatchEvent(const PlatformEvent& event) { |
| 516 return event->xany.window == x_window_; | 516 if (event->xany.window == x_window_) |
| 517 return true; |
| 518 |
| 519 if (event->type == PropertyNotify) { |
| 520 return primary_owner_.CanDispatchPropertyEvent(*event) || |
| 521 clipboard_owner_.CanDispatchPropertyEvent(*event) || |
| 522 selection_requestor_.CanDispatchPropertyEvent(*event); |
| 523 } |
| 524 return false; |
| 517 } | 525 } |
| 518 | 526 |
| 519 uint32_t Clipboard::AuraX11Details::DispatchEvent(const PlatformEvent& xev) { | 527 uint32_t Clipboard::AuraX11Details::DispatchEvent(const PlatformEvent& xev) { |
| 520 switch (xev->type) { | 528 switch (xev->type) { |
| 521 case SelectionRequest: { | 529 case SelectionRequest: { |
| 522 if (xev->xselectionrequest.selection == XA_PRIMARY) { | 530 if (xev->xselectionrequest.selection == XA_PRIMARY) { |
| 523 primary_owner_.OnSelectionRequest(*xev); | 531 primary_owner_.OnSelectionRequest(*xev); |
| 524 } else { | 532 } else { |
| 525 // We should not get requests for the CLIPBOARD_MANAGER selection | 533 // We should not get requests for the CLIPBOARD_MANAGER selection |
| 526 // because we never take ownership of it. | 534 // because we never take ownership of it. |
| (...skipping 10 matching lines...) Expand all Loading... |
| 537 if (xev->xselectionclear.selection == XA_PRIMARY) { | 545 if (xev->xselectionclear.selection == XA_PRIMARY) { |
| 538 primary_owner_.OnSelectionClear(*xev); | 546 primary_owner_.OnSelectionClear(*xev); |
| 539 } else { | 547 } else { |
| 540 // We should not get requests for the CLIPBOARD_MANAGER selection | 548 // We should not get requests for the CLIPBOARD_MANAGER selection |
| 541 // because we never take ownership of it. | 549 // because we never take ownership of it. |
| 542 DCHECK_EQ(GetCopyPasteSelection(), xev->xselection.selection); | 550 DCHECK_EQ(GetCopyPasteSelection(), xev->xselection.selection); |
| 543 clipboard_owner_.OnSelectionClear(*xev); | 551 clipboard_owner_.OnSelectionClear(*xev); |
| 544 } | 552 } |
| 545 break; | 553 break; |
| 546 } | 554 } |
| 555 case PropertyNotify: { |
| 556 if (primary_owner_.CanDispatchPropertyEvent(*xev)) |
| 557 primary_owner_.OnPropertyEvent(*xev); |
| 558 if (clipboard_owner_.CanDispatchPropertyEvent(*xev)) |
| 559 clipboard_owner_.OnPropertyEvent(*xev); |
| 560 if (selection_requestor_.CanDispatchPropertyEvent(*xev)) |
| 561 selection_requestor_.OnPropertyEvent(*xev); |
| 562 break; |
| 563 } |
| 547 default: | 564 default: |
| 548 break; | 565 break; |
| 549 } | 566 } |
| 550 | 567 |
| 551 return POST_DISPATCH_NONE; | 568 return POST_DISPATCH_NONE; |
| 552 } | 569 } |
| 553 | 570 |
| 554 /////////////////////////////////////////////////////////////////////////////// | 571 /////////////////////////////////////////////////////////////////////////////// |
| 555 // Clipboard | 572 // Clipboard |
| 556 | 573 |
| (...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 894 return type; | 911 return type; |
| 895 } | 912 } |
| 896 | 913 |
| 897 // static | 914 // static |
| 898 const Clipboard::FormatType& Clipboard::GetPepperCustomDataFormatType() { | 915 const Clipboard::FormatType& Clipboard::GetPepperCustomDataFormatType() { |
| 899 CR_DEFINE_STATIC_LOCAL(FormatType, type, (kMimeTypePepperCustomData)); | 916 CR_DEFINE_STATIC_LOCAL(FormatType, type, (kMimeTypePepperCustomData)); |
| 900 return type; | 917 return type; |
| 901 } | 918 } |
| 902 | 919 |
| 903 } // namespace ui | 920 } // namespace ui |
| OLD | NEW |