testbot/web: Improve argument handling in the web methods.

Francois Gouget fgouget at codeweavers.com
Mon Jun 9 05:29:32 CDT 2014


This standardizes the way we handle arguments.
Make it so one can readily see the list of arguments the method takes without having to hunt down the implementation of all its ancestors.
Because these are methods the added prototypes have no effect whatsoever as far as Perl is concerned. However they do document which arguments are optional.
---
 testbot/web/Feedback.pl            |  44 +++++++--------
 testbot/web/ForgotPassword.pl      |  29 +++++-----
 testbot/web/GetFile.pl             |   2 +-
 testbot/web/JobDetails.pl          |  76 +++++++++++++-------------
 testbot/web/Login.pl               |  36 ++++++-------
 testbot/web/Logout.pl              |  12 ++---
 testbot/web/PatchesList.pl         |  41 ++++++--------
 testbot/web/Register.pl            |  48 +++++++++--------
 testbot/web/ResetPassword.pl       |  40 +++++++-------
 testbot/web/Screenshot.pl          |   8 +--
 testbot/web/Submit.pl              | 106 ++++++++++++++++++-------------------
 testbot/web/admin/BranchDetails.pl |   6 +--
 testbot/web/admin/BranchesList.pl  |  11 ++--
 testbot/web/admin/UserDetails.pl   |  30 +++++------
 testbot/web/admin/UsersList.pl     |  30 +++++------
 testbot/web/admin/VMDetails.pl     |  13 +++--
 testbot/web/admin/VMsList.pl       |  24 ++++-----
 testbot/web/index.pl               |  68 ++++++++++++------------
 18 files changed, 299 insertions(+), 325 deletions(-)

diff --git a/testbot/web/Feedback.pl b/testbot/web/Feedback.pl
index b923c11..39558da 100644
--- a/testbot/web/Feedback.pl
+++ b/testbot/web/Feedback.pl
@@ -27,7 +27,7 @@ use WineTestBot::Config;
 
 @FeedbackPage::ISA = qw(ObjectModel::CGI::FreeFormPage);
 
-sub _initialize
+sub _initialize($$$)
 {
   my ($self, $Request, $RequiredRole) = @_;
 
@@ -53,56 +53,57 @@ sub _initialize
   }
 }
 
-sub GetPropertyValue
+sub GetPropertyValue($$)
 {
-  my $self = shift;
-  my $PropertyDescriptor = $_[0];
+  my ($self, $PropertyDescriptor) = @_;
 
   if (defined($self->{$PropertyDescriptor->GetName()}))
   {
     return $self->{$PropertyDescriptor->GetName()};
   }
 
-  return $self->SUPER::GetPropertyValue(@_);
+  return $self->SUPER::GetPropertyValue($PropertyDescriptor);
 }
 
-sub GetTitle
+sub GetTitle($)
 {
+  #my ($self) = @_;
   return "Provide feedback";
 }
 
-sub GetHeaderText
+sub GetHeaderText($)
 {
+  #my ($self) = @_;
   return "Remarks on how to improve this service are highly appreciated! " .
          "If you wish to stay anonymous, you don't have to enter your name " .
          "or email address.";
 }
 
-sub GetInputType
+sub GetInputType($$)
 {
-  my $self = shift;
-  my $PropertyDescriptor = $_[0];
+  my ($self, $PropertyDescriptor) = @_;
 
   if (substr($PropertyDescriptor->GetName(), 0, 8) eq "Remarks")
   {
     return "textarea";
   }
 
-  return $self->SUPER::GetInputType(@_);
+  return $self->SUPER::GetInputType($PropertyDescriptor);
 }
 
-sub GetActions
+sub GetActions($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   my $Actions = $self->SUPER::GetActions();
   push(@$Actions, "Send");
 
   return $Actions;
 }
