Commit graph

16155 commits

Author SHA1 Message Date
bors-servo
ab42ca4296 Auto merge of #7825 - eefriedman:div-align, r=mbrubeck
Fully implement the "align descendants" rule for div.

This adds -servo-left and -servo-right to complement -servo-center.

~~This intentionally doesn't try to address issue #7301.~~  Commit added to address #7301.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7825)
<!-- Reviewable:end -->
2015-10-08 12:20:55 -06:00
Martin Robinson
1f2e1be2a3 Add the dump-layer-tree option to the -Z help text
I accidentally omitted this when I added the dump-layer-tree option
initially.

Fixes #7926.
2015-10-08 10:16:18 -07:00
Jim Berlage
0ffd2f636f Require the argument to WebSocket#send() (fixes #7858). 2015-10-08 12:08:26 -05:00
Corey Farwell
64f4835a4f Implement <body>'s "text" attribute 2015-10-08 10:55:12 -04:00
Ms2ger
25c19f77af Implement HTMLIFrameElement::pipeline_id on LayoutJS<HTMLIFrameElement>. 2015-10-08 11:00:56 +02:00
Paul Rouget
99cccb2193 Snap to screen pixels instead of px 2015-10-08 06:44:05 +02:00
Martin Robinson
dae22b6e80 Simplify and unify compositor shutdown code paths
Unify all compositor shutdown code paths into two methods, one which
starts the shutdown and the other that finishes it. This simplifies the
way the compositor shuts down and prevents "leaking" pixmaps when
exiting in uncommon ways.
2015-10-07 18:42:11 -07:00
bors-servo
1d617f332e Auto merge of #7899 - glennw:subpage-fixes-1, r=pcwalton
Remove constellation round trip for subpage mapping in compositor.

This makes use of the new functionality that allows iframes to generate their own pipeline IDs in order to remove any knowledge of subpage ids from the compositor.

(This is the first of several commits removing subpage from parts of servo).

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7899)
<!-- Reviewable:end -->
2015-10-07 18:36:35 -06:00
bors-servo
e7f73fdfd8 Auto merge of #7875 - jgraham:composite_no_exit, r=glennw
Move code to exit servo after writing a screenshot out of composite_specific_target.

The structure of this function was confusing, so move some parts out into the
caller where they seem like a more natural fit and add documentation of the
functions

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7875)
<!-- Reviewable:end -->
2015-10-07 17:50:23 -06:00
bors-servo
0b6cb92d78 Auto merge of #7843 - ecoal95:webgl-context-event, r=jdm
webgl: Implement WebGLContextEvent and use it on context creation error

spec: https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.15

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7843)
<!-- Reviewable:end -->
2015-10-07 17:04:10 -06:00
Anthony Ramine
6d6dbf0129 Derive PartialEq on the style Font structure
We check the hash first.
2015-10-08 00:32:58 +02:00
Emilio Cobos Álvarez
7030f09823 webgl: Implement WebGLContextEvent and use it on context creation error
spec: https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.15
2015-10-08 00:29:31 +02:00
Martin Robinson
fb80e51bd1 Properly size synthesized layers
Layers that are composed of several stacking contexts that need to be
rendered on top of other layered content need synthesized layers.
Previously, these layers were placed into a stacking context that was
the same size as their parent. This patch creates a new type of
PaintLayer which simply holds a display list. The layer is sized to the
bounds of the DisplayList and its children are positioned relative to
the parent stacking context.

This will also be useful in the future, when items outside of
StackingContexts are given their own layer for render order purposes.
2015-10-07 15:12:36 -07:00
bors-servo
3e5b491a50 Auto merge of #7911 - Qeole:7907, r=jdm
Fixes #7907: rendering for unescaped string "<iframe>" in doc



<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7911)
<!-- Reviewable:end -->
2015-10-07 13:59:24 -06:00
Qeole
8cc9611919 Fixes #7907: rendering for unescaped string "<iframe>" in doc 2015-10-07 21:51:42 +02:00
Eli Friedman
0df71c7d19 Make sure to correctly destroy old layers in collect_old_layers_for_pipeline.
The previous code would skip calling clear_all_tiles(), which led to a
panic in rust-layers. ("You should have disposed of the pixmap properly
with destroy()! This pixmap will leak!")

Ran into this messing around with pdf.js; no minimized testcase.
Maybe related to #7895.
2015-10-07 11:46:53 -07:00
bors-servo
94dc98717b Auto merge of #7892 - anthgur:form-data-refactor, r=jdm
Refactor html form dataset collection

Factor out FormDatum collection for `<input>`
Improve early return logic for getting the FormDatum from an `<input>`
Condense element type patterns

Proposed to close #7851

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7892)
<!-- Reviewable:end -->
2015-10-07 08:32:44 -06:00
Anthony Urena
31980a7a34 Refactor html form dataset collection
Factor out FormDatum collection for <input>
Improve early return logic for getting the FormDatum from an <input>
Condense element type patterns
2015-10-07 10:22:02 -04:00
bors-servo
60a77defe5 Auto merge of #7898 - frewsxcv:htmlfontelement-size-attribute-setter, r=nox
Use the correct IDL setter for <font>.size

