← Back to team overview

launchpad-reviewers team mailing list archive

[Merge] ~cjwatson/launchpad:zcml-namespaces-navigation into launchpad:master

 

Colin Watson has proposed merging ~cjwatson/launchpad:zcml-namespaces-navigation into launchpad:master.

Commit message:
Move ZCML navigation directive to lp namespace

Requested reviews:
  Launchpad code reviewers (launchpad-reviewers)

For more details, see:
https://code.launchpad.net/~cjwatson/launchpad/+git/launchpad/+merge/437085

As with commit 57196c1d6a220f00039e027768cc05368135f556, it makes sense to move our local `navigation` directive to our own namespace rather than poking it into the Zope browser namespace.
-- 
Your team Launchpad code reviewers is requested to review the proposed merge of ~cjwatson/launchpad:zcml-namespaces-navigation into launchpad:master.
diff --git a/doc/explanation/framework.rst b/doc/explanation/framework.rst
index 78e3cdf..f1d78a8 100644
--- a/doc/explanation/framework.rst
+++ b/doc/explanation/framework.rst
@@ -52,10 +52,9 @@ provides many application-specific hooks, and
 ``lp.services.webapp.publishing`` which defines much of Launchpad's
 traversal framework.  The URL structure is defined in various
 ``configure.zcml`` files: ``lp:url`` tags are used to build up the canonical
-URL for an object, and ``browser:navigation`` tags register classes called
-as part of traversal to resolve the next step from each intermediate object
-in the URL (starting at
-``lp.app.browser.launchpad.LaunchpadRootNavigation``).
+URL for an object, and ``lp:navigation`` tags register classes called as
+part of traversal to resolve the next step from each intermediate object in
+the URL (starting at ``lp.app.browser.launchpad.LaunchpadRootNavigation``).
 
 Page templating
 ---------------
diff --git a/lib/lp/answers/browser/configure.zcml b/lib/lp/answers/browser/configure.zcml
index 1277689..5e677cc 100644
--- a/lib/lp/answers/browser/configure.zcml
+++ b/lib/lp/answers/browser/configure.zcml
@@ -275,15 +275,15 @@
     />
 
   <!-- IQuestionSet -->
-  <browser:navigation
+  <lp:navigation
     module=".question"
     classes="QuestionSetNavigation"
     />
-  <browser:navigation
+  <lp:navigation
     module=".question"
     classes="QuestionNavigation"
     />
-  <browser:navigation
+  <lp:navigation
     module=".question"
     classes="QuestionMessageNavigation"
     />
diff --git a/lib/lp/app/browser/configure.zcml b/lib/lp/app/browser/configure.zcml
index 1e358ae..29b6519 100644
--- a/lib/lp/app/browser/configure.zcml
+++ b/lib/lp/app/browser/configure.zcml
@@ -8,11 +8,11 @@
     xmlns:xmlrpc="http://namespaces.zope.org/xmlrpc";
     xmlns:lp="http://namespaces.canonical.com/lp";
     i18n_domain="launchpad">
-    <browser:navigation
+    <lp:navigation
         module="lp.app.browser.launchpad"
         classes="LaunchpadRootNavigation"
         />
-    <browser:navigation
+    <lp:navigation
         module="lp.app.browser.launchpad"
         classes="LaunchpadRootNavigation"
         layer="zope.publisher.interfaces.xmlrpc.IXMLRPCRequest"
diff --git a/lib/lp/blueprints/browser/configure.zcml b/lib/lp/blueprints/browser/configure.zcml
index 3a3869b..7bd361f 100644
--- a/lib/lp/blueprints/browser/configure.zcml
+++ b/lib/lp/blueprints/browser/configure.zcml
@@ -10,7 +10,7 @@
     xmlns:xmlrpc="http://namespaces.zope.org/xmlrpc";
     i18n_domain="launchpad">
 
-    <browser:navigation
+    <lp:navigation
         module="lp.blueprints.browser.sprint"
         classes="
             SprintNavigation"/>
@@ -143,7 +143,7 @@
     <browser:defaultView
         for="lp.blueprints.interfaces.sprint.ISprintSet"
         name="+index"/>
-    <browser:navigation
+    <lp:navigation
         module="lp.blueprints.browser.sprint"
         classes="
             SprintSetNavigation"/>
@@ -240,7 +240,7 @@
             classes="
                 SpecificationActionMenu
                 SpecificationContextMenu"/>
-        <browser:navigation
+        <lp:navigation
             module="lp.blueprints.browser.specification"
             classes="
                 SpecificationNavigation"/>
diff --git a/lib/lp/bugs/browser/configure.zcml b/lib/lp/bugs/browser/configure.zcml
index 1cb7408..cb8528f 100644
--- a/lib/lp/bugs/browser/configure.zcml
+++ b/lib/lp/bugs/browser/configure.zcml
@@ -164,7 +164,7 @@
             path_expression="string:comments/${index}"
             attribute_to_parent="bugtask"
             rootsite="bugs"/>
