Commit graph

4572 commits

Author SHA1 Message Date
Brendan Zabarauskas
1f7963e86b Refactor font metric calculation
This splits out the advance calculation and makes it more declarative
2014-05-16 13:34:53 -07:00
Brendan Zabarauskas
868f7501c9 Remove extra split_to_width call
This does not seem to do anything, and according to @pcwalton it might be unnecessary. Float layout is rather broken anyway, and needs to be reworked.
2014-05-15 17:47:28 -07:00
Brendan Zabarauskas
d3dfb78683 Reorganise comments 2014-05-15 17:45:57 -07:00
Brendan Zabarauskas
16e2b131e7 Use CharIndex instead of GlyphIndex for LineIndices
All of the text run methods use character indices and the split_to_width function also uses character indices. Therefore it will be easier to use character indices to keep track of line breaks than glyph indices.
2014-05-15 17:40:44 -07:00
bors-servo
e5eac5b538 auto merge of #2443 : bjz/servo/linebox_range, r=pcwalton
Glyph indices are currently not tracked, once they are, they will allow us to implement faster line breaks in the future.

cc. @pcwalton
2014-05-15 18:37:37 -04:00
Brendan Zabarauskas
fccc5d2071 Add some debug assertions 2014-05-15 15:33:09 -07:00
Brendan Zabarauskas
f883c6238e Use a tuple of fragment and glyph indices as the index type for LineBoxes
Glyph indices are currently not tracked, once they are, they will allow us to implement faster line breaks in the future.
2014-05-15 14:27:19 -07:00
Brendan Zabarauskas
26e580bbdc Improve Range method documentation and field and parameter names 2014-05-15 10:48:48 -07:00
bors-servo
3ccc81b9dc auto merge of #2426 : bjwbell/servo/add-message-to-assert, r=pcwalton
If msttcorefonts isn't installed, output a more informative error message.

./servo ../src/test/html/about-mozilla.html prints
           "task 'LayoutWorker' failed at 'No matching font(s), are the appropriate fonts installed?',
            ../servo/src/components/gfx/font_context.rs:195"
vs. 
            "task 'LayoutWorker' failed at 'assertion failed: fonts.len() > 0',
            ../servo/src/components/gfx/font_context.rs:195"
2014-05-15 12:19:17 -04:00
bors-servo
51d1284c60 auto merge of #2435 : zwarich/servo/contravariant-lifetime, r=jdm
Since ContravariantLifetime doesn't take up any storage space, this
means that JSRef will be a single word. This fixes #2333.
2014-05-15 10:40:21 -04:00
bors-servo
9865fddbb6 auto merge of #2438 : bjwbell/servo/dotted-border, r=pcwalton
Basic support for dotted borders.
2014-05-15 00:40:25 -04:00
Bryan Bell
d570b80b6b Add dotted border support. 2014-05-14 18:59:27 -07:00
Brendan Zabarauskas
2e37b5e8fe Make RangeIndex trait more general 2014-05-14 15:41:00 -07:00
bors-servo
2785fcbce0 auto merge of #2436 : zwarich/servo/contravariant-lifetime-layout, r=pcwalton
Since ContravariantLifetime uses no storage, this will reduce the size of a LayoutNode from 3 words to 2.
2014-05-14 18:07:25 -04:00
Cameron Zwarich
e9a6430d88 Use ContravariantLifetime in LayoutNode.
Since ContravariantLifetime uses no storage, this will reduce the size
of a LayoutNode from 3 words to 2.
2014-05-14 14:59:34 -07:00
Cameron Zwarich
99a0dabc1a Don't check the field parameter in LayoutNode::eq.
The chain field shouldn't be relevant for equality, since it is just a
hack to artificially extend lifetimes.
2014-05-14 14:58:05 -07:00
Cameron Zwarich
b8d423d931 Switch to using ContravariantLifetime in JSRef<'a, T>.
Since ContravariantLifetime doesn't take up any storage space, this
means that JSRef will be a single word. This fixes #2333.
2014-05-14 14:13:58 -07:00
bors-servo
309c9db2ac auto merge of #2432 : SimonSapin/servo/remove-optnewvector, r=larsbergstrom
Before we had Vec<T>, Option<~[T]> was used as an optimization of ~[T] to avoid allocating for empty vectors when that was the common case. Vec<T> itself does this optimization, so there is no need for this anymore.