-sub OnSend
+
+sub OnSend($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   if (! $self->Validate)
   {
@@ -124,22 +125,21 @@ EOF
   return 1;
 }
 
-sub OnAction
+sub OnAction($$)
 {
-  my $self = shift;
-  my $Action = $_[0];
+  my ($self, $Action) = @_;
 
   if ($Action eq "Send")
   {
     return $self->OnSend();
   }
 
-  return $self->SUPER::OnAction(@_);
+  return $self->SUPER::OnAction($Action);
 }
 
-sub GenerateBody
+sub GenerateBody($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   if ($self->{ActionPerformed})
   {
@@ -150,7 +150,7 @@ sub GenerateBody
     return;
   }
 
-  $self->SUPER::GenerateBody(@_);
+  $self->SUPER::GenerateBody();
 }
 
 package main;
diff --git a/testbot/web/ForgotPassword.pl b/testbot/web/ForgotPassword.pl
index dc35a2b..bc039f5 100644
--- a/testbot/web/ForgotPassword.pl
+++ b/testbot/web/ForgotPassword.pl
@@ -29,7 +29,7 @@ use WineTestBot::CGI::Sessions;
 
 @ForgotPasswordPage::ISA = qw(ObjectModel::CGI::FreeFormPage);
 
-sub _initialize
+sub _initialize($$$)
 {
   my ($self, $Request, $RequiredRole) = @_;
 
@@ -42,21 +42,23 @@ sub _initialize
   $self->SUPER::_initialize($Request, $RequiredRole, \@PropertyDescriptors);
 }
 
-sub GetTitle
+sub GetTitle($)
 {
+  #my ($self) = @_;
   return "Reset password";
 }
 
-sub GetHeaderText
+sub GetHeaderText($)
 {
+  #my ($self) = @_;
   return "Please enter your username or your email address<br>\n" .
          "If you don't have an account yet, you can " .
          "<a href='Register.pl'>register</a> for one.";
 }
 
-sub GetActions
+sub GetActions($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   my $Actions = $self->SUPER::GetActions();
   push(@$Actions, "Reset password");
@@ -64,9 +66,9 @@ sub GetActions
   return $Actions;
 }
 
-sub OnResetPassword
+sub OnResetPassword($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   if (! $self->Validate)
   {
@@ -101,22 +103,21 @@ sub OnResetPassword
   return 1;
 }
 
-sub OnAction
+sub OnAction($$)
 {
-  my $self = shift;
-  my $Action = $_[0];
+  my ($self, $Action) = @_;
 
   if ($Action eq "Reset password")
   {
     return $self->OnResetPassword();
   }
 
-  return $self->SUPER::OnAction(@_);
+  return $self->SUPER::OnAction($Action);
 }
 
-sub GenerateBody
+sub GenerateBody($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   if ($self->{ActionPerformed})
   {
@@ -127,7 +128,7 @@ sub GenerateBody
     return;
   }
 
-  $self->SUPER::GenerateBody(@_);
+  $self->SUPER::GenerateBody();
 }
 
 package main;
diff --git a/testbot/web/GetFile.pl b/testbot/web/GetFile.pl
index 697bbbd..943a445 100644
--- a/testbot/web/GetFile.pl
+++ b/testbot/web/GetFile.pl
@@ -25,7 +25,7 @@ use WineTestBot::Config;
 use WineTestBot::Jobs;
 use WineTestBot::Steps;
 
-sub GetFile
+sub GetFile($$$$)
 {
   my ($Request, $JobKey, $StepKey, $TaskKey) = @_;
 
diff --git a/testbot/web/JobDetails.pl b/testbot/web/JobDetails.pl
index 04ec3c5..b43d375 100644
--- a/testbot/web/JobDetails.pl
+++ b/testbot/web/JobDetails.pl
@@ -31,9 +31,9 @@ use WineTestBot::Log;
 
 @JobDetailsPage::ISA = qw(ObjectModel::CGI::CollectionPage);
 
-sub _initialize
+sub _initialize($$$)
 {
-  my $self = shift;
+  my ($self, $Request, $RequiredRole) = @_;
 
   my $JobId = $self->GetParam("Key");
   if (! defined($JobId))
@@ -47,12 +47,12 @@ sub _initialize
   }
   $self->{JobId} = $JobId;
 
-  $self->SUPER::_initialize(@_, CreateStepsTasks(undef, $self->{Job}));
+  $self->SUPER::_initialize($Request, $RequiredRole, CreateStepsTasks(undef, $self->{Job}));
 }
 
-sub GetPageTitle()
+sub GetPageTitle($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   my $PageTitle = $self->{Job}->Remarks;
   $PageTitle =~ s/^[[]wine-patches[]] //;
@@ -61,17 +61,16 @@ sub GetPageTitle()
   return $PageTitle;
 }
 
-sub GetTitle()
+sub GetTitle($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   return "Job " . $self->{JobId} . " - " . $self->{Job}->Remarks;
 }
 
-sub DisplayProperty
+sub DisplayProperty($$$)
 {
-  my $self = shift;
-  my ($CollectionBlock, $PropertyDescriptor) = @_;
+  my ($self, $CollectionBlock, $PropertyDescriptor) = @_;
 
   my $PropertyName = $PropertyDescriptor->GetName();
 
@@ -82,14 +81,15 @@ sub DisplayProperty
          $PropertyName eq "Ended" || $PropertyName eq "TestFailures";
 }
 
-sub GetItemActions
+sub GetItemActions($$)
 {
+  #my ($self, $CollectionBlock) = @_;
   return [];
 }
 
-sub CanCancel
+sub CanCancel($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   my $Job = CreateJobs()->GetItem($self->{JobId});
   my $Status = $Job->Status;
@@ -113,9 +113,9 @@ sub CanCancel
   return undef;
 }
 
-sub CanRestart
+sub CanRestart($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   my $Job = CreateJobs()->GetItem($self->{JobId});
   my $Status = $Job->Status;
@@ -139,9 +139,9 @@ sub CanRestart
   return undef;
 }
 
-sub GetActions
+sub GetActions($$)
 {
-  my $self = shift;
+  my ($self, $CollectionBlock) = @_;
 
   # These are mutually exclusive
   return ["Cancel job"] if (!defined $self->CanCancel());
@@ -149,9 +149,9 @@ sub GetActions
   return [];
 }
 
-sub OnCancel
+sub OnCancel($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   my $ErrMessage = $self->CanCancel();
   if (defined($ErrMessage))
@@ -171,9 +171,9 @@ sub OnCancel
   exit;
 }
 
-sub OnRestart
+sub OnRestart($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   my $ErrMessage = $self->CanRestart();
   if (defined($ErrMessage))
@@ -193,10 +193,9 @@ sub OnRestart
   exit;
 }
 
-sub OnAction
+sub OnAction($$$)
 {
-  my $self = shift;
-  my $Action = $_[1];
+  my ($self, $CollectionBlock, $Action) = @_;
 
   if ($Action eq "Cancel job")
   {
@@ -207,22 +206,20 @@ sub OnAction
     return $self->OnRestart();
   }
 
-  return $self->SUPER::OnAction(@_);
+  return $self->SUPER::OnAction($CollectionBlock, $Action);
 }
 
-sub SortKeys
+sub SortKeys($$$)
 {
-  my $self = shift;
-  my $CollectionBlock = shift;
-  my $Keys = $_[0];
+  my ($self, $CollectionBlock, $Keys) = @_;
 
   my @SortedKeys = sort @$Keys;
   return \@SortedKeys;
 }
 
-sub GeneratePage
+sub GeneratePage($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   foreach my $Job (@{$self->{Collection}->GetItems()})
   {
@@ -233,14 +230,14 @@ sub GeneratePage
     }
   }
 
-  $self->SUPER::GeneratePage(@_);
+  $self->SUPER::GeneratePage();
 }
 
-sub GenerateBody
+sub GenerateBody($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
-  $self->SUPER::GenerateBody(@_);
+  $self->SUPER::GenerateBody();
 
   print "<div class='Content'>\n";
   my $Keys = $self->SortKeys(undef, $self->{Collection}->GetKeys());
@@ -462,10 +459,9 @@ sub GenerateBody
   print "</div>\n";
 }
 
-sub GenerateDataCell
+sub GenerateDataCell($$$$$)
 {
-  my $self = shift;
-  my ($CollectionBlock, $Item, $PropertyDescriptor, $DetailsPage) = @_;
+  my ($self, $CollectionBlock, $Item, $PropertyDescriptor, $DetailsPage) = @_;
 
   my $PropertyName = $PropertyDescriptor->GetName();
   if ($PropertyName eq "VM")
@@ -490,12 +486,12 @@ sub GenerateDataCell
     }
     else
     {
-      $self->SUPER::GenerateDataCell(@_);
+      $self->SUPER::GenerateDataCell($CollectionBlock, $Item, $PropertyDescriptor, $DetailsPage);
     }
   }
   else
   {
-    $self->SUPER::GenerateDataCell(@_);
+    $self->SUPER::GenerateDataCell($CollectionBlock, $Item, $PropertyDescriptor, $DetailsPage);
   }
 }
 
