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

Unified Diff: chrome/common/attributed_string_coder_mac.mm

Issue 7691001: Move Mac-specific files in chrome/common to chrome/common/mac (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/common/attributed_string_coder_mac.h ('k') | chrome/common/attributed_string_coder_mac_unittest.mm » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/common/attributed_string_coder_mac.mm
===================================================================
--- chrome/common/attributed_string_coder_mac.mm (revision 97454)
+++ chrome/common/attributed_string_coder_mac.mm (working copy)
@@ -1,171 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/common/attributed_string_coder_mac.h"
-
-#include <AppKit/AppKit.h>
-
-#include "base/logging.h"
-#include "base/memory/scoped_nsobject.h"
-#include "base/sys_string_conversions.h"
-#include "base/utf_string_conversions.h"
-#include "content/common/common_param_traits.h"
-#include "content/common/view_messages.h"
-#include "ipc/ipc_message_utils.h"
-
-namespace mac {
-
-// static
-const AttributedStringCoder::EncodedString* AttributedStringCoder::Encode(
- NSAttributedString* str) {
- // Create the return value.
- EncodedString* encoded_string =
- new EncodedString(base::SysNSStringToUTF16([str string]));
- // Iterate over all the attributes in the string.
- NSUInteger length = [str length];
- for (NSUInteger i = 0; i < length; ) {
- NSRange effective_range;
- NSDictionary* ns_attributes = [str attributesAtIndex:i
- effectiveRange:&effective_range];
- // Convert the attributes to IPC-friendly types.
- FontAttribute attrs(ns_attributes, ui::Range(effective_range));
- // Only encode the attributes if the filtered set contains font information.
- if (attrs.ShouldEncode()) {
- encoded_string->attributes()->push_back(attrs);
- }
- // Advance the iterator to the position outside of the effective range.
- i = NSMaxRange(effective_range);
- }
- return encoded_string;
-}
-
-// static
-NSAttributedString* AttributedStringCoder::Decode(
- const AttributedStringCoder::EncodedString* str) {
- // Create the return value.
- NSString* plain_text = base::SysUTF16ToNSString(str->string());
- scoped_nsobject<NSMutableAttributedString> decoded_string(
- [[NSMutableAttributedString alloc] initWithString:plain_text]);
- // Iterate over all the encoded attributes, attaching each to the string.
- const std::vector<FontAttribute> attributes = str->attributes();
- for (std::vector<FontAttribute>::const_iterator it = attributes.begin();
- it != attributes.end(); ++it) {
- // Protect against ranges that are outside the range of the string.
- const ui::Range& range = it->effective_range();
- if (range.GetMin() > [plain_text length] ||
- range.GetMax() > [plain_text length]) {
- continue;
- }
- [decoded_string addAttributes:it->ToAttributesDictionary()
- range:range.ToNSRange()];
- }
- return [decoded_string.release() autorelease];
-}
-
-// Data Types //////////////////////////////////////////////////////////////////
-
-AttributedStringCoder::EncodedString::EncodedString(string16 string)
- : string_(string) {
-}
-
-AttributedStringCoder::EncodedString::EncodedString()
- : string_() {
-}
-
-AttributedStringCoder::EncodedString::~EncodedString() {
-}
-
-AttributedStringCoder::FontAttribute::FontAttribute(NSDictionary* dict,
- ui::Range effective_range)
- : font_descriptor_(),
- effective_range_(effective_range) {
- NSFont* font = [dict objectForKey:NSFontAttributeName];
- if (font) {
- font_descriptor_ = FontDescriptor(font);
- }
-}
-
-AttributedStringCoder::FontAttribute::FontAttribute(FontDescriptor font,
- ui::Range range)
- : font_descriptor_(font),
- effective_range_(range) {
-}
-
-AttributedStringCoder::FontAttribute::FontAttribute()
- : font_descriptor_(),
- effective_range_() {
-}
-
-AttributedStringCoder::FontAttribute::~FontAttribute() {
-}
-
-NSDictionary* AttributedStringCoder::FontAttribute::ToAttributesDictionary(
- void) const {
- DCHECK(ShouldEncode());
- NSFont* font = font_descriptor_.ToNSFont();
- return [NSDictionary dictionaryWithObject:font forKey:NSFontAttributeName];
-}
-
-bool AttributedStringCoder::FontAttribute::ShouldEncode() const {
- return !font_descriptor_.font_name.empty();
-}
-
-} // namespace mac
-
-// IPC ParamTraits specialization //////////////////////////////////////////////
-
-namespace IPC {
-
-using mac::AttributedStringCoder;
-
-void ParamTraits<AttributedStringCoder::EncodedString>::Write(
- Message* m, const param_type& p) {
- WriteParam(m, p.string());
- WriteParam(m, p.attributes());
-}
-
-bool ParamTraits<AttributedStringCoder::EncodedString>::Read(
- const Message* m, void** iter, param_type* p) {
- bool success = true;
-
- string16 result;
- success &= ReadParam(m, iter, &result);
- *p = AttributedStringCoder::EncodedString(result);
-
- success &= ReadParam(m, iter, p->attributes());
- return success;
-}
-
-void ParamTraits<AttributedStringCoder::EncodedString>::Log(
- const param_type& p, std::string* l) {
- l->append(UTF16ToUTF8(p.string()));
-}
-
-void ParamTraits<AttributedStringCoder::FontAttribute>::Write(
- Message* m, const param_type& p) {
- WriteParam(m, p.font_descriptor());
- WriteParam(m, p.effective_range());
-}
-
-bool ParamTraits<AttributedStringCoder::FontAttribute>::Read(
- const Message* m, void** iter, param_type* p) {
- bool success = true;
-
- FontDescriptor font;
- success &= ReadParam(m, iter, &font);
-
- ui::Range range;
- success &= ReadParam(m, iter, &range);
-
- if (success) {
- *p = AttributedStringCoder::FontAttribute(font, range);
- }
- return success;
-}
-
-void ParamTraits<AttributedStringCoder::FontAttribute>::Log(
- const param_type& p, std::string* l) {
-}
-
-} // namespace IPC
« no previous file with comments | « chrome/common/attributed_string_coder_mac.h ('k') | chrome/common/attributed_string_coder_mac_unittest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698