r? @larsbergstrom
2014-05-14 13:43:15 -04:00
Simon Sapin
d3a53296cd Remove OptNewVector and use Vec instead.
Before we had Vec<T>, Option<~[T]> was used as an optimization of ~[T]
to avoid allocating for empty vectors when that was the common case.
Vec<T> itself does this optimization, so there is no need for this anymore.
2014-05-14 16:14:23 +01:00
bors-servo
b4bbf546f4 auto merge of #2429 : Ms2ger/servo/page-clone, r=jdm 2014-05-14 10:37:42 -04:00
bors-servo
2168956a59 auto merge of #2430 : Manishearth/servo/patch-2, r=SimonSapin
I noticed that our CONTRIBUTING file doesn't link to the easy bugs, maybe it should?
2014-05-14 08:22:17 -04:00
Manish Goregaokar
51ca04766f Add a link to easy bugs 2014-05-14 17:36:38 +05:30
Ms2ger
44fb9eb28f Avoid unnecessary Rc clone in Window::new. 2014-05-14 12:26:24 +02:00
bors-servo
288550a2bf auto merge of #2428 : zwarich/servo/remove-add-html-element, r=jdm
We can just use the defaults for all of the HTML elements for now and
deal with the nonstandard behavior later. This fixes #2207.
2014-05-14 01:25:13 -04:00
bors-servo
049fa56fff auto merge of #2425 : saneyuki/servo/window_helper, r=jdm
Fix #2418
2014-05-14 00:55:17 -04:00
Cameron Zwarich
a44e9e8e6c Remove addHTMLElement from Bindings.conf.
We can just use the defaults for all of the HTML elements for now and
deal with the nonstandard behavior later. This fixes #2207.
2014-05-13 21:40:36 -07:00
bors-servo
48b1938ca3 auto merge of #2394 : Ms2ger/servo/instantiateJSToNativeConversionTemplate, r=jdm
This moves all the handling of optional arguments into `CGArgumentConverter`, and leaves `instantiateJSToNativeConversionTemplate` to only deal with the declaration of stack variables.
2014-05-14 00:25:17 -04:00
Tetsuharu OHZEKI
facffe0966 Move Window helper methods to a WindowHelpers trait 2014-05-14 13:14:29 +09:00
bors-servo
6871e4ccb6 auto merge of #2420 : Ms2ger/servo/merge-Page-PageTree, r=pcwalton 2014-05-13 23:52:21 -04:00
Bryan Bell
8162f61ba5 Add message to fonts.len() == 0 assert 2014-05-13 16:57:35 -07:00
bors-servo
6640f2edd8 auto merge of #2417 : Ms2ger/servo/scripttask-load-option-iter, r=pcwalton
...ad.
2014-05-13 17:43:47 -04:00
bors-servo
9fe115192a auto merge of #2389 : bjz/servo/indices, r=pcwalton
r? @pcwalton
2014-05-13 16:43:27 -04:00
Brendan Zabarauskas
2a7dd53021 Use fragment index type for referring to inline DOM fragments 2014-05-13 13:39:14 -07:00
Ms2ger
c437bacfc8 fixup! Use a match rather than a for loop for last_loaded_url in ScriptTask::load. 2014-05-13 19:52:25 +02:00
bors-servo
736098eeac auto merge of #2415 : Ms2ger/servo/find-all, r=jdm
...sg.
2014-05-13 13:49:31 -04:00
Ms2ger
1bf270d369 Merge Page and PageTree. 2014-05-13 18:27:24 +02:00
Ms2ger
1d464abb5a Use a match rather than a for loop for last_loaded_url in ScriptTask::load. 2014-05-13 15:48:32 +02:00
Ms2ger
dc1983adf7 Reuse Constellation::find_all in Constellation::handle_load_iframe_url_msg. 2014-05-13 13:03:41 +02:00
bors-servo
a9f08fd7c4 auto merge of #2414 : Ms2ger/servo/parser-attribute, r=SimonSapin 2014-05-13 06:55:19 -04:00
Ms2ger
cb9d875aef Handle all attributes coming from the HTML parser (fixes #1976). 2014-05-13 12:28:15 +02:00
Brendan Zabarauskas
b54059e6d2 Fix file mode for servo.rs
For some reason this was set to +x
2014-05-12 14:38:19 -07:00
Brendan Zabarauskas
1fc8302f5e Use box index type for referring to inline boxes 2014-05-12 14:37:04 -07:00
Brendan Zabarauskas
c1ec14bed2 Add some helpful comments 2014-05-12 14:23:54 -07:00
Brendan Zabarauskas
9dd533ce01 Add character index type
This is more self-documenting and may highlight errors in the future.
2014-05-12 14:21:42 -07:00
bors-servo
fbcfe78bf6 auto merge of #2388 : zwarich/servo/cssom, r=jdm
Implementing the CSSOM requires giving the script task access to the
computed style for a node. Moving it into a new SharedLayoutData struct
member of LayoutDataRef seems to be the best way to achieve this.

This is the first step towards #1721.
2014-05-12 16:46:10 -04:00
bors-servo
8d7883ff1c auto merge of #2410 : Ms2ger/servo/Pipeline-url, r=pcwalton
It is never mutated, and never None.
2014-05-12 16:13:18 -04:00
Ms2ger
f87f11ef48 Make Pipeline::url a plain Url.
It is never mutated, and never None.
2014-05-12 21:53:57 +02:00
bors-servo
1e361e8b6f auto merge of #2403 : Ms2ger/servo/iframe-loading, r=jdm
Right now, the load is kicked off inside the parser glue. This is unfortunate
for several reasons:

1) we'd like to replace the current parser (libhubbub) by our own parser,
   written in Rust, so code intertwined with the parser will have to be
   rewritten;
2) it is impossible to support dynamically (i.e. from script) created iframes
   in this way;
3) the code flow around loading subdocuments is complicated needlessly.

This commit adds the constellation channel (on which the message to actually
load the document is sent) as a field on the Page, to allow HTMLIFrameElement
to access it.

In rewriting the code, support for dynamically created iframes is added, and
a task failure is avoided when the value of the src attribute can not be
parsed.
2014-05-12 15:25:14 -04:00
Ms2ger
d095c42eaf Move the loading of documents in iframes into HTMLIFrameElement.
Right now, the load is kicked off inside the parser glue. This is unfortunate
for several reasons:

1) we'd like to replace the current parser (libhubbub) by our own parser,
   written in Rust, so code intertwined with the parser will have to be
   rewritten;
2) it is impossible to support dynamically (i.e. from script) created iframes
   in this way;
3) the code flow around loading subdocuments is complicated needlessly.

This commit adds the constellation channel (on which the message to actually
load the document is sent) as a field on the Page, to allow HTMLIFrameElement
to access it.

In rewriting the code, support for dynamically created iframes is added, and
a task failure is avoided when the value of the src attribute can not be
parsed.
2014-05-12 21:21:03 +02:00
Brendan Zabarauskas
9df9f07cfd Add some trailing commas 2014-05-12 12:03:59 -07:00