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

Side by Side Diff: content/browser/renderer_host/render_widget_host_view_mac.mm

Issue 24012002: Move Range code to gfx. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: d Created 7 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 | Annotate | Revision Log
OLDNEW
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 "content/browser/renderer_host/render_widget_host_view_mac.h" 5 #include "content/browser/renderer_host/render_widget_host_view_mac.h"
6 6
7 #import <objc/runtime.h> 7 #import <objc/runtime.h>
8 #include <QuartzCore/QuartzCore.h> 8 #include <QuartzCore/QuartzCore.h>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 913 matching lines...) Expand 10 before | Expand all | Expand 10 after
924 #endif 924 #endif
925 } 925 }
926 } 926 }
927 } 927 }
928 928
929 void RenderWidgetHostViewMac::ImeCancelComposition() { 929 void RenderWidgetHostViewMac::ImeCancelComposition() {
930 [cocoa_view_ cancelComposition]; 930 [cocoa_view_ cancelComposition];
931 } 931 }
932 932
933 void RenderWidgetHostViewMac::ImeCompositionRangeChanged( 933 void RenderWidgetHostViewMac::ImeCompositionRangeChanged(
934 const ui::Range& range, 934 const gfx::Range& range,
935 const std::vector<gfx::Rect>& character_bounds) { 935 const std::vector<gfx::Rect>& character_bounds) {
936 // The RangeChanged message is only sent with valid values. The current 936 // The RangeChanged message is only sent with valid values. The current
937 // caret position (start == end) will be sent if there is no IME range. 937 // caret position (start == end) will be sent if there is no IME range.
938 [cocoa_view_ setMarkedRange:range.ToNSRange()]; 938 [cocoa_view_ setMarkedRange:range.ToNSRange()];
939 composition_range_ = range; 939 composition_range_ = range;
940 composition_bounds_ = character_bounds; 940 composition_bounds_ = character_bounds;
941 } 941 }
942 942
943 void RenderWidgetHostViewMac::DidUpdateBackingStore( 943 void RenderWidgetHostViewMac::DidUpdateBackingStore(
944 const gfx::Rect& scroll_rect, 944 const gfx::Rect& scroll_rect,
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
1068 if ([NSApp respondsToSelector:@selector(stopSpeaking:)]) 1068 if ([NSApp respondsToSelector:@selector(stopSpeaking:)])
1069 [NSApp stopSpeaking:cocoa_view_]; 1069 [NSApp stopSpeaking:cocoa_view_];
1070 } 1070 }
1071 1071
1072 // 1072 //
1073 // RenderWidgetHostViewCocoa uses the stored selection text, 1073 // RenderWidgetHostViewCocoa uses the stored selection text,
1074 // which implements NSServicesRequests protocol. 1074 // which implements NSServicesRequests protocol.
1075 // 1075 //
1076 void RenderWidgetHostViewMac::SelectionChanged(const string16& text, 1076 void RenderWidgetHostViewMac::SelectionChanged(const string16& text,
1077 size_t offset, 1077 size_t offset,
1078 const ui::Range& range) { 1078 const gfx::Range& range) {
1079 if (range.is_empty() || text.empty()) { 1079 if (range.is_empty() || text.empty()) {
1080 selected_text_.clear(); 1080 selected_text_.clear();
1081 } else { 1081 } else {
1082 size_t pos = range.GetMin() - offset; 1082 size_t pos = range.GetMin() - offset;
1083 size_t n = range.length(); 1083 size_t n = range.length();
1084 1084
1085 DCHECK(pos + n <= text.length()) << "The text can not fully cover range."; 1085 DCHECK(pos + n <= text.length()) << "The text can not fully cover range.";
1086 if (pos >= text.length()) { 1086 if (pos >= text.length()) {
1087 DCHECK(false) << "The text can not cover range."; 1087 DCHECK(false) << "The text can not cover range.";
1088 return; 1088 return;
(...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after
1479 // Pass reasonable default values if unable to get the actual ones 1479 // Pass reasonable default values if unable to get the actual ones
1480 // (e.g. CVDisplayLink failed to return them because the display is 1480 // (e.g. CVDisplayLink failed to return them because the display is
1481 // in sleep mode). 1481 // in sleep mode).
1482 static const int64 kOneOverSixtyMicroseconds = 16669; 1482 static const int64 kOneOverSixtyMicroseconds = 16669;
1483 *timebase = base::TimeTicks::Now(), 1483 *timebase = base::TimeTicks::Now(),
1484 *interval = base::TimeDelta::FromMicroseconds(kOneOverSixtyMicroseconds); 1484 *interval = base::TimeDelta::FromMicroseconds(kOneOverSixtyMicroseconds);
1485 } 1485 }
1486 1486
1487 bool RenderWidgetHostViewMac::GetLineBreakIndex( 1487 bool RenderWidgetHostViewMac::GetLineBreakIndex(
1488 const std::vector<gfx::Rect>& bounds, 1488 const std::vector<gfx::Rect>& bounds,
1489 const ui::Range& range, 1489 const gfx::Range& range,
1490 size_t* line_break_point) { 1490 size_t* line_break_point) {
1491 DCHECK(line_break_point); 1491 DCHECK(line_break_point);
1492 if (range.start() >= bounds.size() || range.is_reversed() || range.is_empty()) 1492 if (range.start() >= bounds.size() || range.is_reversed() || range.is_empty())
1493 return false; 1493 return false;
1494 1494
1495 // We can't check line breaking completely from only rectangle array. Thus we 1495 // We can't check line breaking completely from only rectangle array. Thus we
1496 // assume the line breaking as the next character's y offset is larger than 1496 // assume the line breaking as the next character's y offset is larger than
1497 // a threshold. Currently the threshold is determined as minimum y offset plus 1497 // a threshold. Currently the threshold is determined as minimum y offset plus
1498 // 75% of maximum height. 1498 // 75% of maximum height.
1499 // TODO(nona): Check the threshold is reliable or not. 1499 // TODO(nona): Check the threshold is reliable or not.
1500 // TODO(nona): Bidi support. 1500 // TODO(nona): Bidi support.
1501 const size_t loop_end_idx = std::min(bounds.size(), range.end()); 1501 const size_t loop_end_idx = std::min(bounds.size(), range.end());
1502 int max_height = 0; 1502 int max_height = 0;
1503 int min_y_offset = kint32max; 1503 int min_y_offset = kint32max;
1504 for (size_t idx = range.start(); idx < loop_end_idx; ++idx) { 1504 for (size_t idx = range.start(); idx < loop_end_idx; ++idx) {
1505 max_height = std::max(max_height, bounds[idx].height()); 1505 max_height = std::max(max_height, bounds[idx].height());
1506 min_y_offset = std::min(min_y_offset, bounds[idx].y()); 1506 min_y_offset = std::min(min_y_offset, bounds[idx].y());
1507 } 1507 }
1508 int line_break_threshold = min_y_offset + (max_height * 3 / 4); 1508 int line_break_threshold = min_y_offset + (max_height * 3 / 4);
1509 for (size_t idx = range.start(); idx < loop_end_idx; ++idx) { 1509 for (size_t idx = range.start(); idx < loop_end_idx; ++idx) {
1510 if (bounds[idx].y() > line_break_threshold) { 1510 if (bounds[idx].y() > line_break_threshold) {
1511 *line_break_point = idx; 1511 *line_break_point = idx;
1512 return true; 1512 return true;
1513 } 1513 }
1514 } 1514 }
1515 return false; 1515 return false;
1516 } 1516 }
1517 1517
1518 gfx::Rect RenderWidgetHostViewMac::GetFirstRectForCompositionRange( 1518 gfx::Rect RenderWidgetHostViewMac::GetFirstRectForCompositionRange(
1519 const ui::Range& range, 1519 const gfx::Range& range,
1520 ui::Range* actual_range) { 1520 gfx::Range* actual_range) {
1521 DCHECK(actual_range); 1521 DCHECK(actual_range);
1522 DCHECK(!composition_bounds_.empty()); 1522 DCHECK(!composition_bounds_.empty());
1523 DCHECK(range.start() <= composition_bounds_.size()); 1523 DCHECK(range.start() <= composition_bounds_.size());
1524 DCHECK(range.end() <= composition_bounds_.size()); 1524 DCHECK(range.end() <= composition_bounds_.size());
1525 1525
1526 if (range.is_empty()) { 1526 if (range.is_empty()) {
1527 *actual_range = range; 1527 *actual_range = range;
1528 if (range.start() == composition_bounds_.size()) { 1528 if (range.start() == composition_bounds_.size()) {
1529 return gfx::Rect(composition_bounds_[range.start() - 1].right(), 1529 return gfx::Rect(composition_bounds_[range.start() - 1].right(),
1530 composition_bounds_[range.start() - 1].y(), 1530 composition_bounds_[range.start() - 1].y(),
1531 0, 1531 0,
1532 composition_bounds_[range.start() - 1].height()); 1532 composition_bounds_[range.start() - 1].height());
1533 } else { 1533 } else {
1534 return gfx::Rect(composition_bounds_[range.start()].x(), 1534 return gfx::Rect(composition_bounds_[range.start()].x(),
1535 composition_bounds_[range.start()].y(), 1535 composition_bounds_[range.start()].y(),
1536 0, 1536 0,
1537 composition_bounds_[range.start()].height()); 1537 composition_bounds_[range.start()].height());
1538 } 1538 }
1539 } 1539 }
1540 1540
1541 size_t end_idx; 1541 size_t end_idx;
1542 if (!GetLineBreakIndex(composition_bounds_, range, &end_idx)) { 1542 if (!GetLineBreakIndex(composition_bounds_, range, &end_idx)) {
1543 end_idx = range.end(); 1543 end_idx = range.end();
1544 } 1544 }
1545 *actual_range = ui::Range(range.start(), end_idx); 1545 *actual_range = gfx::Range(range.start(), end_idx);
1546 gfx::Rect rect = composition_bounds_[range.start()]; 1546 gfx::Rect rect = composition_bounds_[range.start()];
1547 for (size_t i = range.start() + 1; i < end_idx; ++i) { 1547 for (size_t i = range.start() + 1; i < end_idx; ++i) {
1548 rect.Union(composition_bounds_[i]); 1548 rect.Union(composition_bounds_[i]);
1549 } 1549 }
1550 return rect; 1550 return rect;
1551 } 1551 }
1552 1552
1553 ui::Range RenderWidgetHostViewMac::ConvertCharacterRangeToCompositionRange( 1553 gfx::Range RenderWidgetHostViewMac::ConvertCharacterRangeToCompositionRange(
1554 const ui::Range& request_range) { 1554 const gfx::Range& request_range) {
1555 if (composition_range_.is_empty()) 1555 if (composition_range_.is_empty())
1556 return ui::Range::InvalidRange(); 1556 return gfx::Range::InvalidRange();
1557 1557
1558 if (request_range.is_reversed()) 1558 if (request_range.is_reversed())
1559 return ui::Range::InvalidRange(); 1559 return gfx::Range::InvalidRange();
1560 1560
1561 if (request_range.start() < composition_range_.start() || 1561 if (request_range.start() < composition_range_.start() ||
1562 request_range.start() > composition_range_.end() || 1562 request_range.start() > composition_range_.end() ||
1563 request_range.end() > composition_range_.end()) { 1563 request_range.end() > composition_range_.end()) {
1564 return ui::Range::InvalidRange(); 1564 return gfx::Range::InvalidRange();
1565 } 1565 }
1566 1566
1567 return ui::Range( 1567 return gfx::Range(
1568 request_range.start() - composition_range_.start(), 1568 request_range.start() - composition_range_.start(),
1569 request_range.end() - composition_range_.start()); 1569 request_range.end() - composition_range_.start());
1570 } 1570 }
1571 1571
1572 bool RenderWidgetHostViewMac::GetCachedFirstRectForCharacterRange( 1572 bool RenderWidgetHostViewMac::GetCachedFirstRectForCharacterRange(
1573 NSRange range, 1573 NSRange range,
1574 NSRect* rect, 1574 NSRect* rect,
1575 NSRange* actual_range) { 1575 NSRange* actual_range) {
1576 DCHECK(rect); 1576 DCHECK(rect);
1577 // This exists to make IMEs more responsive, see http://crbug.com/115920 1577 // This exists to make IMEs more responsive, see http://crbug.com/115920
1578 TRACE_EVENT0("browser", 1578 TRACE_EVENT0("browser",
1579 "RenderWidgetHostViewMac::GetFirstRectForCharacterRange"); 1579 "RenderWidgetHostViewMac::GetFirstRectForCharacterRange");
1580 1580
1581 // If requested range is same as caret location, we can just return it. 1581 // If requested range is same as caret location, we can just return it.
1582 if (selection_range_.is_empty() && ui::Range(range) == selection_range_) { 1582 if (selection_range_.is_empty() && gfx::Range(range) == selection_range_) {
1583 if (actual_range) 1583 if (actual_range)
1584 *actual_range = range; 1584 *actual_range = range;
1585 *rect = NSRectFromCGRect(caret_rect_.ToCGRect()); 1585 *rect = NSRectFromCGRect(caret_rect_.ToCGRect());
1586 return true; 1586 return true;
1587 } 1587 }
1588 1588
1589 const ui::Range request_range_in_composition = 1589 const gfx::Range request_range_in_composition =
1590 ConvertCharacterRangeToCompositionRange(ui::Range(range)); 1590 ConvertCharacterRangeToCompositionRange(gfx::Range(range));
1591 if (request_range_in_composition == ui::Range::InvalidRange()) 1591 if (request_range_in_composition == gfx::Range::InvalidRange())
1592 return false; 1592 return false;
1593 1593
1594 // If firstRectForCharacterRange in WebFrame is failed in renderer, 1594 // If firstRectForCharacterRange in WebFrame is failed in renderer,
1595 // ImeCompositionRangeChanged will be sent with empty vector. 1595 // ImeCompositionRangeChanged will be sent with empty vector.
1596 if (composition_bounds_.empty()) 1596 if (composition_bounds_.empty())
1597 return false; 1597 return false;
1598 DCHECK_EQ(composition_bounds_.size(), composition_range_.length()); 1598 DCHECK_EQ(composition_bounds_.size(), composition_range_.length());
1599 1599
1600 ui::Range ui_actual_range; 1600 gfx::Range ui_actual_range;
1601 *rect = NSRectFromCGRect(GetFirstRectForCompositionRange( 1601 *rect = NSRectFromCGRect(GetFirstRectForCompositionRange(
1602 request_range_in_composition, 1602 request_range_in_composition,
1603 &ui_actual_range).ToCGRect()); 1603 &ui_actual_range).ToCGRect());
1604 if (actual_range) { 1604 if (actual_range) {
1605 *actual_range = ui::Range( 1605 *actual_range = gfx::Range(
1606 composition_range_.start() + ui_actual_range.start(), 1606 composition_range_.start() + ui_actual_range.start(),
1607 composition_range_.start() + ui_actual_range.end()).ToNSRange(); 1607 composition_range_.start() + ui_actual_range.end()).ToNSRange();
1608 } 1608 }
1609 return true; 1609 return true;
1610 } 1610 }
1611 1611
1612 void RenderWidgetHostViewMac::AcceleratedSurfaceBuffersSwapped( 1612 void RenderWidgetHostViewMac::AcceleratedSurfaceBuffersSwapped(
1613 const GpuHostMsg_AcceleratedSurfaceBuffersSwapped_Params& params, 1613 const GpuHostMsg_AcceleratedSurfaceBuffersSwapped_Params& params,
1614 int gpu_host_id) { 1614 int gpu_host_id) {
1615 TRACE_EVENT0("browser", 1615 TRACE_EVENT0("browser",
(...skipping 707 matching lines...) Expand 10 before | Expand all | Expand 10 after
2323 // the keydown event, so that we can retain all necessary informations, such 2323 // the keydown event, so that we can retain all necessary informations, such
2324 // as unmodifiedText, etc. And we need to set event.skip_in_browser to true to 2324 // as unmodifiedText, etc. And we need to set event.skip_in_browser to true to
2325 // prevent the browser from handling it again. 2325 // prevent the browser from handling it again.
2326 // Note that, |textToBeInserted_| is a UTF-16 string, but it's fine to only 2326 // Note that, |textToBeInserted_| is a UTF-16 string, but it's fine to only
2327 // handle BMP characters here, as we can always insert non-BMP characters as 2327 // handle BMP characters here, as we can always insert non-BMP characters as
2328 // text. 2328 // text.
2329 BOOL textInserted = NO; 2329 BOOL textInserted = NO;
2330 if (textToBeInserted_.length() > 2330 if (textToBeInserted_.length() >
2331 ((hasMarkedText_ || oldHasMarkedText) ? 0u : 1u)) { 2331 ((hasMarkedText_ || oldHasMarkedText) ? 0u : 1u)) {
2332 widgetHost->ImeConfirmComposition( 2332 widgetHost->ImeConfirmComposition(
2333 textToBeInserted_, ui::Range::InvalidRange(), false); 2333 textToBeInserted_, gfx::Range::InvalidRange(), false);
2334 textInserted = YES; 2334 textInserted = YES;
2335 } 2335 }
2336 2336
2337 // Updates or cancels the composition. If some text has been inserted, then 2337 // Updates or cancels the composition. If some text has been inserted, then
2338 // we don't need to cancel the composition explicitly. 2338 // we don't need to cancel the composition explicitly.
2339 if (hasMarkedText_ && markedText_.length()) { 2339 if (hasMarkedText_ && markedText_.length()) {
2340 // Sends the updated marked text to the renderer so it can update the 2340 // Sends the updated marked text to the renderer so it can update the
2341 // composition node in WebKit. 2341 // composition node in WebKit.
2342 // When marked text is available, |selectedRange_| will be the range being 2342 // When marked text is available, |selectedRange_| will be the range being
2343 // selected inside the marked text. 2343 // selected inside the marked text.
2344 widgetHost->ImeSetComposition(markedText_, underlines_, 2344 widgetHost->ImeSetComposition(markedText_, underlines_,
2345 selectedRange_.location, 2345 selectedRange_.location,
2346 NSMaxRange(selectedRange_)); 2346 NSMaxRange(selectedRange_));
2347 } else if (oldHasMarkedText && !hasMarkedText_ && !textInserted) { 2347 } else if (oldHasMarkedText && !hasMarkedText_ && !textInserted) {
2348 if (unmarkTextCalled_) { 2348 if (unmarkTextCalled_) {
2349 widgetHost->ImeConfirmComposition( 2349 widgetHost->ImeConfirmComposition(
2350 string16(), ui::Range::InvalidRange(), false); 2350 string16(), gfx::Range::InvalidRange(), false);
2351 } else { 2351 } else {
2352 widgetHost->ImeCancelComposition(); 2352 widgetHost->ImeCancelComposition();
2353 } 2353 }
2354 } 2354 }
2355 2355
2356 // If the key event was handled by the input method but it also generated some 2356 // If the key event was handled by the input method but it also generated some
2357 // edit commands, then we need to send the real key event and corresponding 2357 // edit commands, then we need to send the real key event and corresponding
2358 // edit commands here. This usually occurs when the input method wants to 2358 // edit commands here. This usually occurs when the input method wants to
2359 // finish current composition session but still wants the application to 2359 // finish current composition session but still wants the application to
2360 // handle the key event. See http://crbug.com/48161 for reference. 2360 // handle the key event. See http://crbug.com/48161 for reference.
(...skipping 1059 matching lines...) Expand 10 before | Expand all | Expand 10 after
3420 // text when it cancels an ongoing composition, i.e. I have never seen an 3420 // text when it cancels an ongoing composition, i.e. I have never seen an
3421 // input method calls this method. 3421 // input method calls this method.
3422 hasMarkedText_ = NO; 3422 hasMarkedText_ = NO;
3423 markedText_.clear(); 3423 markedText_.clear();
3424 underlines_.clear(); 3424 underlines_.clear();
3425 3425
3426 // If we are handling a key down event, then ConfirmComposition() will be 3426 // If we are handling a key down event, then ConfirmComposition() will be
3427 // called in keyEvent: method. 3427 // called in keyEvent: method.
3428 if (!handlingKeyDown_) { 3428 if (!handlingKeyDown_) {
3429 renderWidgetHostView_->render_widget_host_->ImeConfirmComposition( 3429 renderWidgetHostView_->render_widget_host_->ImeConfirmComposition(
3430 string16(), ui::Range::InvalidRange(), false); 3430 string16(), gfx::Range::InvalidRange(), false);
3431 } else { 3431 } else {
3432 unmarkTextCalled_ = YES; 3432 unmarkTextCalled_ = YES;
3433 } 3433 }
3434 } 3434 }
3435 3435
3436 - (void)setMarkedText:(id)string selectedRange:(NSRange)newSelRange 3436 - (void)setMarkedText:(id)string selectedRange:(NSRange)newSelRange
3437 replacementRange:(NSRange)replacementRange { 3437 replacementRange:(NSRange)replacementRange {
3438 // An input method updates the composition string. 3438 // An input method updates the composition string.
3439 // We send the given text and range to the renderer so it can update the 3439 // We send the given text and range to the renderer so it can update the
3440 // composition node of WebKit. 3440 // composition node of WebKit.
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
3513 // Text inserting might be initiated by other source instead of keyboard 3513 // Text inserting might be initiated by other source instead of keyboard
3514 // events, such as the Characters dialog. In this case the text should be 3514 // events, such as the Characters dialog. In this case the text should be
3515 // sent as an input method event as well. 3515 // sent as an input method event as well.
3516 // TODO(suzhe): It's hard for us to support replacementRange without accessing 3516 // TODO(suzhe): It's hard for us to support replacementRange without accessing
3517 // the full web content. 3517 // the full web content.
3518 BOOL isAttributedString = [string isKindOfClass:[NSAttributedString class]]; 3518 BOOL isAttributedString = [string isKindOfClass:[NSAttributedString class]];
3519 NSString* im_text = isAttributedString ? [string string] : string; 3519 NSString* im_text = isAttributedString ? [string string] : string;
3520 if (handlingKeyDown_) { 3520 if (handlingKeyDown_) {
3521 textToBeInserted_.append(base::SysNSStringToUTF16(im_text)); 3521 textToBeInserted_.append(base::SysNSStringToUTF16(im_text));
3522 } else { 3522 } else {
3523 ui::Range replacement_range(replacementRange); 3523 gfx::Range replacement_range(replacementRange);
3524 renderWidgetHostView_->render_widget_host_->ImeConfirmComposition( 3524 renderWidgetHostView_->render_widget_host_->ImeConfirmComposition(
3525 base::SysNSStringToUTF16(im_text), replacement_range, false); 3525 base::SysNSStringToUTF16(im_text), replacement_range, false);
3526 } 3526 }
3527 3527
3528 // Inserting text will delete all marked text automatically. 3528 // Inserting text will delete all marked text automatically.
3529 hasMarkedText_ = NO; 3529 hasMarkedText_ = NO;
3530 } 3530 }
3531 3531
3532 - (void)insertText:(id)string { 3532 - (void)insertText:(id)string {
3533 [self insertText:string replacementRange:NSMakeRange(NSNotFound, 0)]; 3533 [self insertText:string replacementRange:NSMakeRange(NSNotFound, 0)];
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
3658 // Should not call [self unmarkText] here, because it'll send unnecessary 3658 // Should not call [self unmarkText] here, because it'll send unnecessary
3659 // cancel composition IPC message to the renderer. 3659 // cancel composition IPC message to the renderer.
3660 } 3660 }
3661 3661
3662 - (void)confirmComposition { 3662 - (void)confirmComposition {
3663 if (!hasMarkedText_) 3663 if (!hasMarkedText_)
3664 return; 3664 return;
3665 3665
3666 if (renderWidgetHostView_->render_widget_host_) 3666 if (renderWidgetHostView_->render_widget_host_)
3667 renderWidgetHostView_->render_widget_host_->ImeConfirmComposition( 3667 renderWidgetHostView_->render_widget_host_->ImeConfirmComposition(
3668 string16(), ui::Range::InvalidRange(), false); 3668 string16(), gfx::Range::InvalidRange(), false);
3669 3669
3670 [self cancelComposition]; 3670 [self cancelComposition];
3671 } 3671 }
3672 3672
3673 - (void)setPluginImeActive:(BOOL)active { 3673 - (void)setPluginImeActive:(BOOL)active {
3674 if (active == pluginImeActive_) 3674 if (active == pluginImeActive_)
3675 return; 3675 return;
3676 3676
3677 pluginImeActive_ = active; 3677 pluginImeActive_ = active;
3678 if (!active) { 3678 if (!active) {
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
3846 return YES; 3846 return YES;
3847 } 3847 }
3848 3848
3849 - (BOOL)isOpaque { 3849 - (BOOL)isOpaque {
3850 if (renderWidgetHostView_->use_core_animation_) 3850 if (renderWidgetHostView_->use_core_animation_)
3851 return YES; 3851 return YES;
3852 return [super isOpaque]; 3852 return [super isOpaque];
3853 } 3853 }
3854 3854
3855 @end 3855 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698