-          <browser:navigation
+          <lp:navigation
             module=".bugcomment"
             classes="BugCommentNavigation"
             />
@@ -235,7 +235,7 @@
     <browser:defaultView
         for="lp.bugs.interfaces.malone.IMaloneApplication"
         name="+index"/>
-    <browser:navigation
+    <lp:navigation
         module="lp.bugs.browser.malone"
         classes="
             MaloneApplicationNavigation"/>
@@ -461,7 +461,7 @@
             path_expression="string:+bug/${bug/id}"
             attribute_to_parent="target"
             rootsite="bugs"/>
-        <browser:navigation
+        <lp:navigation
             module="lp.bugs.browser.bugtask"
             classes="BugTaskNavigation"/>
         <browser:page
@@ -682,7 +682,7 @@
         name="+confirm-is-patch"
         permission="launchpad.AnyPerson"
         template="../templates/bug-attachment-confirm-is-patch.pt"/>
-    <browser:navigation
+    <lp:navigation
         module="lp.bugs.browser.bugattachment"
         classes="
             BugAttachmentSetNavigation BugAttachmentFileNavigation"/>
@@ -697,7 +697,7 @@
             classes="
                 BugTrackerSetContextMenu
                 BugTrackerNavigationMenu"/>
-        <browser:navigation
+        <lp:navigation
             module="lp.bugs.browser.bugtracker"
             classes="
                 BugTrackerNavigation
@@ -866,7 +866,7 @@
             for="lp.bugs.interfaces.cve.ICveSet"
             path_expression="string:cve"
             parent_utility="lp.bugs.interfaces.malone.IMaloneApplication"/>
-        <browser:navigation
+        <lp:navigation
             module="lp.bugs.browser.cve"
             classes="
                 CveSetNavigation"/>
@@ -934,7 +934,7 @@
         <lp:url
             for="lp.bugs.interfaces.bug.IBug"
             urldata="lp.bugs.browser.bug.BugURL"/>
-        <browser:navigation
+        <lp:navigation
             module="lp.bugs.browser.bug"
             classes="
                 BugNavigation"/>
@@ -1011,7 +1011,7 @@
             class="
               lp.bugs.browser.bugsubscription.BugPortletSubscribersWithDetails"
             permission="launchpad.View"/>
-        <browser:navigation
+        <lp:navigation
             module="lp.bugs.browser.bug"
             classes="
                 BugSetNavigation"/>
@@ -1092,7 +1092,7 @@
         <browser:defaultView
             for="lp.bugs.interfaces.bugwatch.IBugWatchSet"
             name="+index"/>
-        <browser:navigation
+        <lp:navigation
             module="lp.bugs.browser.bugwatch"
             classes="
                 BugWatchSetNavigation"/>
@@ -1121,7 +1121,7 @@
         for="lp.bugs.interfaces.structuralsubscription.IStructuralSubscription"
         path_expression="string:+subscription/${subscriber/name}"
         attribute_to_parent="target"/>
-    <browser:navigation
+    <lp:navigation
         module="lp.bugs.browser.structuralsubscription"
         classes="StructuralSubscriptionNavigation"/>
 
diff --git a/lib/lp/buildmaster/browser/configure.zcml b/lib/lp/buildmaster/browser/configure.zcml
index 15f0cde..aeb18b4 100644
--- a/lib/lp/buildmaster/browser/configure.zcml
+++ b/lib/lp/buildmaster/browser/configure.zcml
@@ -14,7 +14,7 @@
         path_expression="string:${name}"
         parent_utility="lp.buildmaster.interfaces.processor.IProcessorSet" />
 
-    <browser:navigation
+    <lp:navigation
         module="lp.buildmaster.browser.processor"
         classes="ProcessorSetNavigation" />
     <lp:url for="lp.buildmaster.interfaces.processor.IProcessorSet"
@@ -41,7 +41,7 @@
     <browser:defaultView
         for="lp.buildmaster.interfaces.builder.IBuilderSet"
         name="+index"/>
-    <browser:navigation
+    <lp:navigation
         module="lp.buildmaster.browser.builder"
         classes="
             BuilderSetNavigation"/>
@@ -62,7 +62,7 @@
     <browser:defaultView
         for="lp.buildmaster.interfaces.builder.IBuilder"
         name="+index"/>
-    <browser:navigation
+    <lp:navigation
         module="lp.buildmaster.browser.builder"
         classes="
             BuilderNavigation"/>
diff --git a/lib/lp/charms/browser/configure.zcml b/lib/lp/charms/browser/configure.zcml
index 655bb34..4b4dbac 100644
--- a/lib/lp/charms/browser/configure.zcml
+++ b/lib/lp/charms/browser/configure.zcml
@@ -17,7 +17,7 @@
             classes="
                 CharmRecipeNavigationMenu
                 CharmRecipeContextMenu" />
-        <browser:navigation
+        <lp:navigation
             module="lp.charms.browser.charmrecipe"
             classes="CharmRecipeNavigation" />
         <browser:defaultView
