View Javadoc
1   /*
2    * Copyright (c) 2002-2025 Gargoyle Software Inc.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    * https://www.apache.org/licenses/LICENSE-2.0
8    *
9    * Unless required by applicable law or agreed to in writing, software
10   * distributed under the License is distributed on an "AS IS" BASIS,
11   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12   * See the License for the specific language governing permissions and
13   * limitations under the License.
14   */
15  package org.htmlunit;
16  
17  import java.net.URL;
18  
19  /**
20   * A basic {@link Page} implementation.
21   *
22   * @author Ahmed Ashour
23   */
24  public class AbstractPage implements Page {
25  
26      private final WebResponse webResponse_;
27      private final WebWindow enclosingWindow_;
28  
29      /**
30       * Creates an instance.
31       *
32       * @param webResponse the response from the server
33       * @param enclosingWindow the window that holds the page
34       */
35      public AbstractPage(final WebResponse webResponse, final WebWindow enclosingWindow) {
36          webResponse_ = webResponse;
37          enclosingWindow_ = enclosingWindow;
38      }
39  
40      /**
41       * Initializes this page.
42       */
43      @Override
44      public void initialize() {
45          // nothing to do
46      }
47  
48      /**
49       * Cleans up this page.
50       */
51      @Override
52      public void cleanUp() {
53          if (getEnclosingWindow().getWebClient().getCache().getCachedResponse(webResponse_.getWebRequest()) == null) {
54              webResponse_.cleanUp();
55          }
56      }
57  
58      /**
59       * Returns the web response that was originally used to create this page.
60       *
61       * @return the web response that was originally used to create this page
62       */
63      @Override
64      public WebResponse getWebResponse() {
65          return webResponse_;
66      }
67  
68      /**
69       * Returns the window that this page is sitting inside.
70       *
71       * @return the enclosing frame or null if this page isn't inside a frame
72       */
73      @Override
74      public WebWindow getEnclosingWindow() {
75          return enclosingWindow_;
76      }
77  
78      /**
79       * Returns the URL of this page.
80       * @return the URL of this page
81       */
82      @Override
83      public URL getUrl() {
84          return getWebResponse().getWebRequest().getUrl();
85      }
86  
87      @Override
88      public boolean isHtmlPage() {
89          return false;
90      }
91  }