Previously, the IDL attribute would incorrectly set the `size` attribute
for `<font>` elements as `AttrValue::String`. Now it correctly sets it
as `AttrValue::Length`. Also included is a regression test.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7898)
<!-- Reviewable:end -->
2015-10-07 07:04:28 -06:00
Corey Farwell
eabaf2c6a5 Use the correct IDL setter for <font>.size
Previously, the IDL attribute would incorrectly set the `size` attribute
for `<font>` elements as `AttrValue::String`. Now it correctly sets it
as `AttrValue::Length`. Also included is a regression test.
2015-10-07 08:28:43 -04:00
bors-servo
745635a706 Auto merge of #7903 - Ms2ger:codegen-docs, r=Manishearth
Add support for documenting CGAbstractMethods.



<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7903)
<!-- Reviewable:end -->
2015-10-07 06:20:20 -06:00
bors-servo
9a12c2c061 Auto merge of #7902 - mskrzypkows:HTMLInputElement_pub_refactor, r=nox
Removed unneeded pub annotations in HTMLInputElement  #7897

get_size method appeared to be never used so I removed it.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7902)
<!-- Reviewable:end -->
2015-10-07 05:35:14 -06:00
Ms2ger
6b160c6a29 Document RegisterBindings::RegisterProxyHandlers. 2015-10-07 12:22:15 +02:00
Ms2ger
03b04e5363 Add support for documenting CGAbstractMethods. 2015-10-07 12:21:59 +02:00
Maciej Skrzypkowski
7a5390d936 Removed unneeded pub annotations in HTMLInputElement #7897
get_size method appeared to be never used so I removed it.
2015-10-07 11:24:49 +02:00
Ms2ger
b96594ea50 Remove a pointless level of indentation. 2015-10-07 11:15:20 +02:00
Ms2ger
a701397a9d Pass an Element to collect_text. 2015-10-07 11:07:20 +02:00
Ms2ger
6e745b5a00 Avoid panicking in the implementation of HTMLOptionElement#text for non-element, non-text children. 2015-10-07 10:52:44 +02:00
James Graham
64b74f5057 Move code to exit servo after writing a screenshot out of composite_specific_target.
The structure of this function was confusing, so move some parts out into the
caller where they seem like a more natural fit and add documentation of the
functions
2015-10-07 09:24:00 +01:00
bors-servo
409fbafe9c Auto merge of #7883 - notriddle:master, r=pcwalton
Draw shadows after the background.

Fixes #7872

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7883)
<!-- Reviewable:end -->
2015-10-06 22:03:48 -06:00
Glenn Watson
da881947e5 Remove constellation round trip for subpage mapping in compositor.
This makes use of the new functionality that allows iframes to generate their own pipeline IDs in order to remove any knowledge of subpage ids from the compositor.

(This is the first of several commits removing subpage from parts of servo).
2015-10-07 12:24:15 +10:00
bors-servo
507beda4c7 Auto merge of #7879 - mrobinson:layer-tree-dump, r=glennw
Improve layer tree debugging output

Add an option to dump the layer tree, which activates the previously
unused layer tree debugging code. Also improve the output using the
PrintTree struct.