@@ -95,7 +95,7 @@
         <lp:menus
             module="lp.charms.browser.charmrecipebuild"
             classes="CharmRecipeBuildContextMenu" />
-        <browser:navigation
+        <lp:navigation
             module="lp.charms.browser.charmrecipebuild"
             classes="CharmRecipeBuildNavigation" />
         <browser:defaultView
@@ -139,7 +139,7 @@
             for="lp.charms.interfaces.charmbase.ICharmBaseSet"
             path_expression="string:+charm-bases"
             parent_utility="lp.services.webapp.interfaces.ILaunchpadRoot" />
-        <browser:navigation
+        <lp:navigation
             module="lp.charms.browser.charmbase"
             classes="CharmBaseSetNavigation" />
 
diff --git a/lib/lp/code/browser/configure.zcml b/lib/lp/code/browser/configure.zcml
index 162b7c9..c2534a3 100644
--- a/lib/lp/code/browser/configure.zcml
+++ b/lib/lp/code/browser/configure.zcml
@@ -121,7 +121,7 @@
             name="+index"
             template="../templates/codeimport-machine-index.pt"
             permission="zope.Public"/>
-        <browser:navigation
+        <lp:navigation
             module="lp.code.browser.codeimportmachine"
             classes="CodeImportMachineSetNavigation"/>
         <lp:url
@@ -142,7 +142,7 @@
         for="lp.code.interfaces.branchref.IBranchRef"
         path_expression="string:.bzr"
         attribute_to_parent="branch"/>
-    <browser:navigation
+    <lp:navigation
         module="lp.code.browser.branchref"
         classes="BranchRefNavigation"/>
     <lp:url
@@ -159,7 +159,7 @@
         class="lp.code.browser.bazaar.BazaarApplicationView"
         name="+index"
         template="../templates/bazaar-index.pt" />
-    <browser:navigation
+    <lp:navigation
         module="lp.code.browser.branchmergeproposal"
         classes="BranchMergeProposalNavigation"/>
     <browser:defaultView
@@ -349,7 +349,7 @@
     <lp:url
         for="lp.code.interfaces.branch.IBranch"
         urldata="lp.code.browser.branch.BranchURL"/>
-    <browser:navigation
+    <lp:navigation
         module="lp.code.browser.branch"
         classes="BranchNavigation"/>
     <browser:pages
@@ -557,7 +557,7 @@
         path_expression="string:comments/${id}"
         attribute_to_parent="branch_merge_proposal"
         rootsite="code"/>
-    <browser:navigation
+    <lp:navigation
         module=".codereviewcomment"
         classes="CodeReviewCommentNavigation" />
     <browser:defaultView
@@ -657,7 +657,7 @@
         attribute_to_parent="target"
         path_expression="string:+code-import"
         rootsite="code"/>
-    <browser:navigation
+    <lp:navigation
         module="lp.code.browser.codeimport"
         classes="CodeImportSetNavigation"/>
     <browser:defaultView
@@ -816,7 +816,7 @@
     <lp:url
         for="lp.code.interfaces.gitrepository.IGitRepository"
         urldata="lp.code.browser.gitrepository.GitRepositoryURL"/>
-    <browser:navigation
+    <lp:navigation
         module="lp.code.browser.gitrepository"
         classes="GitRepositoryNavigation"/>
     <lp:menus
@@ -982,7 +982,7 @@
         attribute_to_parent="repository"
         rootsite="code"/>
 
-    <browser:navigation
+    <lp:navigation
         module="lp.code.browser.revisionstatus"
         classes="RevisionStatusArtifactNavigation"/>
 
@@ -1165,7 +1165,7 @@
         attribute_to_parent="branch_merge_proposal"
         rootsite="code" />
 
-    <browser:navigation
+    <lp:navigation
         module="lp.code.browser.diff"
         classes="PreviewDiffNavigation"/>
 
@@ -1300,7 +1300,7 @@
         classes="SourcePackageRecipeBuildContextMenu"
         module="lp.code.browser.sourcepackagerecipebuild"/>
 
-    <browser:navigation
+    <lp:navigation
         module="lp.code.browser.sourcepackagerecipebuild"
         classes="SourcePackageRecipeBuildNavigation" />
 
@@ -1433,7 +1433,7 @@
         <lp:menus
             module="lp.code.browser.cibuild"
             classes="CIBuildContextMenu" />
-        <browser:navigation
+        <lp:navigation
             module="lp.code.browser.cibuild"
             classes="CIBuildNavigation" />
         <browser:defaultView
diff --git a/lib/lp/oci/browser/configure.zcml b/lib/lp/oci/browser/configure.zcml
index 92d1567..acfd769 100644
--- a/lib/lp/oci/browser/configure.zcml
+++ b/lib/lp/oci/browser/configure.zcml
@@ -18,7 +18,7 @@
             classes="
                 OCIRecipeNavigationMenu
                 OCIRecipeContextMenu" />
-        <browser:navigation
+        <lp:navigation
             module="lp.oci.browser.ocirecipe"
             classes="OCIRecipeNavigation" />
         <browser:defaultView