diff --git a/testbot/web/Login.pl b/testbot/web/Login.pl
index e6a4945..34def55 100644
--- a/testbot/web/Login.pl
+++ b/testbot/web/Login.pl
@@ -30,7 +30,7 @@ use WineTestBot::CGI::Sessions;
 
 @LoginPage::ISA = qw(ObjectModel::CGI::FreeFormPage);
 
-sub _initialize
+sub _initialize($$$)
 {
   my ($self, $Request, $RequiredRole) = @_;
 
@@ -45,34 +45,35 @@ sub _initialize
   $self->SUPER::_initialize($Request, $RequiredRole, \@PropertyDescriptors);
 }
 
-sub GetTitle
+sub GetTitle($)
 {
+  #my ($self) = @_;
   return "Log in";
 }
 
-sub GetFooterText
+sub GetFooterText($)
 {
+  #my ($self) = @_;
   return defined($LDAPServer) ? "" :
          "<a href='ForgotPassword.pl'>I forgot my password</a><br>\n" .
          "<a href='Register.pl'>I want to register an account</a>";
 }
 
-sub GetInputType
+sub GetInputType($$)
 {
-  my $self = shift;
-  my $PropertyDescriptor = $_[0];
+  my ($self, $PropertyDescriptor) = @_;
 
   if ($PropertyDescriptor->GetName() eq "Password")
   {
     return "password";
   }
 
-  return $self->SUPER::GetInputType(@_);
+  return $self->SUPER::GetInputType($PropertyDescriptor);
 }
 
-sub GenerateFields
+sub GenerateFields($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   if (defined($self->GetParam("Target")))
   {
@@ -80,12 +81,12 @@ sub GenerateFields
           escapeHTML($self->GetParam("Target")), "'></div>\n";
   }
 
-  $self->SUPER::GenerateFields(@_);
+  $self->SUPER::GenerateFields();
 }
 
-sub GetActions
+sub GetActions($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   my $Actions = $self->SUPER::GetActions();
   push(@$Actions, "Log in");
@@ -93,9 +94,9 @@ sub GetActions
   return $Actions;
 }
 
-sub OnLogIn
+sub OnLogIn($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   if (! $self->Validate)
   {
@@ -140,17 +141,16 @@ sub OnLogIn
   exit;
 }
 
-sub OnAction
+sub OnAction($$)
 {
-  my $self = shift;
-  my $Action = $_[0];
+  my ($self, $Action) = @_;
 
   if ($Action eq "Log in")
   {
     return $self->OnLogIn();
   }
 
-  return $self->SUPER::OnAction(@_);
+  return $self->SUPER::OnAction($Action);
 }
 
 package main;
diff --git a/testbot/web/Logout.pl b/testbot/web/Logout.pl
index 24d3ac3..536a302 100644
--- a/testbot/web/Logout.pl
+++ b/testbot/web/Logout.pl
@@ -27,7 +27,7 @@ use CGI::Cookie;
 
 @LogoutPage::ISA = qw(ObjectModel::CGI::Page);
 
-sub _initialize
+sub _initialize($$$)
 {
   my ($self, $Request, $RequiredRole) = @_;
 
@@ -38,9 +38,9 @@ sub _initialize
   $self->GetPageBase()->CheckSecurePage();
 }
 
-sub GenerateBody
+sub GenerateBody($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   print "<h1>Log out</h1>";
   print "<div class='Content'>\n";
@@ -56,9 +56,9 @@ sub GenerateBody
   print "</div>\n";
 }
 
-sub GeneratePage
+sub GeneratePage($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   my $Session = $self->GetCurrentSession();
   $self->{WasLoggedIn} = defined($Session);
@@ -69,7 +69,7 @@ sub GeneratePage
     $self->SetCurrentSession(undef);
   }
 
-  $self->SUPER::GeneratePage(@_);
+  $self->SUPER::GeneratePage();
 }
 
 package main;
diff --git a/testbot/web/PatchesList.pl b/testbot/web/PatchesList.pl
index 4e3437a..c87f7bc 100644
--- a/testbot/web/PatchesList.pl
+++ b/testbot/web/PatchesList.pl
@@ -27,26 +27,24 @@ use WineTestBot::Patches;
 
 @PatchesListPage::ISA = qw(ObjectModel::CGI::CollectionPage);
 
-sub _initialize
+sub _initialize($$$)
 {
-  my $self = shift;
+  my ($self, $Request, $RequiredRole) = @_;
 
-  $self->SUPER::_initialize(@_, CreatePatches());
+  $self->SUPER::_initialize($Request, $RequiredRole, CreatePatches());
 }
 
-sub SortKeys
+sub SortKeys($$$)
 {
-  my $self = shift;
-  my ($CollectionBlock, $Keys) = @_;
+  my ($self, $CollectionBlock, $Keys) = @_;
 
   my @SortedKeys = sort { $b <=> $a } @$Keys;
   return \@SortedKeys;
 }
 
-sub DisplayProperty
+sub DisplayProperty($$$)
 {
-  my $self = shift;
-  my ($CollectionBlock, $PropertyDescriptor) = @_;
+  my ($self, $CollectionBlock, $PropertyDescriptor) = @_;
 
   my $PropertyName = $PropertyDescriptor->GetName();
 
@@ -54,35 +52,30 @@ sub DisplayProperty
          $PropertyName eq "FromName" || $PropertyName eq "Subject";
 }
 