Previous output:
```
Layer tree:
Layer 7f63b45b2010: RefCell { value: CompositorData { pipeline_id: PipelineId(0), id: 0-FragmentBody, wants_scroll_events: WantsScrollEvents, scroll_policy: Scrollable, requested_epoch: Epoch(4), painted_epoch: Epoch(0), scroll_offset: (Length(0, PhantomData),Length(0, PhantomData)), subpage_info: None } } @ Rect(Length(800, PhantomData)×Length(600, PhantomData) at (Length(0, PhantomData),Length(0, PhantomData))) masks to bounds: true establishes 3D context: true
  Layer 7f63b45b2290: RefCell { value: CompositorData { pipeline_id: PipelineId(0), id: 140065919922672-FragmentBody, wants_scroll_events: DoesntWantScrollEvents, scroll_policy: Scrollable, requested_epoch: Epoch(5), painted_epoch: Epoch(0), scroll_offset: (Length(0, PhantomData),Length(0, PhantomData)), subpage_info: None } } @ Rect(Length(800, PhantomData)×Length(650, PhantomData) at (Length(0, PhantomData),Length(0, PhantomData))) masks to bounds: false establishes 3D context: true
    Layer 7f63b45b3410: RefCell { value: CompositorData { pipeline_id: PipelineId(0), id: 140065919923248-FragmentBody, wants_scroll_events: DoesntWantScrollEvents, scroll_policy: FixedPosition, requested_epoch: Epoch(5), painted_epoch: Epoch(0), scroll_offset: (Length(0, PhantomData),Length(0, PhantomData)), subpage_info: None } } @ Rect(Length(50, PhantomData)×Length(50, PhantomData) at (Length(18, PhantomData),Length(10, PhantomData))) masks to bounds: false establishes 3D context: false
    Layer 7f63b45b3190: RefCell { value: CompositorData { pipeline_id: PipelineId(0), id: 140065919923872-FragmentBody, wants_scroll_events: DoesntWantScrollEvents, scroll_policy: FixedPosition, requested_epoch: Epoch(5), painted_epoch: Epoch(0), scroll_offset: (Length(0, PhantomData),Length(0, PhantomData)), subpage_info: None } } @ Rect(Length(50, PhantomData)×Length(50, PhantomData) at (Length(93, PhantomData),Length(10, PhantomData))) masks to bounds: false establishes 3D context: false
    Layer 7f63b45b2f10: RefCell { value: CompositorData { pipeline_id: PipelineId(0), id: 140065919924496-FragmentBody, wants_scroll_events: DoesntWantScrollEvents, scroll_policy: Scrollable, requested_epoch: Epoch(5), painted_epoch: Epoch(0), scroll_offset: (Length(0, PhantomData),Length(0, PhantomData)), subpage_info: Some((PipelineId(0), SubpageId(0))) } } @ Rect(Length(50, PhantomData)×Length(50, PhantomData) at (Length(168, PhantomData),Length(10, PhantomData))) masks to bounds: false establishes 3D context: false
      Layer 7f63b45b3b90: RefCell { value: CompositorData { pipeline_id: PipelineId(1), id: 0-FragmentBody, wants_scroll_events: WantsScrollEvents, scroll_policy: Scrollable, requested_epoch: Epoch(3), painted_epoch: Epoch(0), scroll_offset: (Length(0, PhantomData),Length(0, PhantomData)), subpage_info: Some((PipelineId(0), SubpageId(0))) } } @ Rect(Length(50, PhantomData)×Length(50, PhantomData) at (Length(0, PhantomData),Length(0, PhantomData))) masks to bounds: true establishes 3D context: true
        Layer 7f63b45b3e10: RefCell { value: CompositorData { pipeline_id: PipelineId(1), id: 140065901048256-FragmentBody, wants_scroll_events: DoesntWantScrollEvents, scroll_policy: Scrollable, requested_epoch: Epoch(4), painted_epoch: Epoch(0), scroll_offset: (Length(0, PhantomData),Length(0, PhantomData)), subpage_info: None } } @ Rect(Length(50, PhantomData)×Length(58, PhantomData) at (Length(0, PhantomData),Length(0, PhantomData))) masks to bounds: false establishes 3D context: true
    Layer 7f63b45b2c90: RefCell { value: CompositorData { pipeline_id: PipelineId(0), id: 140065919925168-FragmentBody, wants_scroll_events: DoesntWantScrollEvents, scroll_policy: Scrollable, requested_epoch: Epoch(5), painted_epoch: Epoch(0), scroll_offset: (Length(0, PhantomData),Length(0, PhantomData)), subpage_info: Some((PipelineId(0), SubpageId(1))) } } @ Rect(Length(50, PhantomData)×Length(50, PhantomData) at (Length(243, PhantomData),Length(10, PhantomData))) masks to bounds: false establishes 3D context: false
      Layer 7f63b45b2790: RefCell { value: CompositorData { pipeline_id: PipelineId(2), id: 0-FragmentBody, wants_scroll_events: WantsScrollEvents, scroll_policy: Scrollable, requested_epoch: Epoch(3), painted_epoch: Epoch(0), scroll_offset: (Length(0, PhantomData),Length(0, PhantomData)), subpage_info: Some((PipelineId(0), SubpageId(1))) } } @ Rect(Length(50, PhantomData)×Length(50, PhantomData) at (Length(0, PhantomData),Length(0, PhantomData))) masks to bounds: true establishes 3D context: true
        Layer 7f63b45b2510: RefCell { value: CompositorData { pipeline_id: PipelineId(2), id: 140065880076736-FragmentBody, wants_scroll_events: DoesntWantScrollEvents, scroll_policy: Scrollable, requested_epoch: Epoch(5), painted_epoch: Epoch(4), scroll_offset: (Length(0, PhantomData),Length(0, PhantomData)), subpage_info: None } } @ Rect(Length(50, PhantomData)×Length(58, PhantomData) at (Length(0, PhantomData),Length(0, PhantomData))) masks to bounds: false establishes 3D context: true
    Layer 7f63b45b3910: RefCell { value: CompositorData { pipeline_id: PipelineId(0), id: 140065919925168-FragmentBody-companion, wants_scroll_events: DoesntWantScrollEvents, scroll_policy: Scrollable, requested_epoch: Epoch(5), painted_epoch: Epoch(0), scroll_offset: (Length(0, PhantomData),Length(0, PhantomData)), subpage_info: None } } @ Rect(Length(800, PhantomData)×Length(650, PhantomData) at (Length(0, PhantomData),Length(0, PhantomData))) masks to bounds: false establishes 3D context: false
    Layer 7f63b45b2a10: RefCell { value: CompositorData { pipeline_id: PipelineId(0), id: 140065919924064-FragmentBody, wants_scroll_events: DoesntWantScrollEvents, scroll_policy: Scrollable, requested_epoch: Epoch(5), painted_epoch: Epoch(0), scroll_offset: (Length(0, PhantomData),Length(0, PhantomData)), subpage_info: None } } @ Rect(Length(50, PhantomData)×Length(50, PhantomData) at (Length(103, PhantomData),Length(30, PhantomData))) masks to bounds: false establishes 3D context: false
    Layer 7f63b45b3690: RefCell { value: CompositorData { pipeline_id: PipelineId(0), id: 140065919924064-FragmentBody-companion, wants_scroll_events: DoesntWantScrollEvents, scroll_policy: Scrollable, requested_epoch: Epoch(5), painted_epoch: Epoch(0), scroll_offset: (Length(0, PhantomData),Length(0, PhantomData)), subpage_info: None } } @ Rect(Length(800, PhantomData)×Length(650, PhantomData) at (Length(0, PhantomData),Length(0, PhantomData))) masks to bounds: false establishes 3D context: false
```