@@ -102,7 +102,7 @@
         <lp:menus
             module="lp.oci.browser.ocirecipebuild"
             classes="OCIRecipeBuildContextMenu" />
-        <browser:navigation
+        <lp:navigation
             module="lp.oci.browser.ocirecipebuild"
             classes="OCIRecipeBuildNavigation" />
         <browser:defaultView
diff --git a/lib/lp/registry/browser/configure.zcml b/lib/lp/registry/browser/configure.zcml
index 25c217f..57aafc2 100644
--- a/lib/lp/registry/browser/configure.zcml
+++ b/lib/lp/registry/browser/configure.zcml
@@ -93,7 +93,7 @@
         permission="zope.Public"
         template="../templates/teammembership-listing-simple.pt"
         />
-    <browser:navigation
+    <lp:navigation
         module="lp.registry.browser.distroseries"
         classes="
                  DistroSeriesNavigation"
@@ -228,7 +228,7 @@
         name="+listing-distroseries-extra"
         for="lp.registry.interfaces.distroseriesdifference.IDistroSeriesDifference"
         />
-    <browser:navigation
+    <lp:navigation
         module="lp.registry.browser.distroseriesdifference"
         classes="DistroSeriesDifferenceNavigation"
         />
@@ -355,7 +355,7 @@
         path_expression="string:${id}"
         parent_utility="lp.registry.interfaces.codeofconduct.ISignedCodeOfConductSet"
         />
-    <browser:navigation
+    <lp:navigation
         module="lp.registry.browser.codeofconduct"
         classes="
                  SignedCodeOfConductSetNavigation
@@ -406,7 +406,7 @@
           permission="zope.Public"
           />
     </facet>
-    <browser:navigation
+    <lp:navigation
         module="lp.registry.browser.project"
         classes="
                  ProjectNavigation"
@@ -491,7 +491,7 @@
         name="+index"
         for="lp.registry.interfaces.projectgroup.IProjectGroupSet"
         />
-    <browser:navigation
+    <lp:navigation
         module="lp.registry.browser.project"
         classes="
                  ProjectSetNavigation"
@@ -554,7 +554,7 @@
         for="lp.registry.interfaces.distributionsourcepackage.IDistributionSourcePackage"
         urldata="lp.registry.browser.distributionsourcepackage.DistributionSourcePackageURL"
         />
-    <browser:navigation
+    <lp:navigation
         module="lp.registry.browser.distributionsourcepackage"
         classes="
                  DistributionSourcePackageNavigation"
@@ -622,7 +622,7 @@
         path_expression="string:+series/${name}"
         attribute_to_parent="oci_project"
         />
-    <browser:navigation
+    <lp:navigation
         module="lp.registry.browser.ociproject"
         classes="OCIProjectNavigation"
         />
@@ -714,7 +714,7 @@
         name="+index"
         for="lp.registry.interfaces.karma.IKarmaActionSet"
         />
-    <browser:navigation
+    <lp:navigation
         module="lp.registry.browser.karma"
         classes="
                  KarmaActionSetNavigation"
@@ -756,7 +756,7 @@
         name="+index"
         for="lp.registry.interfaces.poll.IPoll"
         />
-    <browser:navigation
+    <lp:navigation
         module="lp.registry.browser.poll"
         classes="
                  PollNavigation"
@@ -935,11 +935,11 @@
                  AnnouncementCreateNavigationMenu
                  AnnouncementEditNavigationMenu"
         />
-    <browser:navigation
+    <lp:navigation
         module="lp.registry.browser.person"
         classes="PersonNavigation"
         />
-    <browser:navigation
+    <lp:navigation
         module="lp.registry.browser.team"
         classes="TeamNavigation"
         />
@@ -1450,7 +1450,7 @@
         name="+index"
         for="lp.registry.interfaces.person.IPersonSet"
         />
-    <browser:navigation
+    <lp:navigation
         module="lp.registry.browser.person"
         classes="
                  PersonSetNavigation"
@@ -1517,7 +1517,7 @@
           template="../templates/people-mergerequest-sent.pt"
           />
     </browser:pages>
-    <browser:navigation
+    <lp:navigation
         module="lp.registry.browser.milestone"
         classes="
                  MilestoneSetNavigation
@@ -1664,7 +1664,7 @@
         for="lp.registry.interfaces.product.IProduct"
         layer="lp.answers.publisher.AnswersLayer"
         />
-    <browser:navigation
+    <lp:navigation
         module="lp.registry.browser.product"
         classes="ProductNavigation"
         />
@@ -1866,7 +1866,7 @@
         permission="launchpad.Edit"
         template="../../app/templates/generic-edit.pt"
         />
-    <browser:navigation
+    <lp:navigation
         module="lp.registry.browser.nameblocklist"
         classes="NameBlocklistSetNavigation"
         />
@@ -1891,7 +1891,7 @@
         name="+index"
         for="lp.registry.interfaces.product.IProductSet"
         />