-sub GetItemActions
+sub GetItemActions($$)
 {
-  my $self = shift;
-  my $CollectionBlock = shift;
-
+  #my ($self, $CollectionBlock) = @_;
   return [];
 }
 
-sub GetActions
+sub GetActions($$)
 {
-  my $self = shift;
-  my $CollectionBlock = shift;
-
+  #my ($self, $CollectionBlock) = @_;
   return [];
 }
 
-sub GeneratePage
+sub GeneratePage($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   $self->{Request}->headers_out->add("Refresh", "60");
 
-  $self->SUPER::GeneratePage(@_);
+  $self->SUPER::GeneratePage();
 }
 
-sub GenerateDataCell
+sub GenerateDataCell($$$$$)
 {
-  my $self = shift;
-  my ($CollectionBlock, $Item, $PropertyDescriptor, $DetailsPage) = @_;
+  my ($self, $CollectionBlock, $Item, $PropertyDescriptor, $DetailsPage) = @_;
 
   my $PropertyName = $PropertyDescriptor->GetName();
   if ($PropertyName eq "Disposition" and $Item->Disposition =~ /job ([0-9]+)$/)
@@ -94,7 +87,7 @@ sub GenerateDataCell
   }
   else
   {
-    $self->SUPER::GenerateDataCell(@_);
+    $self->SUPER::GenerateDataCell($CollectionBlock, $Item, $PropertyDescriptor, $DetailsPage);
   }
 }
 
diff --git a/testbot/web/Register.pl b/testbot/web/Register.pl
index ca82d55..1e18e23 100644
--- a/testbot/web/Register.pl
+++ b/testbot/web/Register.pl
@@ -28,20 +28,22 @@ use WineTestBot::Utils;
 
 @RegisterPage::ISA = qw(ObjectModel::CGI::ItemPage);
 
-sub _initialize
+sub _initialize($$$)
 {
-  my $self = shift;
+  my ($self, $Request, $RequiredRole) = @_;
 
-  $self->SUPER::_initialize(@_, CreateUsers());
+  $self->SUPER::_initialize($Request, $RequiredRole, CreateUsers());
 }
 
-sub GetTitle
+sub GetTitle($)
 {
+  #my ($self) = @_;
   return "Request new account";
 }
 
-sub GetHeaderText
+sub GetHeaderText($)
 {
+  #my ($self) = @_;
   return "Since an account will allow you to run code on this system, your " .
          "request for an account will have to be manually approved. That " .
          "should be no problem if you're a well-known member of the Wine " .
@@ -51,16 +53,16 @@ sub GetHeaderText
          "you should receive that email within a couple of hours.";
 }
 
-sub GetFooterText
+sub GetFooterText($)
 {
+  #my ($self) = @_;
   return "Your real name and email address will be treated confidentially " .
          "and will not be shown on any bot-accessible part of this site.";
 }
 
-sub DisplayProperty
+sub DisplayProperty($$)
 {
-  my $self = shift;
-  my $PropertyDescriptor = $_[0];
+  my ($self, $PropertyDescriptor) = @_;
 
   my $PropertyName = $PropertyDescriptor->GetName();
 
@@ -71,12 +73,12 @@ sub DisplayProperty
     return "";
   }
 
-  return $self->SUPER::DisplayProperty(@_);
+  return $self->SUPER::DisplayProperty($PropertyDescriptor);
 }
 
-sub GenerateFields
+sub GenerateFields($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   print "<div><input type='hidden' name='Status' value='active'></div>\n";
   $self->SUPER::GenerateFields();
@@ -85,8 +87,9 @@ sub GenerateFields
   $self->{HasRequired} = !1;
 }
 
-sub GenerateActions
+sub GenerateActions($)
 {
+  #my ($self) = @_;
   print <<EOF;
 <div class='DetailActions'>
 <input type='submit' name='Action' value='Send request' />
@@ -94,9 +97,9 @@ sub GenerateActions
 EOF
 }
 
-sub OnSendRequest
+sub OnSendRequest($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   if (! $self->Save())
   {
@@ -127,22 +130,21 @@ EOF
   return 1;
 }
 
-sub OnAction
+sub OnAction($$)
 {
-  my $self = shift;
-  my $Action = $_[0];
+  my ($self, $Action) = @_;
 
   if ($Action eq 'Send request')
   {
-    return $self->OnSendRequest(@_);
+    return $self->OnSendRequest();
   }
 
-  return $self->SUPER::OnAction(@_);
+  return $self->SUPER::OnAction($Action);
 }
 
-sub GenerateBody
+sub GenerateBody($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   if ($self->{ActionPerformed})
   {
@@ -157,7 +159,7 @@ EOF
     return;
   }
 
-  $self->SUPER::GenerateBody(@_);
+  $self->SUPER::GenerateBody();
 }
 
 package main;
diff --git a/testbot/web/ResetPassword.pl b/testbot/web/ResetPassword.pl
index 73a7258..1146792 100644
--- a/testbot/web/ResetPassword.pl
+++ b/testbot/web/ResetPassword.pl
@@ -29,7 +29,7 @@ use WineTestBot::CGI::Sessions;
 
 @ResetPasswordPage::ISA = qw(ObjectModel::CGI::FreeFormPage);
 
-sub _initialize
+sub _initialize($$$)
 {
   my ($self, $Request, $RequiredRole) = @_;
 
@@ -45,33 +45,34 @@ sub _initialize
   $self->SUPER::_initialize($Request, $RequiredRole, \@PropertyDescriptors);
 }
 
-sub GetTitle
+sub GetTitle($)
 {
+  #my ($self) = @_;
   return "Reset password";
 }
 
-sub GetHeaderText
+sub GetHeaderText($)
 {
+  #my ($self) = @_;
   return "If you don't have an account yet, you can " .
          "<a href='Register.pl'>register</a> for one.";
 }
 
-sub GetInputType
+sub GetInputType($$)
 {
-  my $self = shift;
-  my $PropertyDescriptor = $_[0];
+  my ($self, $PropertyDescriptor) = @_;
 
   if (substr($PropertyDescriptor->GetName(), 0, 8) eq "Password")
   {
     return "password";
   }
 
-  return $self->SUPER::GetInputType(@_);
+  return $self->SUPER::GetInputType($PropertyDescriptor);
 }
 
-sub GetActions
+sub GetActions($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   my $Actions = $self->SUPER::GetActions();
   push(@$Actions, "Change password");
@@ -79,9 +80,9 @@ sub GetActions
   return $Actions;
 }
 
-sub Validate
+sub Validate($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   if (! $self->SUPER::Validate())
   {
@@ -98,9 +99,9 @@ sub Validate
   return 1;
 }
 
-sub OnChangePassword
+sub OnChangePassword($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   if (! $self->Validate)
   {
@@ -154,22 +155,21 @@ sub OnChangePassword
   return 1;
 }
 
-sub OnAction
+sub OnAction($$)
 {
-  my $self = shift;
-  my $Action = $_[0];
+  my ($self, $Action) = @_;
 
   if ($Action eq "Change password")
   {
     return $self->OnChangePassword();
   }
 
-  return $self->SUPER::OnAction(@_);
+  return $self->SUPER::OnAction($Action);
 }
 
-sub GenerateBody
+sub GenerateBody($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   if ($self->{ActionPerformed})
   {
@@ -180,7 +180,7 @@ sub GenerateBody
     return;
   }
 
-  $self->SUPER::GenerateBody(@_);
+  $self->SUPER::GenerateBody();
 }
 
 package main;
diff --git a/testbot/web/Screenshot.pl b/testbot/web/Screenshot.pl
index fc416b5..095d966 100644
--- a/testbot/web/Screenshot.pl
+++ b/testbot/web/Screenshot.pl
@@ -9,16 +9,16 @@ use WineTestBot::CGI::Sessions;
 use WineTestBot::Engine::Notify;
 use WineTestBot::VMs;
 
-sub NotAvailable
+sub NotAvailable($)
 {
-  my $Request = $_[0];
+  my ($Request) = @_;
 
   $Request->headers_out->set("Location", "/images/NotAvailable.png");
   $Request->status(Apache2::Const::REDIRECT);
   exit;
 }
 
-sub LiveScreenshot
+sub LiveScreenshot($$)
 {
   my ($Request, $VMName) = @_;
 
@@ -58,7 +58,7 @@ sub LiveScreenshot
   return $ImageBytes;
 }
 
-sub StoredScreenshot
+sub StoredScreenshot($$$$)
 {
   my ($Request, $JobKey, $StepKey, $TaskKey) = @_;
 
diff --git a/testbot/web/Submit.pl b/testbot/web/Submit.pl
index 03b9af2..c760446 100644
--- a/testbot/web/Submit.pl
+++ b/testbot/web/Submit.pl
@@ -37,7 +37,7 @@ use WineTestBot::VMs;
 
 @SubmitPage::ISA = qw(ObjectModel::CGI::FreeFormPage);
 
-sub _initialize
+sub _initialize($$$)
 {
   my ($self, $Request, $RequiredRole) = @_;
 
@@ -65,14 +65,15 @@ sub _initialize
   $self->SUPER::_initialize($Request, $RequiredRole, undef);
 }
 
-sub GetTitle
+sub GetTitle($)
 {
+  #my ($self) = @_;
   return "Submit a job";
 }
 
-sub GetHeaderText
+sub GetHeaderText($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   if ($self->{Page} == 1)
   {
@@ -103,9 +104,9 @@ sub GetHeaderText
   return "";
 }
 
-sub GetPropertyDescriptors
+sub GetPropertyDescriptors($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   if ($self->{Page} == 1)
   {
@@ -119,12 +120,12 @@ sub GetPropertyDescriptors
     return $self->{PropertyDescriptors3};
   }
 
-  return $self->SUPER::GetPropertyDescriptors(@_);
+  return $self->SUPER::GetPropertyDescriptors();
 }
 
-sub GenerateFields
+sub GenerateFields($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   print "<div><input type='hidden' name='Page' value='", $self->{Page},
         "'></div>\n";
@@ -307,12 +308,12 @@ sub GenerateFields
           "'></div>\n";
   }
 
-  $self->SUPER::GenerateFields(@_);
+  $self->SUPER::GenerateFields();
 }
 
-sub GenerateActions
+sub GenerateActions($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   if ($self->{Page} == 2)
   {
@@ -343,9 +344,9 @@ EOF
   $self->SUPER::GenerateActions();
 }
 
-sub GetActions
+sub GetActions($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   my $Actions = $self->SUPER::GetActions();
   if ($self->{Page} == 1)
@@ -368,10 +369,9 @@ sub GetActions
   return $Actions;
 }
 
-sub DisplayProperty
+sub DisplayProperty($$)
 {
-  my $self = shift;
-  my $PropertyDescriptor = $_[0];
+  my ($self, $PropertyDescriptor) = @_;
 
   if ($self->{Page} == 3)
   {
@@ -408,13 +408,12 @@ sub DisplayProperty
     }
   }
 
-  return $self->SUPER::DisplayProperty(@_);
+  return $self->SUPER::DisplayProperty($PropertyDescriptor);
 }
 
-sub GetPropertyValue
+sub GetPropertyValue($$)
 {
-  my $self = shift;
-  my $PropertyDescriptor = $_[0];
+  my ($self, $PropertyDescriptor) = @_;
 
   if ($self->{Page} == 3)
   {
@@ -429,21 +428,20 @@ sub GetPropertyValue
     }
   }
 
-  return $self->SUPER::GetPropertyValue(@_);
+  return $self->SUPER::GetPropertyValue($PropertyDescriptor);
 }
 
-sub GetTmpStagingFullPath
+sub GetTmpStagingFullPath($$)
 {
-  my $self = shift;
-  my $FileName = $_[0];
+  my ($self, $FileName) = @_;
 
   return undef if (!$FileName);
   return "$DataDir/staging/" . $self->GetCurrentSession()->Id . "-websubmit_$FileName";
 }
 
-sub Validate
+sub Validate($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   if ($self->{Page} == 2 && $self->GetParam("Page") == 2)
   {
@@ -494,13 +492,12 @@ sub Validate
     }
   }
 
-  return $self->SUPER::Validate(@_);
+  return $self->SUPER::Validate();
 }
 
-sub DetermineFileType
+sub DetermineFileType($$)
 {
-  my $self = shift;
-  my $FileName = $_[0];
+  my ($self, $FileName) = @_;
 
   my $ErrMessage = undef;
   my $FileType = "unknown";
@@ -639,9 +636,9 @@ sub DetermineFileType
   return ($ErrMessage, $FileType, $DllBaseName, $TestSet);
 }
 
-sub OnPage1Next
+sub OnPage1Next($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   my $FileName = $self->GetParam("File");
   if (! $FileName)
@@ -729,9 +726,9 @@ sub OnPage1Next
   return 1;
 }
 
-sub OnPage2Next
+sub OnPage2Next($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   if (! $self->Validate)
   {
@@ -743,16 +740,16 @@ sub OnPage2Next
   return 1;
 }
 
-sub OnNext
+sub OnNext($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   return $self->{Page} == 2 ? $self->OnPage2Next() : $self->OnPage1Next();
 }
 
-sub OnPage2Prev
+sub OnPage2Prev($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   my $StagingFileName = $self->GetTmpStagingFullPath($self->GetParam("FileName"));
   if ($StagingFileName)
@@ -765,25 +762,25 @@ sub OnPage2Prev
   return 1;
 }
 
-sub OnPage3Prev
+sub OnPage3Prev($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   $self->{Page} = 2;
 
   return 1;
 }
 
-sub OnPrev
+sub OnPrev($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   return $self->{Page} == 3 ? $self->OnPage3Prev() : $self->OnPage2Prev();
 }
 
-sub OnSubmit
+sub OnSubmit($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   if (! $self->Validate())
   {
@@ -930,27 +927,27 @@ sub OnSubmit
   exit;
 }
 
-sub OnShowAllVMs
+sub OnShowAllVMs($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   $self->{ShowAll} = 1;
 
   return !1;
 }
 
-sub OnShowBaseVMs
+sub OnShowBaseVMs($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   $self->{ShowAll} = !1;
 
   return !1;
 }
 
-sub OnOK
+sub OnOK($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   if (defined($self->GetParam("JobKey")))
   {
@@ -962,10 +959,9 @@ sub OnOK
   }
 }
 
-sub OnAction
+sub OnAction($$)
 {
-  my $self = shift;
-  my $Action = $_[0];
+  my ($self, $Action) = @_;
 
   if ($Action eq "Next >")
   {
@@ -992,7 +988,7 @@ sub OnAction
     return $self->OnOK();
   }
 
-  return $self->SUPER::OnAction(@_);
+  return $self->SUPER::OnAction($Action);
 }
 
 package main;
diff --git a/testbot/web/admin/BranchDetails.pl b/testbot/web/admin/BranchDetails.pl
index e767408..2d604ec 100644
--- a/testbot/web/admin/BranchDetails.pl
+++ b/testbot/web/admin/BranchDetails.pl
@@ -26,11 +26,11 @@ use WineTestBot::Branches;
 
 @BranchDetailsPage::ISA = qw(ObjectModel::CGI::ItemPage);
 
-sub _initialize
+sub _initialize($$$)
 {
-  my $self = shift;
+  my ($self, $Request, $RequiredRole) = @_;
 
-  $self->SUPER::_initialize(@_, CreateBranches());
+  $self->SUPER::_initialize($Request, $RequiredRole, CreateBranches());
 }
 
 package main;
diff --git a/testbot/web/admin/BranchesList.pl b/testbot/web/admin/BranchesList.pl
index 7306667..42357e7 100644
--- a/testbot/web/admin/BranchesList.pl
+++ b/testbot/web/admin/BranchesList.pl
@@ -27,17 +27,16 @@ use WineTestBot::Branches;
 
 @BranchesListPage::ISA = qw(ObjectModel::CGI::CollectionPage);
 
-sub _initialize
+sub _initialize($$$)
 {
-  my $self = shift;
+  my ($self, $Request, $RequiredRole) = @_;
 
-  $self->SUPER::_initialize(@_, CreateBranches());
+  $self->SUPER::_initialize($Request, $RequiredRole, CreateBranches());
 }
 
-sub SortKeys
+sub SortKeys($$$)
 {
-  my $self = shift;
-  my ($CollectionBlock, $Keys) = @_;
+  my ($self, $CollectionBlock, $Keys) = @_;
 
   my @SortedKeys = sort { $a cmp $b } @$Keys;
   return \@SortedKeys;
diff --git a/testbot/web/admin/UserDetails.pl b/testbot/web/admin/UserDetails.pl
index faf8bbd..8ce0894 100644
--- a/testbot/web/admin/UserDetails.pl
+++ b/testbot/web/admin/UserDetails.pl
@@ -28,17 +28,16 @@ use WineTestBot::Users;
 
 @UserDetailsPage::ISA = qw(ObjectModel::CGI::ItemPage);
 
-sub _initialize
+sub _initialize($$$)
 {
-  my $self = shift;
+  my ($self, $Request, $RequiredRole) = @_;
 
-  $self->SUPER::_initialize(@_, CreateUsers());
+  $self->SUPER::_initialize($Request, $RequiredRole, CreateUsers());
 }
 
-sub DisplayProperty
+sub DisplayProperty($$)
 {
-  my $self = shift;
-  my $PropertyDescriptor = $_[0];
+  my ($self, $PropertyDescriptor) = @_;
 
   my $PropertyName = $PropertyDescriptor->GetName();
   if (defined($LDAPServer) &&
@@ -47,12 +46,12 @@ sub DisplayProperty
     return "";
   }
 
-  return $self->SUPER::DisplayProperty(@_);
+  return $self->SUPER::DisplayProperty($PropertyDescriptor);
 }
 
-sub GetActions
+sub GetActions($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   my @Actions;
   if (!defined $LDAPServer and $self->{Item}->WaitingForApproval())
@@ -68,7 +67,7 @@ sub GetActions
 
 sub OnApprove($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   return !1 if (!$self->Save());
   $self->{ErrMessage} = $self->{Item}->Approve();
@@ -79,7 +78,7 @@ sub OnApprove($)
 
 sub OnReject($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   $self->{Item}->Status('deleted');
   ($self->{ErrField}, $self->{ErrMessage}) = $self->{Item}->Save();
@@ -92,7 +91,7 @@ sub OnReject($)
 
 sub OnOK($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   return !1 if (!$self->Save());
   if ($self->{Item}->Status ne 'active')
@@ -104,10 +103,9 @@ sub OnOK($)
   exit;
 }
 
-sub OnAction
+sub OnAction($$)
 {
-  my $self = shift;
-  my $Action = $_[0];
+  my ($self, $Action) = @_;
 
   if ($Action eq "Approve")
   {
@@ -122,7 +120,7 @@ sub OnAction
     return $self->OnOK();
   }
 
-  return $self->SUPER::OnAction(@_);
+  return $self->SUPER::OnAction($Action);
 }
 
 package main;
diff --git a/testbot/web/admin/UsersList.pl b/testbot/web/admin/UsersList.pl
index 5148394..f509c41 100644
--- a/testbot/web/admin/UsersList.pl
+++ b/testbot/web/admin/UsersList.pl
@@ -29,26 +29,24 @@ use WineTestBot::Users;
 
 @UsersListPage::ISA = qw(ObjectModel::CGI::CollectionPage);
 
-sub _initialize
+sub _initialize($$$)
 {
-  my $self = shift;
+  my ($self, $Request, $RequiredRole) = @_;
 
-  $self->SUPER::_initialize(@_, CreateUsers());
+  $self->SUPER::_initialize($Request, $RequiredRole, CreateUsers());
 }
 
-sub SortKeys
+sub SortKeys($$$)
 {
-  my $self = shift;
-  my ($CollectionBlock, $Keys) = @_;
+  my ($self, $CollectionBlock, $Keys) = @_;
 
   my @SortedKeys = sort { $a cmp $b } @$Keys;
   return \@SortedKeys;
 }
 
-sub DisplayProperty
+sub DisplayProperty($$$)
 {
-  my $self = shift;
-  my ($CollectionBlock, $PropertyDescriptor) = @_;
+  my ($self, $CollectionBlock, $PropertyDescriptor) = @_;
 
   my $PropertyName = $PropertyDescriptor->GetName();
 
@@ -56,10 +54,9 @@ sub DisplayProperty
          $PropertyName eq "Status" || $PropertyName eq "RealName";
 }
 
-sub GetActions
+sub GetActions($$)
 {
-  my $self = shift;
-  my $CollectionBlock = $_[0];
+  my ($self, $CollectionBlock) = @_;
 
   if (defined($LDAPServer))
   {
@@ -67,13 +64,12 @@ sub GetActions
     return [];
   }
 
-  return $self->SUPER::GetActions(@_);
+  return $self->SUPER::GetActions($CollectionBlock);
 }
 
-sub OnAction
+sub OnAction($$$)
 {
-  my $self = shift;
-  my ($CollectionBlock, $Action) = @_;
+  my ($self, $CollectionBlock, $Action) = @_;
 
   if ($Action eq "Delete")
   {
@@ -94,7 +90,7 @@ sub OnAction
     return 1;
   }
 
-  return $self->SUPER::OnAction(@_);
+  return $self->SUPER::OnAction($CollectionBlock, $Action);
 }
 
 
diff --git a/testbot/web/admin/VMDetails.pl b/testbot/web/admin/VMDetails.pl
index bd0c777..5b31fcf 100644
--- a/testbot/web/admin/VMDetails.pl
+++ b/testbot/web/admin/VMDetails.pl
@@ -26,20 +26,19 @@ use WineTestBot::VMs;
 
 @VMDetailsPage::ISA = qw(ObjectModel::CGI::ItemPage);
 
-sub _initialize
+sub _initialize($$$)
 {
-  my $self = shift;
+  my ($self, $Request, $RequiredRole) = @_;
 
-  $self->SUPER::_initialize(@_, CreateVMs());
+  $self->SUPER::_initialize($Request, $RequiredRole, CreateVMs());
 }
 
-sub DisplayProperty
+sub DisplayProperty($$)
 {
-  my $self = shift;
-  my $PropertyDescriptor = $_[0];
+  my ($self, $PropertyDescriptor) = @_;
 
   return "" if ($PropertyDescriptor->GetName() eq "ChildPid");
-  return $self->SUPER::DisplayProperty(@_);
+  return $self->SUPER::DisplayProperty($PropertyDescriptor);
 }
 
 package main;
diff --git a/testbot/web/admin/VMsList.pl b/testbot/web/admin/VMsList.pl
index 0e6d133..53d1400 100644
--- a/testbot/web/admin/VMsList.pl
+++ b/testbot/web/admin/VMsList.pl
@@ -26,17 +26,16 @@ use WineTestBot::VMs;
 
 @VMsListPage::ISA = qw(ObjectModel::CGI::CollectionPage);
 
-sub _initialize
+sub _initialize($$$)
 {
-  my $self = shift;
+  my ($self, $Request, $RequiredRole) = @_;
 
-  $self->SUPER::_initialize(@_, CreateVMs());
+  $self->SUPER::_initialize($Request, $RequiredRole, CreateVMs());
 }
 
-sub DisplayProperty
+sub DisplayProperty($$$)
 {
-  my $self = shift;
-  my ($CollectionBlock, $PropertyDescriptor) = @_;
+  my ($self, $CollectionBlock, $PropertyDescriptor) = @_;
 
   my $PropertyName = $PropertyDescriptor->GetName();
 
@@ -45,19 +44,16 @@ sub DisplayProperty
          $PropertyName eq "Description";
 }
 
-sub SortKeys
+sub SortKeys($$$)
 {
-  my $self = shift;
-  my $CollectionBlock = shift;
-  my $Keys = $_[0];
+  my ($self, $CollectionBlock, $Keys) = @_;
 
   return $self->{Collection}->SortKeysBySortOrder($Keys);
 }
 
-sub OnItemAction
+sub OnItemAction($$$$)
 {
-  my $self = shift;
-  my ($CollectionBlock, $Item, $Action) = @_;
+  my ($self, $CollectionBlock, $Item, $Action) = @_;
 
   if ($Action eq "Delete")
   {
@@ -66,7 +62,7 @@ sub OnItemAction
     return ! defined($ErrMessage);
   }
 
-  return $self->SUPER::OnItemAction(@_);
+  return $self->SUPER::OnItemAction($CollectionBlock, $Item, $Action);
 }
 
 package main;
diff --git a/testbot/web/index.pl b/testbot/web/index.pl
index 25f5e0e..f3f6c64 100644
--- a/testbot/web/index.pl
+++ b/testbot/web/index.pl
@@ -28,30 +28,30 @@ use vars qw(@ISA);
 
 @ISA = qw(ObjectModel::CGI::CollectionBlock);
 
-sub SortKeys
+sub SortKeys($$)
 {
-  my $self = shift;
-  my $Keys = $_[0];
+  my ($self, $Keys) = @_;
 
   my @SortedKeys = sort { $b <=> $a } @$Keys;
   return \@SortedKeys;
 }
 
-sub GetItemActions
+sub GetItemActions($)
 {
+  #my ($self) = @_;
   return [];
 }
 
-sub GetActions
+sub GetActions($)
 {
+  #my ($self) = @_;
   return [];
 }
 
-sub DisplayProperty
+sub DisplayProperty($$)
 {
-  my $self = shift;
+  my ($self, $PropertyDescriptor) = @_;
 
-  my $PropertyDescriptor = $_[0];
   my $PropertyName = $PropertyDescriptor->GetName();
   if ($PropertyName eq "Archived" ||
       $PropertyName eq "Patch" ||
@@ -61,13 +61,12 @@ sub DisplayProperty
     return !1;
   }
 
-  return $self->SUPER::DisplayProperty(@_);
+  return $self->SUPER::DisplayProperty($PropertyDescriptor);
 }
 
-sub GetDisplayValue
+sub GetDisplayValue($$$)
 {
-  my $self = shift;
-  my ($Item, $PropertyDescriptor) = @_;
+  my ($self, $Item, $PropertyDescriptor) = @_;
 
   if ($PropertyDescriptor->GetName() eq "User" &&
       defined($Item->Patch) &&
@@ -77,13 +76,12 @@ sub GetDisplayValue
     return $Item->Patch->FromName;
   }
 
-  return $self->SUPER::GetDisplayValue(@_);
+  return $self->SUPER::GetDisplayValue($Item, $PropertyDescriptor);
 }
 
-sub GenerateDataCell
+sub GenerateDataCell($$$$)
 {
-  my $self = shift;
-  my ($Item, $PropertyDescriptor, $DetailsPage) = @_;
+  my ($self, $Item, $PropertyDescriptor, $DetailsPage) = @_;
 
   my $PropertyName = $PropertyDescriptor->GetName();
   if ($PropertyName eq "Status")
@@ -136,7 +134,7 @@ sub GenerateDataCell
   }
   else
   {
-    $self->SUPER::GenerateDataCell(@_);
+    $self->SUPER::GenerateDataCell($Item, $PropertyDescriptor, $DetailsPage);
   }
 }
 
@@ -148,28 +146,28 @@ use vars qw(@ISA);
 
 @ISA = qw(ObjectModel::CGI::CollectionBlock);
 
-sub SortKeys
+sub SortKeys($$)
 {
-  my $self = shift;
-  my $Keys = $_[0];
+  my ($self, $Keys) = @_;
 
   return $self->{Collection}->SortKeysBySortOrder($Keys);
 }
 
-sub GetItemActions
+sub GetItemActions($)
 {
+  #my ($self) = @_;
   return [];
 }
 
-sub GetActions
+sub GetActions($)
 {
+  #my ($self) = @_;
   return [];
 }
 
-sub DisplayProperty
+sub DisplayProperty($$)
 {
-  my $self = shift;
-  my $PropertyDescriptor = $_[0];
+  my ($self, $PropertyDescriptor) = @_;
 
   my $PropertyName = $PropertyDescriptor->GetName();
   return $PropertyName eq "Name" || $PropertyName eq "Type" ||
@@ -177,8 +175,9 @@ sub DisplayProperty
          $PropertyName eq "Description";
 }
 
-sub GetDetailsPage
+sub GetDetailsPage($)
 {
+  #my ($self) = @_;
   return undef;
 }
 
@@ -192,34 +191,33 @@ use WineTestBot::VMs;
 
 @StatusPage::ISA = qw(ObjectModel::CGI::Page);
 
-sub _initialize
+sub _initialize($$$)
 {
   my ($self, $Request, $RequiredRole) = @_;
 
   $self->SUPER::_initialize($Request, $RequiredRole);
 }
 
-sub OutputDot
+sub OutputDot($$)
 {
-  my $self = shift;
-  my $DotColor = $_[0];
+  my ($self, $DotColor) = @_;
 
   print "<img src='/images/${DotColor}dot.jpg' alt='${DotColor} dot' " .
         "width='20' height='20' />";
 }
 
-sub GeneratePage
+sub GeneratePage($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   $self->{Request}->headers_out->add("Refresh", "60");
 
-  $self->SUPER::GeneratePage(@_);
+  $self->SUPER::GeneratePage();
 }
 
-sub GenerateBody
+sub GenerateBody($)
 {
-  my $self = shift;
+  my ($self) = @_;
 
   print "<h1>${ProjectName} Test Bot status</h1>\n";
   print "<div class='Content'>\n";
-- 
2.0.0.rc2



More information about the wine-patches mailing list