New output:
```
┌ Layer tree
│  ├─ Root Layer (pipeline=0) (0-FragmentBody) (800,600 at 0,0) (masks children) (3D context)
│  │  ├─ Layer (140279059771888-FragmentBody) (800,650 at 0,0) (3D context)
│  │  │  ├─ Layer (140279059772464-FragmentBody) (50,50 at 18,10) (fixed)
│  │  │  ├─ Layer (140279059773088-FragmentBody) (50,50 at 93,10) (fixed)
│  │  │  ├─ Layer (140279059773712-FragmentBody) (50,50 at 168,10)
│  │  │  │  ├─ Root Layer (pipeline=1) (0-FragmentBody) (50,50 at 0,0) (masks children) (3D context)
│  │  │  │  │  └─ Layer (140278833279472-FragmentBody) (50,58 at 0,0) (3D context)
│  │  │  ├─ Layer (140279059774384-FragmentBody) (50,50 at 243,10)
│  │  │  │  ├─ Root Layer (pipeline=2) (0-FragmentBody) (50,50 at 0,0) (masks children) (3D context)
│  │  │  │  │  └─ Layer (140279013634496-FragmentBody) (50,58 at 0,0) (3D context)
│  │  │  ├─ Layer (140279059774384-FragmentBody-companion) (800,650 at 0,0)
│  │  │  ├─ Layer (140279059773280-FragmentBody) (50,50 at 103,30)
│  │  │  └─ Layer (140279059773280-FragmentBody-companion) (800,650 at 0,0)
```

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7879)
<!-- Reviewable:end -->
2015-10-06 17:20:50 -06:00
Martin Robinson
8b5fe650c8 Improve layer tree debugging output
Add an option to dump the layer tree, which activates the previously
unused layer tree debugging code. Also improve the output using the
PrintTree struct.
2015-10-06 15:25:33 -07:00
bors-servo
5eb1c04e78 Auto merge of #7896 - pcwalton:box-shadow-border-radii, r=mbrubeck
layout: Add a field in the display list for simple border radii on box shadows.

