Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
F
Front-End
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
abdullh.alsoleman
Front-End
Commits
85689f12
Commit
85689f12
authored
Jan 29, 2016
by
Hixie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Make the Semantics code be a service.
Port the tests to use the new interface.
parent
e8a21f5d
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
33 additions
and
21 deletions
+33
-21
binding.dart
packages/flutter/lib/src/rendering/binding.dart
+9
-10
semantics.dart
packages/flutter/lib/src/rendering/semantics.dart
+15
-2
semantics_debugger.dart
packages/flutter/lib/src/widgets/semantics_debugger.dart
+7
-7
rendering_tester.dart
packages/flutter/test/rendering/rendering_tester.dart
+1
-1
test_semantics.dart
packages/flutter/test/widget/test_semantics.dart
+1
-1
No files found.
packages/flutter/lib/src/rendering/binding.dart
View file @
85689f12
...
@@ -7,6 +7,7 @@ import 'dart:ui' as ui;
...
@@ -7,6 +7,7 @@ import 'dart:ui' as ui;
import
'package:flutter/gestures.dart'
;
import
'package:flutter/gestures.dart'
;
import
'package:flutter/scheduler.dart'
;
import
'package:flutter/scheduler.dart'
;
import
'package:flutter/services.dart'
;
import
'package:flutter/services.dart'
;
import
'package:mojo/core.dart'
as
core
;
import
'package:sky_services/semantics/semantics.mojom.dart'
as
mojom
;
import
'package:sky_services/semantics/semantics.mojom.dart'
as
mojom
;
import
'box.dart'
;
import
'box.dart'
;
...
@@ -26,6 +27,7 @@ abstract class Renderer extends Object with Scheduler, MojoShell
...
@@ -26,6 +27,7 @@ abstract class Renderer extends Object with Scheduler, MojoShell
_instance
=
this
;
_instance
=
this
;
ui
.
window
.
onMetricsChanged
=
handleMetricsChanged
;
ui
.
window
.
onMetricsChanged
=
handleMetricsChanged
;
initRenderView
();
initRenderView
();
initSemantics
();
assert
(
renderView
!=
null
);
assert
(
renderView
!=
null
);
assert
(()
{
assert
(()
{
initServiceExtensions
();
initServiceExtensions
();
...
@@ -41,8 +43,6 @@ abstract class Renderer extends Object with Scheduler, MojoShell
...
@@ -41,8 +43,6 @@ abstract class Renderer extends Object with Scheduler, MojoShell
if
(
renderView
==
null
)
{
if
(
renderView
==
null
)
{
renderView
=
new
RenderView
();
renderView
=
new
RenderView
();
renderView
.
scheduleInitialFrame
();
renderView
.
scheduleInitialFrame
();
if
(
_semanticsClient
!=
null
)
renderView
.
scheduleInitialSemantics
();
}
}
handleMetricsChanged
();
// configures renderView's metrics
handleMetricsChanged
();
// configures renderView's metrics
}
}
...
@@ -65,12 +65,11 @@ abstract class Renderer extends Object with Scheduler, MojoShell
...
@@ -65,12 +65,11 @@ abstract class Renderer extends Object with Scheduler, MojoShell
renderView
.
configuration
=
new
ViewConfiguration
(
size:
ui
.
window
.
size
);
renderView
.
configuration
=
new
ViewConfiguration
(
size:
ui
.
window
.
size
);
}
}
mojom
.
SemanticsListener
_semanticsClient
;
void
initSemantics
()
{
void
setSemanticsClient
(
mojom
.
SemanticsListener
client
)
{
SemanticsNode
.
onSemanticsEnabled
=
renderView
.
scheduleInitialSemantics
;
assert
(
_semanticsClient
==
null
);
provideService
(
mojom
.
SemanticsServer
.
serviceName
,
(
core
.
MojoMessagePipeEndpoint
endpoint
)
{
_semanticsClient
=
client
;
return
new
SemanticsServer
();
if
(
renderView
!=
null
)
});
renderView
.
scheduleInitialSemantics
();
}
}
void
_handlePersistentFrameCallback
(
Duration
timeStamp
)
{
void
_handlePersistentFrameCallback
(
Duration
timeStamp
)
{
...
@@ -84,9 +83,9 @@ abstract class Renderer extends Object with Scheduler, MojoShell
...
@@ -84,9 +83,9 @@ abstract class Renderer extends Object with Scheduler, MojoShell
RenderObject
.
flushCompositingBits
();
RenderObject
.
flushCompositingBits
();
RenderObject
.
flushPaint
();
RenderObject
.
flushPaint
();
renderView
.
compositeFrame
();
// this sends the bits to the GPU
renderView
.
compositeFrame
();
// this sends the bits to the GPU
if
(
_semanticsClient
!=
null
)
{
if
(
SemanticsNode
.
hasListeners
)
{
RenderObject
.
flushSemantics
();
RenderObject
.
flushSemantics
();
SemanticsNode
.
sendSemanticsTree
To
(
_semanticsClient
);
SemanticsNode
.
sendSemanticsTree
(
);
}
}
}
}
...
...
packages/flutter/lib/src/rendering/semantics.dart
View file @
85689f12
...
@@ -333,7 +333,18 @@ class SemanticsNode extends AbstractNode {
...
@@ -333,7 +333,18 @@ class SemanticsNode extends AbstractNode {
return
result
;
return
result
;
}
}
static
void
sendSemanticsTreeTo
(
mojom
.
SemanticsListener
client
)
{
static
List
<
mojom
.
SemanticsListener
>
_listeners
;
static
bool
get
hasListeners
=>
_listeners
!=
null
&&
_listeners
.
length
>
0
;
static
VoidCallback
onSemanticsEnabled
;
// set by the binding
static
void
addListener
(
mojom
.
SemanticsListener
listener
)
{
if
(!
hasListeners
)
onSemanticsEnabled
();
_listeners
??=
<
mojom
.
SemanticsListener
>[];
_listeners
.
add
(
listener
);
}
static
void
sendSemanticsTree
()
{
assert
(
hasListeners
);
for
(
SemanticsNode
oldNode
in
_detachedNodes
)
{
for
(
SemanticsNode
oldNode
in
_detachedNodes
)
{
// The other side will have forgotten this node if we even send
// The other side will have forgotten this node if we even send
// it again, so make sure to mark it dirty so that it'll get
// it again, so make sure to mark it dirty so that it'll get
...
@@ -377,7 +388,8 @@ class SemanticsNode extends AbstractNode {
...
@@ -377,7 +388,8 @@ class SemanticsNode extends AbstractNode {
if
(
node
.
_dirty
&&
node
.
attached
)
if
(
node
.
_dirty
&&
node
.
attached
)
updatedNodes
.
add
(
node
.
_serialize
());
updatedNodes
.
add
(
node
.
_serialize
());
}
}
client
.
updateSemanticsTree
(
updatedNodes
);
for
(
mojom
.
SemanticsListener
listener
in
_listeners
)
listener
.
updateSemanticsTree
(
updatedNodes
);
_dirtyNodes
.
clear
();
_dirtyNodes
.
clear
();
}
}
...
@@ -428,6 +440,7 @@ class SemanticsNode extends AbstractNode {
...
@@ -428,6 +440,7 @@ class SemanticsNode extends AbstractNode {
class
SemanticsServer
extends
mojom
.
SemanticsServer
{
class
SemanticsServer
extends
mojom
.
SemanticsServer
{
void
addSemanticsListener
(
mojom
.
SemanticsListener
listener
)
{
void
addSemanticsListener
(
mojom
.
SemanticsListener
listener
)
{
SemanticsNode
.
addListener
(
listener
);
}
}
void
tap
(
int
nodeID
)
{
void
tap
(
int
nodeID
)
{
SemanticsNode
.
getSemanticActionHandlerForId
(
nodeID
,
neededFlag:
_SemanticFlags
.
canBeTapped
)?.
handleSemanticTap
();
SemanticsNode
.
getSemanticActionHandlerForId
(
nodeID
,
neededFlag:
_SemanticFlags
.
canBeTapped
)?.
handleSemanticTap
();
...
...
packages/flutter/lib/src/widgets/semantics_debugger.dart
View file @
85689f12
...
@@ -31,7 +31,7 @@ class _SemanticsDebuggerState extends State<SemanticsDebugger> {
...
@@ -31,7 +31,7 @@ class _SemanticsDebuggerState extends State<SemanticsDebugger> {
}
}
void
_update
()
{
void
_update
()
{
setState
(()
{
setState
(()
{
// the generation of the _SemanticsDebugger
Client
has changed
// the generation of the _SemanticsDebugger
Listener
has changed
});
});
}
}
Point
_lastPointerDownLocation
;
Point
_lastPointerDownLocation
;
...
@@ -214,9 +214,10 @@ class _SemanticsDebuggerEntry {
...
@@ -214,9 +214,10 @@ class _SemanticsDebuggerEntry {
_SemanticsDebuggerEntry
hitTest
(
Point
position
,
_SemanticsDebuggerEntryFilter
filter
)
{
_SemanticsDebuggerEntry
hitTest
(
Point
position
,
_SemanticsDebuggerEntryFilter
filter
)
{
if
(
transform
!=
null
)
{
if
(
transform
!=
null
)
{
if
(
transform
.
determinant
==
0.0
)
Matrix4
invertedTransform
=
new
Matrix4
.
identity
();
double
determinant
=
invertedTransform
.
copyInverse
(
transform
);
if
(
determinant
==
0.0
)
return
null
;
return
null
;
Matrix4
invertedTransform
=
new
Matrix4
.
inverted
(
transform
);
position
=
MatrixUtils
.
transformPoint
(
invertedTransform
,
position
);
position
=
MatrixUtils
.
transformPoint
(
invertedTransform
,
position
);
}
}
if
(!
rect
.
contains
(
position
))
if
(!
rect
.
contains
(
position
))
...
@@ -235,13 +236,12 @@ class _SemanticsDebuggerEntry {
...
@@ -235,13 +236,12 @@ class _SemanticsDebuggerEntry {
class
_SemanticsDebuggerListener
implements
mojom
.
SemanticsListener
{
class
_SemanticsDebuggerListener
implements
mojom
.
SemanticsListener
{
_SemanticsDebuggerListener
.
_
()
{
_SemanticsDebuggerListener
.
_
()
{
Renderer
.
instance
.
setSemanticsClient
(
this
);
SemanticsNode
.
addListener
(
this
);
}
}
static
_SemanticsDebuggerListener
instance
;
static
_SemanticsDebuggerListener
instance
;
static
mojom
.
SemanticsServer
_server
;
static
final
SemanticsServer
_server
=
new
SemanticsServer
();
static
void
ensureInstantiated
({
mojom
.
SemanticsServer
server
})
{
static
void
ensureInstantiated
()
{
_server
=
server
??
new
SemanticsServer
();
instance
??=
new
_SemanticsDebuggerListener
.
_
();
instance
??=
new
_SemanticsDebuggerListener
.
_
();
}
}
...
...
packages/flutter/test/rendering/rendering_tester.dart
View file @
85689f12
...
@@ -26,7 +26,7 @@ enum EnginePhase {
...
@@ -26,7 +26,7 @@ enum EnginePhase {
composite
composite
}
}
class
TestRenderingFlutterBinding
extends
BindingBase
with
Scheduler
,
Renderer
,
Gesturer
{
class
TestRenderingFlutterBinding
extends
BindingBase
with
Scheduler
,
MojoShell
,
Renderer
,
Gesturer
{
void
initRenderView
()
{
void
initRenderView
()
{
if
(
renderView
==
null
)
{
if
(
renderView
==
null
)
{
renderView
=
new
TestRenderView
();
renderView
=
new
TestRenderView
();
...
...
packages/flutter/test/widget/test_semantics.dart
View file @
85689f12
...
@@ -7,7 +7,7 @@ import 'package:sky_services/semantics/semantics.mojom.dart' as mojom;
...
@@ -7,7 +7,7 @@ import 'package:sky_services/semantics/semantics.mojom.dart' as mojom;
class
TestSemanticsListener
implements
mojom
.
SemanticsListener
{
class
TestSemanticsListener
implements
mojom
.
SemanticsListener
{
TestSemanticsListener
()
{
TestSemanticsListener
()
{
Renderer
.
instance
.
setSemanticsClient
(
this
);
SemanticsNode
.
addListener
(
this
);
}
}
final
List
<
mojom
.
SemanticsNode
>
updates
=
<
mojom
.
SemanticsNode
>[];
final
List
<
mojom
.
SemanticsNode
>
updates
=
<
mojom
.
SemanticsNode
>[];
updateSemanticsTree
(
List
<
mojom
.
SemanticsNode
>
nodes
)
{
updateSemanticsTree
(
List
<
mojom
.
SemanticsNode
>
nodes
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment