aboutsummaryrefslogtreecommitdiffstats
path: root/components/layout/text.rs
diff options
context:
space:
mode:
authorJon Leighton <j@jonathanleighton.com>2018-02-12 12:18:53 +0100
committerJon Leighton <j@jonathanleighton.com>2018-02-22 16:36:09 +0100
commite4acb3f77f12e0d42fb8084dafbf5de59f7a1c1b (patch)
tree32b59e3a88fffc1226f6eae8e879a09fc0cf2317 /components/layout/text.rs
parentf22e5ef3bdef97daa7b38cf642f24766cab6c488 (diff)
downloadservo-e4acb3f77f12e0d42fb8084dafbf5de59f7a1c1b.tar.gz
servo-e4acb3f77f12e0d42fb8084dafbf5de59f7a1c1b.zip
Add test for FontContext/FontGroup functionality
Unfortunately, this required quite a bit of changes to the non-test code. That's because FontContext depends on a FontCacheThread, which in turn depends on a CoreResourceThread and therefore lots of other data structures. It seemed like it would be very difficult to instantiate a FontContext as it was, and even if we could it seems like overkill to have all these data structures present for a relatively focused test. Therefore, I created a FontSource trait which represents the interface which FontContext uses to talk to FontCacheThread. FontCacheThread then implements FontSource. Then, in the test, we can create a dummy implementation of FontSource rather than using FontCacheThread. This actually has the advantage that we can make our dummy implementation behave in certain specific way which are useful for testing, for example it can count the number of times find_font_template() is called, which helps us verify that caching/lazy-loading is working as intended.
Diffstat (limited to 'components/layout/text.rs')
-rw-r--r--components/layout/text.rs8
1 files changed, 4 insertions, 4 deletions
diff --git a/components/layout/text.rs b/components/layout/text.rs
index 1bfb1305ecb..71a5bcff158 100644
--- a/components/layout/text.rs
+++ b/components/layout/text.rs
@@ -7,10 +7,10 @@
#![deny(unsafe_code)]
use app_units::Au;
+use context::LayoutFontContext;
use fragment::{Fragment, ScannedTextFlags};
use fragment::{ScannedTextFragmentInfo, SpecificFragmentInfo, UnscannedTextFragmentInfo};
use gfx::font::{FontRef, FontMetrics, RunMetrics, ShapingFlags, ShapingOptions};
-use gfx::font_context::FontContext;
use gfx::text::glyph::ByteIndex;
use gfx::text::text_run::TextRun;
use gfx::text::util::{self, CompressionMode};
@@ -69,7 +69,7 @@ impl TextRunScanner {
}
pub fn scan_for_runs(&mut self,
- font_context: &mut FontContext,
+ font_context: &mut LayoutFontContext,
mut fragments: LinkedList<Fragment>)
-> InlineFragments {
debug!("TextRunScanner: scanning {} fragments for text runs...", fragments.len());
@@ -137,7 +137,7 @@ impl TextRunScanner {
/// for correct painting order. Since we compress several leaf fragments here, the mapping must
/// be adjusted.
fn flush_clump_to_list(&mut self,
- mut font_context: &mut FontContext,
+ mut font_context: &mut LayoutFontContext,
out_fragments: &mut Vec<Fragment>,
paragraph_bytes_processed: &mut usize,
bidi_levels: Option<&[bidi::Level]>,
@@ -463,7 +463,7 @@ fn bounding_box_for_run_metrics(metrics: &RunMetrics, writing_mode: WritingMode)
///
/// Panics if no font can be found for the given font style.
#[inline]
-pub fn font_metrics_for_style(mut font_context: &mut FontContext, style: ::ServoArc<FontStyleStruct>)
+pub fn font_metrics_for_style(mut font_context: &mut LayoutFontContext, style: ::ServoArc<FontStyleStruct>)
-> FontMetrics {
let font_group = font_context.font_group(style);
let font = font_group.borrow_mut().first(&mut font_context);