Only supported in WebRender (with my upcoming PR) for now.

r? @mbrubeck

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7896)
<!-- Reviewable:end -->
2015-10-06 15:46:56 -06:00
Patrick Walton
e3b988a1fe layout: Add a field in the display list for simple border radii on box
shadows.

Only supported in WebRender (with my upcoming PR) for now.
2015-10-06 14:04:50 -07:00
bors-servo
e4b02cc981 Auto merge of #7889 - vectorijk:port-blocking-7855, r=jdm
Fix #7855 Implement port blocking For WebSocket connection algorithm



<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7889)
<!-- Reviewable:end -->
2015-10-06 14:07:08 -06:00
bors-servo
e64ed839b6 Auto merge of #7893 - Ms2ger:img-webdriver, r=jdm
Cleanup handle_take_screenshot.



<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7893)
<!-- Reviewable:end -->
2015-10-06 12:41:05 -06:00
bors-servo
5730a8bdd1 Auto merge of #7884 - Manishearth:fx-openssl, r=Ms2ger
Update openssl and re-enable the resource task tests

https://github.com/sfackler/rust-openssl/issues/281 landed

r? @larsbergstrom

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7884)
<!-- Reviewable:end -->
2015-10-06 10:43:41 -06:00
Ms2ger
0f6197a0fd Fix incorrect indentation in handle_take_screenshot. 2015-10-06 18:13:22 +02:00
Ms2ger
2e16c3ca8a Avoid an unnecessary unwrap() call in handle_take_screenshot. 2015-10-06 18:12:55 +02:00
vectorijk
0fb5e745e5 make blacklist as const array 2015-10-06 09:03:51 -07:00
bors-servo
c0b397db77 Auto merge of #7827 - Ms2ger:jumpy-variant, r=pcwalton
Check for font_variant equality in LayoutFontGroupCacheKey::eq.

This fixes an issue whereby normal text would intermittently be rendered as
small-caps and vice versa.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7827)
<!-- Reviewable:end -->
2015-10-06 10:03:24 -06:00
Corey Farwell
899f1cab58 Implement HTMLTableCellElement::CellIndex
Extracted from #6936
2015-10-06 10:46:02 -04:00
vectorijk
4e21b9fa83 Fix #7855 Implement port blocking
For WebSocket connection algorithm
2015-10-06 07:31:33 -07:00
bors-servo
f5cd90805e Auto merge of #7882 - anthgur:consistent-enum-use, r=Ms2ger
Refactor Error enum usage to consistently be qualified

Closes #7869

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7882)
<!-- Reviewable:end -->
2015-10-06 04:58:17 -06:00
Anthony Urena
ba86131cd5 Refactor Error enum usage to consistently be qualified 2015-10-06 05:43:52 -04:00
bors-servo
50db64a20e Auto merge of #7874 - Ms2ger:layoutjs-tdth, r=jdm
Define the parsed attribute getters for HTMLTableCellElement on LayoutJS.

This documents their intended usage and prevents script callers from using
them.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7874)
<!-- Reviewable:end -->
2015-10-06 01:57:05 -06:00
Ms2ger
cd7b4d4e61 Define the parsed attribute getters for HTMLTableCellElement on LayoutJS.
This documents their intended usage and prevents script callers from using
them.
2015-10-06 09:40:33 +02:00
bors-servo
098bdb5f22 Auto merge of #7807 - glennw:pid, r=jdm
Make it possible for iframes to create their own pipeline ID.

This doesn't change any functionality, but it's the first step towards removing SubpageId.

Adding this change now will allow us to gradually change over code referencing subpage id rather than in one massive PR.

Introduces a namespace for pipeline ID generation - there is a namespace for the constellation thread, and one per script thread.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7807)
<!-- Reviewable:end -->
2015-10-06 01:08:32 -06:00
Glenn Watson
5645dba1fa Make it possible for iframes to create their own pipeline ID.
This doesn't change any functionality, but it's the first step towards removing SubpageId.

Adding this change now will allow us to gradually change over code referencing subpage id rather than in one massive PR.

Introduces a namespace for pipeline ID generation - there is a namespace for the constellation thread, and one per script thread.
2015-10-06 17:06:53 +10:00