~ubuntu-branches/ubuntu/precise/kompozer/precise

« back to all changes in this revision

Viewing changes to mozilla/modules/plugin/base/public/nsPluginNativeWindow.h

  • Committer: Bazaar Package Importer
  • Author(s): Anthony Yarusso
  • Date: 2007-08-27 01:11:03 UTC
  • Revision ID: james.westby@ubuntu.com-20070827011103-2jgf4s6532gqu2ka
Tags: upstream-0.7.10
ImportĀ upstreamĀ versionĀ 0.7.10

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 
2
/* ***** BEGIN LICENSE BLOCK *****
 
3
 * Version: NPL 1.1/GPL 2.0/LGPL 2.1
 
4
 *
 
5
 * The contents of this file are subject to the Netscape Public License
 
6
 * Version 1.1 (the "License"); you may not use this file except in
 
7
 * compliance with the License. You may obtain a copy of the License at
 
8
 * http://www.mozilla.org/NPL/
 
9
 *
 
10
 * Software distributed under the License is distributed on an "AS IS" basis,
 
11
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 
12
 * for the specific language governing rights and limitations under the
 
13
 * License.
 
14
 *
 
15
 * The Original Code is mozilla.org code.
 
16
 *
 
17
 * The Initial Developer of the Original Code is 
 
18
 * Netscape Communications Corporation.
 
19
 * Portions created by the Initial Developer are Copyright (C) 1998
 
20
 * the Initial Developer. All Rights Reserved.
 
21
 *
 
22
 * Contributor(s):
 
23
 *   Andrei Volkov <av@netscape.com>
 
24
 *   Brian Stell <bstell@netscape.com>
 
25
 *   Peter Lubczynski <peterl@netscape.com>
 
26
 *
 
27
 * Alternatively, the contents of this file may be used under the terms of
 
28
 * either the GNU General Public License Version 2 or later (the "GPL"), or 
 
29
 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
 
30
 * in which case the provisions of the GPL or the LGPL are applicable instead
 
31
 * of those above. If you wish to allow use of your version of this file only
 
32
 * under the terms of either the GPL or the LGPL, and not to allow others to
 
33
 * use your version of this file under the terms of the NPL, indicate your
 
34
 * decision by deleting the provisions above and replace them with the notice
 
35
 * and other provisions required by the GPL or the LGPL. If you do not delete
 
36
 * the provisions above, a recipient may use your version of this file under
 
37
 * the terms of any one of the NPL, the GPL or the LGPL.
 
38
 *
 
39
 * ***** END LICENSE BLOCK ***** */
 
40
 
 
41
#ifndef _nsPluginNativeWindow_h_
 
42
#define _nsPluginNativeWindow_h_
 
43
 
 
44
#include "nscore.h"
 
45
#include "nsCOMPtr.h"
 
46
#include "nsIPluginInstance.h"
 
47
#include "nsplugindefs.h"
 
48
#include "nsIWidget.h"
 
49
 
 
50
/**
 
51
 * base class for native plugin window implementations
 
52
 */
 
53
class nsPluginNativeWindow : public nsPluginWindow
 
54
{
 
55
public: 
 
56
  nsPluginNativeWindow() : nsPluginWindow() {}
 
57
  virtual ~nsPluginNativeWindow() {}
 
58
 
 
59
  /**
 
60
   *   !!! CAUTION !!!
 
61
   *
 
62
   * The base class |nsPluginWindow| is defined as a struct in nsplugindefs.h,
 
63
   * thus it does not have a destructor of its own.
 
64
   * One should never attempt to delete |nsPluginNativeWindow| object instance
 
65
   * (or derivatives) using a pointer of |nsPluginWindow *| type. Should such
 
66
   * necessity occur it must be properly casted first.
 
67
   */
 
68
 
 
69
public:
 
70
  nsresult GetPluginInstance(nsCOMPtr<nsIPluginInstance> &aPluginInstance) { 
 
71
    aPluginInstance = mPluginInstance;
 
72
    return NS_OK;
 
73
  }
 
74
  nsresult SetPluginInstance(nsIPluginInstance *aPluginInstance) { 
 
75
    if (mPluginInstance != aPluginInstance)
 
76
      mPluginInstance = aPluginInstance;
 
77
    return NS_OK;
 
78
  }
 
79
 
 
80
  nsresult GetPluginWidget(nsIWidget **aWidget) {
 
81
    NS_IF_ADDREF(*aWidget = mWidget);
 
82
    return NS_OK;
 
83
  }
 
84
  nsresult SetPluginWidget(nsIWidget *aWidget) { 
 
85
    mWidget = aWidget;
 
86
    return NS_OK;
 
87
  }
 
88
 
 
89
public:
 
90
  virtual nsresult CallSetWindow(nsCOMPtr<nsIPluginInstance> &aPluginInstance) {
 
91
    // null aPluginInstance means that we want to call SetWindow(null)
 
92
    if (aPluginInstance)
 
93
      aPluginInstance->SetWindow(this);
 
94
    else if (mPluginInstance)
 
95
      mPluginInstance->SetWindow(nsnull);
 
96
 
 
97
    SetPluginInstance(aPluginInstance);
 
98
    return NS_OK;
 
99
  }
 
100
 
 
101
protected:
 
102
  nsCOMPtr<nsIPluginInstance> mPluginInstance;
 
103
  nsCOMPtr<nsIWidget>         mWidget;
 
104
};
 
105
 
 
106
nsresult PLUG_NewPluginNativeWindow(nsPluginNativeWindow ** aPluginNativeWindow);
 
107
nsresult PLUG_DeletePluginNativeWindow(nsPluginNativeWindow * aPluginNativeWindow);
 
108
 
 
109
#endif //_nsPluginNativeWindow_h_