-    <browser:navigation
+    <lp:navigation
         module="lp.registry.browser.product"
         classes="
                  ProductSetNavigation
@@ -1949,7 +1949,7 @@
                  ProductSpecificationsMenu
                  "
         />
-    <browser:navigation
+    <lp:navigation
         module="lp.registry.browser.productseries"
         classes="
                  ProductSeriesNavigation"
@@ -2116,7 +2116,7 @@
         for="lp.registry.interfaces.distribution.IDistribution"
         layer="lp.answers.publisher.AnswersLayer"
         />
-    <browser:navigation
+    <lp:navigation
         module="lp.registry.browser.distribution"
         classes="
                  DistributionNavigation"
@@ -2352,7 +2352,7 @@
         name="+index"
         for="lp.registry.interfaces.distribution.IDistributionSet"
         />
-    <browser:navigation
+    <lp:navigation
         module="lp.registry.browser.distribution"
         classes="
                  DistributionSetNavigation"
@@ -2400,7 +2400,7 @@
         name="+index"
         for="lp.registry.interfaces.sourcepackage.ISourcePackage"
         />
-    <browser:navigation
+    <lp:navigation
         module="lp.registry.browser.sourcepackage"
         classes="
                  SourcePackageNavigation"
@@ -2451,7 +2451,7 @@
         classes="
                  SourcePackageOverviewMenu"
         />
-    <browser:navigation
+    <lp:navigation
         module="lp.registry.browser.productrelease"
         classes="
                  ProductReleaseNavigation"/>
@@ -2637,7 +2637,7 @@
         path_expression="string:${distro_source_package/distribution/name}/+source/${distro_source_package/sourcepackagename/name}"
         attribute_to_parent="person"
         />
-    <browser:navigation
+    <lp:navigation
         module="lp.registry.browser.persondistributionsourcepackage"
         classes="
                  PersonDistributionSourcePackageNavigation"
@@ -2652,7 +2652,7 @@
         path_expression="string:${oci_project/pillar/name}/+oci/${oci_project/name}"
         attribute_to_parent="person"
         />
-    <browser:navigation
+    <lp:navigation
         module="lp.registry.browser.personociproject"
         classes="PersonOCIProjectNavigation"
         />
@@ -2661,7 +2661,7 @@
         path_expression="product/name"
         attribute_to_parent="person"
         />
-    <browser:navigation
+    <lp:navigation
         module="lp.registry.browser.personproduct"
         classes="
                  PersonProductNavigation"
diff --git a/lib/lp/services/feeds/configure.zcml b/lib/lp/services/feeds/configure.zcml
index 12b12b6..15bcbd3 100644
--- a/lib/lp/services/feeds/configure.zcml
+++ b/lib/lp/services/feeds/configure.zcml
@@ -27,7 +27,7 @@
         name="+index"
         />
 
-    <browser:navigation
+    <lp:navigation
         module="lp.services.feeds.browser"
         classes="FeedsNavigation"
         />
diff --git a/lib/lp/services/temporaryblobstorage/configure.zcml b/lib/lp/services/temporaryblobstorage/configure.zcml
index 598ebfa..541294b 100644
--- a/lib/lp/services/temporaryblobstorage/configure.zcml
+++ b/lib/lp/services/temporaryblobstorage/configure.zcml
@@ -38,7 +38,7 @@
         interface="lp.services.temporaryblobstorage.interfaces.ITemporaryStorageManager" />
   </lp:securedutility>
 
-  <browser:navigation
+  <lp:navigation
       module="lp.services.temporaryblobstorage.browser"
       classes="TemporaryBlobStorageNavigation"
       />
diff --git a/lib/lp/services/verification/browser/configure.zcml b/lib/lp/services/verification/browser/configure.zcml
index a3a0765..a65e96e 100644
--- a/lib/lp/services/verification/browser/configure.zcml
+++ b/lib/lp/services/verification/browser/configure.zcml
@@ -65,7 +65,7 @@
             for="lp.services.verification.interfaces.logintoken.ILoginToken"
             class="lp.services.verification.browser.logintoken.BugTrackerHandshakeView"
             permission="zope.Public"/>
-        <browser:navigation
+        <lp:navigation
             module="lp.services.verification.browser.logintoken"
             classes="
                 LoginTokenSetNavigation"/>
diff --git a/lib/lp/services/webapp/doc/navigation.rst b/lib/lp/services/webapp/doc/navigation.rst
index eef1360..522f5c7 100644
--- a/lib/lp/services/webapp/doc/navigation.rst
+++ b/lib/lp/services/webapp/doc/navigation.rst
@@ -244,10 +244,10 @@ The name begins with a 't', so the thing's value is THINGVIEW.
     <Thing 'THINGVIEW'>
 
 
-ZCML for browser:navigation
----------------------------
+ZCML for lp:navigation
+----------------------
 
-The zcml processor `browser:navigation` registers navigation classes.
+The zcml processor `lp:navigation` registers navigation classes.
 
     >>> class ThingSetView:
     ...     def __call__(self):
@@ -262,10 +262,12 @@ The zcml processor `browser:navigation` registers navigation classes.
     >>> from zope.configuration import xmlconfig
     >>> zcmlcontext = xmlconfig.string(
     ...     """
-    ... <configure xmlns:browser="http://namespaces.zope.org/browser";>
+    ... <configure
+    ...     xmlns:browser="http://namespaces.zope.org/browser";
+    ...     xmlns:lp="http://namespaces.canonical.com/lp";>
     ...   <include package="zope.browserpage" file="meta.zcml" />
     ...   <include package="lp.services.webapp" file="meta.zcml" />
-    ...   <browser:navigation
+    ...   <lp:navigation
     ...       module="lp.testing"
     ...       classes="ThingSetNavigation"
     ...       />
diff --git a/lib/lp/services/webapp/meta.zcml b/lib/lp/services/webapp/meta.zcml
index addb965..ff4ed67 100644
--- a/lib/lp/services/webapp/meta.zcml
+++ b/lib/lp/services/webapp/meta.zcml
@@ -19,7 +19,7 @@
       />
 
   <directive
-      namespace="http://namespaces.zope.org/browser";
+      namespace="http://namespaces.canonical.com/lp";
       name="navigation"
       schema="lp.services.webapp.metazcml.INavigationDirective"
       handler="lp.services.webapp.metazcml.navigation"
diff --git a/lib/lp/services/webapp/tests/test_navigation.py b/lib/lp/services/webapp/tests/test_navigation.py
index 86d084e..fe6b588 100644
--- a/lib/lp/services/webapp/tests/test_navigation.py
+++ b/lib/lp/services/webapp/tests/test_navigation.py
@@ -20,7 +20,7 @@ class TestNavigationDirective(TestCase):
         # By default all navigation classes are registered for
         # IDefaultBrowserLayer.
         directive = """
-            <browser:navigation
+            <lp:navigation
                 module="%(this)s" classes="ThingNavigation"/>
             """ % dict(
             this=this
@@ -35,7 +35,7 @@ class TestNavigationDirective(TestCase):
         # If we specify a layer when registering a navigation class, it will
         # only be available on that layer.
         directive = """
-            <browser:navigation
+            <lp:navigation
                 module="%(this)s" classes="OtherThingNavigation"
                 layer="%(this)s.IOtherLayer" />
             """ % dict(
@@ -59,9 +59,9 @@ class TestNavigationDirective(TestCase):
         # It is possible to have multiple navigation classes for a given
         # context class as long as they are registered for different layers.
         directive = """
-            <browser:navigation
+            <lp:navigation
                 module="%(this)s" classes="ThingNavigation"/>
-            <browser:navigation
+            <lp:navigation
                 module="%(this)s" classes="OtherThingNavigation"
                 layer="%(this)s.IOtherLayer" />
             """ % dict(
@@ -115,7 +115,7 @@ class OtherLayer:
 
 this = "lp.services.webapp.tests.test_navigation"
 zcml_configure = """
-    <configure xmlns:browser="http://namespaces.zope.org/browser";>
+    <configure xmlns:lp="http://namespaces.canonical.com/lp";>
       <include package="lp.services.webapp" file="meta.zcml" />
       %s
     </configure>
diff --git a/lib/lp/services/webhooks/configure.zcml b/lib/lp/services/webhooks/configure.zcml
index f93d21c..6dbf8d6 100644
--- a/lib/lp/services/webhooks/configure.zcml
+++ b/lib/lp/services/webhooks/configure.zcml
@@ -75,7 +75,7 @@
        path_expression="string:+webhook/${id}"
        attribute_to_parent="target"
        />
-    <browser:navigation
+    <lp:navigation
         module="lp.services.webhooks.browser" classes="WebhookNavigation" />
 
     <lp:url
diff --git a/lib/lp/services/worlddata/browser/configure.zcml b/lib/lp/services/worlddata/browser/configure.zcml
index 9315d35..76e6582 100644
--- a/lib/lp/services/worlddata/browser/configure.zcml
+++ b/lib/lp/services/worlddata/browser/configure.zcml
@@ -4,7 +4,6 @@
 
 <configure
     xmlns="http://namespaces.zope.org/zope";
-    xmlns:browser="http://namespaces.zope.org/browser";
     xmlns:i18n="http://namespaces.zope.org/i18n";
     xmlns:lp="http://namespaces.canonical.com/lp";
     xmlns:xmlrpc="http://namespaces.zope.org/xmlrpc";
@@ -22,7 +21,7 @@
         parent_utility="lp.services.webapp.interfaces.ILaunchpadRoot"
         rootsite="mainsite" />
 
-    <browser:navigation
+    <lp:navigation
         module="lp.services.worlddata.browser.country"
         classes="CountrySetNavigation" />
 
diff --git a/lib/lp/snappy/browser/configure.zcml b/lib/lp/snappy/browser/configure.zcml
index ee357f6..0cae381 100644
--- a/lib/lp/snappy/browser/configure.zcml
+++ b/lib/lp/snappy/browser/configure.zcml
@@ -26,7 +26,7 @@
             classes="
                 SnapNavigationMenu
                 SnapContextMenu" />
-        <browser:navigation
+        <lp:navigation
             module="lp.snappy.browser.snap"
             classes="SnapNavigation" />
         <browser:page
@@ -142,7 +142,7 @@
         <lp:menus
             module="lp.snappy.browser.snapbuild"
             classes="SnapBuildContextMenu" />
-        <browser:navigation
+        <lp:navigation
             module="lp.snappy.browser.snapbuild"
             classes="SnapBuildNavigation" />
         <browser:defaultView
@@ -185,7 +185,7 @@
             for="lp.snappy.interfaces.snappyseries.ISnappySeriesSet"
             path_expression="string:+snappy-series"
             parent_utility="lp.services.webapp.interfaces.ILaunchpadRoot" />
-        <browser:navigation
+        <lp:navigation
             module="lp.snappy.browser.snappyseries"
             classes="SnappySeriesSetNavigation" />
         <lp:url
@@ -196,7 +196,7 @@
             for="lp.snappy.interfaces.snapbase.ISnapBaseSet"
             path_expression="string:+snap-bases"
             parent_utility="lp.services.webapp.interfaces.ILaunchpadRoot" />
-        <browser:navigation
+        <lp:navigation
             module="lp.snappy.browser.snapbase"
             classes="
                 SnapBaseNavigation
diff --git a/lib/lp/soyuz/browser/configure.zcml b/lib/lp/soyuz/browser/configure.zcml
index aaba2f6..56bcd68 100644
--- a/lib/lp/soyuz/browser/configure.zcml
+++ b/lib/lp/soyuz/browser/configure.zcml
@@ -34,7 +34,7 @@
             path_expression="string:+binarypub"
             attribute_to_parent="archive"
             urldata="lp.soyuz.browser.publishing.BinaryPublicationURL"/>
-    <browser:navigation
+    <lp:navigation
         module="lp.soyuz.browser.binarypackagerelease"
         classes="
             BinaryPackageReleaseNavigation"/>
@@ -130,7 +130,7 @@
             path_expression="string:+sourcepub"
             attribute_to_parent="archive"
             urldata="lp.soyuz.browser.publishing.SourcePublicationURL"/>
-        <browser:navigation
+        <lp:navigation
             module="lp.soyuz.browser.publishing"
             classes="SourcePackagePublishingHistoryNavigation" />
     <browser:defaultView
@@ -140,7 +140,7 @@
         for="lp.soyuz.interfaces.distroarchseriesbinarypackagerelease.IDistroArchSeriesBinaryPackageRelease"
         path_expression="version"
         attribute_to_parent="distroarchseriesbinarypackage"/>
-    <browser:navigation
+    <lp:navigation
         module="lp.soyuz.browser.distroarchseriesbinarypackagerelease"
         classes="
             DistroArchSeriesBinaryPackageReleaseNavigation"/>
@@ -170,7 +170,7 @@
     <browser:defaultView
         for="lp.soyuz.interfaces.archive.IArchive"
         name="+index"/>
-    <browser:navigation
+    <lp:navigation
         module="lp.soyuz.browser.archive"
         classes="ArchiveNavigation" />
     <lp:url
@@ -294,7 +294,7 @@
     <lp:url
         for="lp.soyuz.interfaces.binarypackagebuild.IBinaryPackageBuild"
         urldata="lp.soyuz.browser.build.BuildUrl"/>
-    <browser:navigation
+    <lp:navigation
         module="lp.soyuz.browser.build"
         classes="
             BuildNavigation"/>
@@ -341,7 +341,7 @@
         for="lp.soyuz.interfaces.distroarchseriesbinarypackage.IDistroArchSeriesBinaryPackage"
         path_expression="name"
         attribute_to_parent="distroarchseries"/>
-    <browser:navigation
+    <lp:navigation
         module="lp.soyuz.browser.distroarchseriesbinarypackage"
         classes="
             DistroArchSeriesBinaryPackageNavigation"/>
@@ -398,7 +398,7 @@
         for="lp.soyuz.interfaces.distributionsourcepackagerelease.IDistributionSourcePackageRelease"
         path_expression="version"
         attribute_to_parent="sourcepackage"/>
-    <browser:navigation
+    <lp:navigation
         module="lp.soyuz.browser.distributionsourcepackagerelease"
         classes="
             DistributionSourcePackageReleaseNavigation"/>
@@ -429,7 +429,7 @@
         for="lp.soyuz.interfaces.distroseriesbinarypackage.IDistroSeriesBinaryPackage"
         path_expression="string:+package/${name}"
         attribute_to_parent="distroseries"/>
-    <browser:navigation
+    <lp:navigation
         module="lp.soyuz.browser.distroseriesbinarypackage"
         classes="
             DistroSeriesBinaryPackageNavigation"/>
@@ -462,7 +462,7 @@
             for="lp.soyuz.interfaces.distroarchseries.IDistroArchSeries"
             path_expression="architecturetag"
             attribute_to_parent="distroseries"/>
-        <browser:navigation
+        <lp:navigation
             module="lp.soyuz.browser.distroarchseries"
             classes="
                 DistroArchSeriesNavigation"/>
@@ -650,7 +650,7 @@
         path_expression="string:package-sets"
         parent_utility="lp.services.webapp.interfaces.ILaunchpadRoot"
         />
-    <browser:navigation
+    <lp:navigation
         module="lp.soyuz.browser.packageset"
         classes="PackagesetSetNavigation"
         />
@@ -669,7 +669,7 @@
         path_expression="string:+log/${id}"
         attribute_to_parent="package_upload"
         />
-    <browser:navigation
+    <lp:navigation
         module="lp.soyuz.browser.queue"
         classes="PackageUploadNavigation"
         />
@@ -712,7 +712,7 @@
         module="lp.soyuz.browser.livefs"
         classes="LiveFSNavigationMenu"
         />
-    <browser:navigation
+    <lp:navigation
         module="lp.soyuz.browser.livefs"
         classes="LiveFSNavigation"
         />
@@ -761,7 +761,7 @@
         module="lp.soyuz.browser.livefsbuild"
         classes="LiveFSBuildContextMenu"
         />
-    <browser:navigation
+    <lp:navigation
         module="lp.soyuz.browser.livefsbuild"
         classes="LiveFSBuildNavigation"
         />
diff --git a/lib/lp/testopenid/browser/configure.zcml b/lib/lp/testopenid/browser/configure.zcml
index a1cc217..e07f9dd 100644
--- a/lib/lp/testopenid/browser/configure.zcml
+++ b/lib/lp/testopenid/browser/configure.zcml
@@ -9,7 +9,7 @@
     xmlns:i18n="http://namespaces.zope.org/i18n";
     i18n_domain="launchpad">
 
-    <browser:navigation
+    <lp:navigation
         module=".server"
         classes="TestOpenIDApplicationNavigation"
         />
diff --git a/lib/lp/translations/browser/configure.zcml b/lib/lp/translations/browser/configure.zcml
index ec19525..5b74e5d 100644
--- a/lib/lp/translations/browser/configure.zcml
+++ b/lib/lp/translations/browser/configure.zcml
@@ -16,7 +16,7 @@
     <browser:defaultView
         for="lp.translations.interfaces.translations.IRosettaApplication"
         name="+index"/>
-    <browser:navigation
+    <lp:navigation
         module="lp.translations.browser.translations"
         classes="
             RosettaApplicationNavigation"/>
@@ -91,7 +91,7 @@
             permission="launchpad.Edit"
             class="lp.translations.browser.translator.TranslatorRemoveView"
             template="../../app/templates/generic-edit.pt"/>
-        <browser:navigation
+        <lp:navigation
             module="lp.translations.browser.translationimportqueue"
             classes="
                 TranslationImportQueueEntryNavigation
@@ -133,7 +133,7 @@
         path_expression="string:+lang/${language/code}"
         attribute_to_parent="distroseries"
         rootsite="translations"/>
-    <browser:navigation
+    <lp:navigation
         module="lp.translations.browser.serieslanguage"
         classes="DistroSeriesLanguageNavigation"/>
     <browser:defaultView
@@ -152,7 +152,7 @@
         for="lp.translations.interfaces.distroserieslanguage.IDistroSeriesLanguage"
         template="../templates/serieslanguage-index.pt"
         class="lp.translations.browser.serieslanguage.DistroSeriesLanguageView"/>
-        <browser:navigation
+        <lp:navigation
             module="lp.translations.browser.pofile"
             classes="
                 POFileNavigation"/>
@@ -220,7 +220,7 @@
         path_expression="string:+lang/${language/code}"
         attribute_to_parent="parent"
         rootsite="translations"/>
-    <browser:navigation
+    <lp:navigation
         module="lp.translations.browser.serieslanguage"
         classes="
             ProductSeriesLanguageNavigation"/>
@@ -240,7 +240,7 @@
         for="lp.translations.interfaces.productserieslanguage.IProductSeriesLanguage"
         template="../templates/serieslanguage-index.pt"
         class="lp.translations.browser.serieslanguage.ProductSeriesLanguageView"/>
-        <browser:navigation
+        <lp:navigation
             module="lp.translations.browser.language"
             classes="
                 LanguageSetNavigation"/>
@@ -300,7 +300,7 @@
             permission="launchpad.Admin"
             template="../../app/templates/generic-edit.pt"
             name="+add"/>
-        <browser:navigation
+        <lp:navigation
             module="lp.translations.browser.potemplate"
             classes="
                 POTemplateNavigation
@@ -377,7 +377,7 @@
             permission="zope.Public"
             class="lp.translations.browser.potemplate.POTemplateSubsetView"
             attribute="__call__"/>
-        <browser:navigation
+        <lp:navigation
             module="lp.translations.browser.translationgroup"
             classes="
                 TranslationGroupNavigation